<?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>190729</bug_id>
          
          <creation_ts>2018-10-18 11:53:02 -0700</creation_ts>
          <short_desc>Switch from PLATFORM(IOS) to PLATFORM(IOS_FAMILY)</short_desc>
          <delta_ts>2018-10-18 14:40:32 -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>WebKit Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470611</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-10-18 11:53:02 -0700</bug_when>
    <thetext>Just a mass find and replace.

PLATFORM(IOS) -&gt; PLATFORM(IOS_FAMILY)
PLATFORM(IOS_SIMULATOR) -&gt; PLATFORM(IOS_FAMILY_SIMULATOR)
OS(IOS) -&gt; OS(IOS_FAMILY)
OS(IOS_SIMULATOR) -&gt; OS(IOS_FAMILY_SIMULATOR) # none found
WTF_PLATFORM_IOS -&gt; WTF_PLATFORM_IOS_FAMILY # excluding definition
WTF_OS_IOS -&gt; WTF_OS_IOS_FAMILY # none found, except for the definition

Excluding ChangeLogs of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470617</commentid>
    <comment_count>1</comment_count>
      <attachid>352714</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-10-18 12:07:32 -0700</bug_when>
    <thetext>Created attachment 352714
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470618</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-18 12:13:30 -0700</bug_when>
    <thetext>Attachment 352714 did not pass style-queue:


ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebFrameIOS.mm:953:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/Shared/WebEventConversion.cpp:371:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/rendering/RenderThemeIOS.mm:2041:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebSelectionRect.m:204:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm:466:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectControl.mm:124:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:455:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebMIMETypeRegistry.mm:58:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 8 in 1224 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470634</commentid>
    <comment_count>3</comment_count>
      <attachid>352721</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-10-18 13:03:25 -0700</bug_when>
    <thetext>Created attachment 352721
proposed patch

With fewer mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470635</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-18 13:09:03 -0700</bug_when>
    <thetext>Attachment 352721 did not pass style-queue:


ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebFrameIOS.mm:953:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/Shared/WebEventConversion.cpp:371:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/rendering/RenderThemeIOS.mm:2041:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebSelectionRect.m:204:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm:466:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectControl.mm:124:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:455:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKitLegacy/ios/WebCoreSupport/WebMIMETypeRegistry.mm:58:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 8 in 1224 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470648</commentid>
    <comment_count>5</comment_count>
      <attachid>352721</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-18 13:47:15 -0700</bug_when>
    <thetext>Comment on attachment 352721
proposed patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470687</commentid>
    <comment_count>6</comment_count>
      <attachid>352721</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-18 14:39:22 -0700</bug_when>
    <thetext>Comment on attachment 352721
proposed patch

Clearing flags on attachment: 352721

Committed r237266: &lt;https://trac.webkit.org/changeset/237266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470688</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-18 14:39:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470689</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-18 14:40:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/45384902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352714</attachid>
            <date>2018-10-18 12:07:32 -0700</date>
            <delta_ts>2018-10-18 13:03:25 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>PlatformIOSFamily2.txt</filename>
            <type>text/plain</type>
            <size>1606896</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE4LTEwLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAg
ICAgIFN3aXRjaCBmcm9tIFBMQVRGT1JNKElPUykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTQmFz
ZS5jcHA6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmNhY2hl
Rmx1c2gpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6Y2FjaGVGbHVzaCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fz
c2VtYmxlckNvbW1vbi5oOgorICAgICAgICAoSlNDOjppc0lPUyk6CisgICAgICAgICogaGVhcC9G
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpvdmVyQ3JpdGljYWxNZW1vcnlUaHJlc2hvbGQpOgorICAgICAgICAoSlND
OjpIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRj
aEFzeW5jT25UYXJnZXQpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6YWxsb3dKSVQpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmg6CisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJh
dG9ycy5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IHJ1bnRpbWUvTWF0aENvbW1vbi5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0
ZURlcGVuZGVudE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE4
LTEwLTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAg
ICBkZWxldGUgZXhwcmVzc2lvbiBzaG91bGQgbm90IHRocm93IHdpdGhvdXQgYSByZWZlcmVuY2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBACiAj
aW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIENQVShB
Uk1fVEhVTUIyKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk1fVEhVTUIyKQog
I2luY2x1ZGUgPGZlbnYuaD4KICNpbmNsdWRlIDxhcm0vYXJjaC5oPgogI2VuZGlmCkBAIC0yMjIx
LDcgKzIyMjEsNyBAQCBzdGF0aWMgdm9pZCBzdGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZCgpCiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSNpZiBQTEFURk9STShJT1MpICYm
IENQVShBUk1fVEhVTUIyKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk1fVEhV
TUIyKQogICAgIC8vIEVuYWJsZWQgSUVFRTc1NCBkZW5vcm1hbCBzdXBwb3J0LgogICAgIGZlbnZf
dCBlbnY7CiAgICAgZmVnZXRlbnYoICZlbnYgKTsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAvLyBoYXZlIGEgY2hhbmNlIHRvIHBhcnNl
IG9wdGlvbnMuCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBPcHRpb25zOjpjcmFzaElmQ2Fu
dEFsbG9jYXRlSklUTWVtb3J5KCkgPSB0cnVlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBA
IHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjazo6c19z
aG91bGRDcmVhdGVHQ1RpbWVyID0gZmFsc2U7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpICYmIFRB
UkdFVF9PU19JT1MKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBUQVJHRVRfT1NfSU9TCiAv
LyBGSVhNRTogRXhwb3NlIHN5bWJvbHMgdG8gdGVsbCBkeWxkIHdoZXJlIHRvIGZpbmQgSmF2YVNj
cmlwdENvcmUgb24gb2xkZXIgdmVyc2lvbnMgb2YKIC8vIGlPUyAoPCA3LjApLiBXZSBzaG91bGQg
cmVtb3ZlIHRoZXNlIHN5bWJvbHMgb25jZSB3ZSBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IHN1
Y2gKIC8vIHZlcnNpb25zIG9mIGlPUy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY5Njg3Mj4gZm9y
IG1vcmUgZGV0YWlscy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVy
TWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVy
TWFwLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2lmIFBMQVRG
T1JNKEFQUExFVFYpCiAjZWxzZQogc3RhdGljIGNvbnN0IGludDMyX3QgZmlyc3RKYXZhU2NyaXB0
Q29yZVZlcnNpb25XaXRoSW5pdENvbnN0cnVjdG9yU3VwcG9ydCA9IDB4MjFBMDQwMDsgLy8gNTM4
LjQuMAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGlj
IGNvbnN0IHVpbnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhJbml0Q29uc3RydWN0b3JTdXBwb3J0
ID0gRFlMRF9JT1NfVkVSU0lPTl8xMF8wOwogI2VsaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIGNv
bnN0IHVpbnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhJbml0Q29uc3RydWN0b3JTdXBwb3J0ID0g
MHhBMEEwMDsgLy8gT1NYIDEwLjEwLjAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjg4MCw3ICsyODgwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2FjaGVG
bHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0jaWYgT1MoSU9TKQorI2lmIE9T
KElPU19GQU1JTFkpCiAgICAgICAgIHN5c19jYWNoZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJl
cGFyZUZvckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7CiAjZWxpZiBPUyhGVUNIU0lBKQogICAgICAg
ICB6eF9jYWNoZV9mbHVzaChjb2RlLCBzaXplLCBaWF9DQUNIRV9GTFVTSF9JTlNOKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ2Myw3ICsyNDYzLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkK
ICAgICB7Ci0jaWYgT1MoSU9TKQorI2lmIE9TKElPU19GQU1JTFkpCiAgICAgICAgIHN5c19jYWNo
ZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJlcGFyZUZvckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7
CiAjZWxpZiBPUyhMSU5VWCkKICAgICAgICAgc2l6ZV90IHBhZ2UgPSBwYWdlU2l6ZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1v
bi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fzc2VtYmxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBib29sIGlzSU9TKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNvbnN0
IGNvbnN0ZXhwciBTZWNvbmRzIHBhZ2luZ1RpbWVPdXQgeyAxMDBfbXMgfTsgLy8gVGltZSBpbiBz
ZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBi
bG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KICNlbmRpZgogCkBAIC00NCw3
ICs0NCw3IEBAIHZvaWQgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW8KICAgICBI
ZWFwJiBoZWFwID0gdm0uaGVhcDsKICAgICBtX2RpZEdDUmVjZW50bHkgPSBmYWxzZTsKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTW9ub3Rvbmlj
VGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBpZiAoaGVhcC5pc1Bh
Z2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7CiAgICAgICAgIGNhbmNlbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw3ICs4NSw3IEBACiAjaW5jbHVkZSA8d3RmL1NpbXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSA8Ym1hbGxvYy9ibWFsbG9jLmg+CiAjZW5kaWYKIApAQCAtMTI2LDcgKzEy
Niw3IEBAIHNpemVfdCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShzaXplX3QgaGVhcFMKICAgICBpZiAo
Vk06OmlzSW5NaW5pTW9kZSgpKQogICAgICAgICByZXR1cm4gT3B0aW9uczo6bWluaVZNSGVhcEdy
b3d0aEZhY3RvcigpICogaGVhcFNpemU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBzaXplX3QgbWVtb3J5Rm9vdHByaW50ID0gYm1hbGxvYzo6YXBp
OjptZW1vcnlGb290cHJpbnQoKTsKICAgICBpZiAobWVtb3J5Rm9vdHByaW50IDwgcmFtU2l6ZSAq
IE9wdGlvbnM6OnNtYWxsSGVhcFJBTUZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBPcHRpb25z
OjpzbWFsbEhlYXBHcm93dGhGYWN0b3IoKSAqIGhlYXBTaXplOwpAQCAtNTE1LDcgKzUxNSw3IEBA
IHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2wKIAogYm9vbCBIZWFwOjpv
dmVyQ3JpdGljYWxNZW1vcnlUaHJlc2hvbGQoTWVtb3J5VGhyZXNob2xkQ2FsbFR5cGUgbWVtb3J5
VGhyZXNob2xkQ2FsbFR5cGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKG1lbW9yeVRocmVzaG9sZENhbGxUeXBlID09IE1lbW9yeVRocmVz
aG9sZENhbGxUeXBlOjpEaXJlY3QgfHwgKyttX3ByZWNlbnRBdmFpbGFibGVNZW1vcnlDYWNoZWRD
YWxsQ291bnQgPj0gMTAwKSB7CiAgICAgICAgIG1fb3ZlckNyaXRpY2FsTWVtb3J5VGhyZXNob2xk
ID0gYm1hbGxvYzo6YXBpOjpwZXJjZW50QXZhaWxhYmxlTWVtb3J5SW5Vc2UoKSA+IE9wdGlvbnM6
OmNyaXRpY2FsR0NNZW1vcnlUaHJlc2hvbGQoKTsKICAgICAgICAgbV9wcmVjZW50QXZhaWxhYmxl
TWVtb3J5Q2FjaGVkQ2FsbENvdW50ID0gMDsKQEAgLTIyNzYsNyArMjI3Niw3IEBAIHZvaWQgSGVh
cDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBHZXQgY3JpdGljYWwg
bWVtb3J5IHRocmVzaG9sZCBmb3IgbmV4dCBjeWNsZS4KICAgICBvdmVyQ3JpdGljYWxNZW1vcnlU
aHJlc2hvbGQoTWVtb3J5VGhyZXNob2xkQ2FsbFR5cGU6OkRpcmVjdCk7CiAjZW5kaWYKQEAgLTI1
NjgsNyArMjU2OCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0QK
ICAgICB9IGVsc2UgewogICAgICAgICBzaXplX3QgYnl0ZXNBbGxvd2VkVGhpc0N5Y2xlID0gbV9t
YXhFZGVuU2l6ZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBpZiAob3ZlckNyaXRpY2FsTWVtb3J5VGhyZXNob2xkKCkpCiAgICAgICAgICAg
ICBieXRlc0FsbG93ZWRUaGlzQ3ljbGUgPSBzdGQ6Om1pbihtX21heEVkZW5TaXplV2hlbkNyaXRp
Y2FsLCBieXRlc0FsbG93ZWRUaGlzQ3ljbGUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwNSw3ICs3MDUsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fdGhyZWFkQ29uZGl0aW9uOyAvLyBU
aGUgbXV0YXRvciBtdXN0IG5vdCB3YWl0IG9uIHRoaXMuIEl0IHdvdWxkIGNhdXNlIGEgZGVhZGxv
Y2suCiAgICAgUmVmUHRyPEF1dG9tYXRpY1RocmVhZD4gbV90aHJlYWQ7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCBtX3ByZWNlbnRB
dmFpbGFibGVNZW1vcnlDYWNoZWRDYWxsQ291bnQ7CiAgICAgYm9vbCBtX292ZXJDcml0aWNhbE1l
bW9yeVRocmVzaG9sZDsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0
IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPHd0Zi9pb3Mv
V2ViQ29yZVRocmVhZC5oPgogI2VuZGlmCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6ZGlzcGF0Y2hBCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2Vi
Q29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsK
ICAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNl
bmRpZgogCkBAIC01MCw3ICs1MCw3IEBACiAjZW5kaWYKIAogI2lmIEhBVkUoUkVNQVBfSklUKQot
I2lmIENQVShBUk02NCkgJiYgUExBVEZPUk0oSU9TKQorI2lmIENQVShBUk02NCkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgVVNFX0VYRUNVVEVfT05MWV9KSVRfV1JJVEVfRlVOQ1RJ
T04gMQogI2VuZGlmCiAjZW5kaWYKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdWludHB0cl90
IHN0YXJ0T2ZGaXhlZFdyaXRhYmxlTWVtCiAKIHN0YXRpYyBib29sIGFsbG93SklUKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpICYmIChDUFUoQVJNNjQpIHx8IENQVShBUk0pKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIChDUFUoQVJNNjQpIHx8IENQVShBUk0pKQogICAgIHJldHVybiBwcm9j
ZXNzSGFzRW50aXRsZW1lbnQoImR5bmFtaWMtY29kZXNpZ25pbmciKTsKICNlbHNlCiAgICAgcmV0
dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmg+CiAjaW5jbHVkZSA8d3Rm
L01ldGFBbGxvY2F0b3IuaD4KIAotI2lmIE9TKElPUykKKyNpZiBPUyhJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPGxpYmtlcm4vT1NDYWNoZUNvbnRyb2wuaD4KICNlbmRpZgogCi0jaWYgT1MoSU9TKQor
I2lmIE9TKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDExICs0NiwxMSBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3Rh
Y2tSZWdpc3RlcnMoCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJl
Z2lzdGVycygpCiB7CiAjaWYgQ1BVKEFSTTY0KQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBSZWdpc3RlclNldChBUk02NFJlZ2lzdGVyczo6
eDE4LCBBUk02NFJlZ2lzdGVyczo6bHIpOwogI2Vsc2UKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RS
QURJVElPTkFMKQogICAgIHJldHVybiBSZWdpc3RlclNldChBUk1SZWdpc3RlcnM6OmxyLCBBUk1S
ZWdpc3RlcnM6OnBjKTsKICNlbHNlCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpy
NSk7CiAgICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI2KTsKICAgICByZXN1bHQuc2V0KEFS
TVJlZ2lzdGVyczo6cjgpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI5KTsKICNlbmRpZgogICAgIHJl
c3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MzQsNyArODM0LDcgQEAgdHlwZWRlZiBNYXRoVGh1bmtDYWxsaW5nQ29udmVudGlvbigqTWF0
aAogICAgIH0gXAogICAgIHN0YXRpYyBNYXRoVGh1bmsgVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVu
Y3Rpb24pID0gJmZ1bmN0aW9uIyNUaHVuazsKIAotI2VsaWYgQ1BVKEFSTV9USFVNQjIpICYmIENP
TVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBQTEFURk9STShJT1MpCisjZWxpZiBDUFUoQVJNX1RI
VU1CMikgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNkZWZpbmUgZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVuY3Rpb24pIFwKICAgICBh
c20oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTV9USFVNQjIpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgQ1BVKEFSTV9USFVNQjIpCiAKIC8vIFRoZSBmb2xsb3dpbmcg
Y29kZSBpcyB0YWtlbiBmcm9tIG5ldGxpYi5vcmc6CiAvLyAgIGh0dHA6Ly93d3cubmV0bGliLm9y
Zy9mZGxpYm0vZmRsaWJtLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRp
YyB2b2lkIHNjYWxlSklUUG9saWN5KCkKIAogc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgPCA0KQogI2VuZGlmCiAgICAgewpAQCAt
MzUzLDcgKzM1Myw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogICAgICAgICAg
ICAgT3B0aW9uczo6Z2NJbmNyZW1lbnRTY2FsZSgpID0gMDsKICAgICB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1MsIHdlIGNvbnRy
b2wgaGVhcCBncm93dGggdXNpbmcgcHJvY2VzcyBtZW1vcnkgZm9vdHByaW50LiBUaGVyZWZvcmUg
dGhlc2UgdmFsdWVzIGNhbiBiZSBhZ3Jlc3NpdmUuCiAgICAgT3B0aW9uczo6c21hbGxIZWFwUkFN
RnJhY3Rpb24oKSA9IDAuODsKICAgICBPcHRpb25zOjptZWRpdW1IZWFwUkFNRnJhY3Rpb24oKSA9
IDAuOTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpID0gZmFsc2U7CiAg
ICAgfQogICAgIAotI2lmIFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTTY0KSAmJiAhQ1BVKEFSTTY0
RSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBDUFUoQVJNNjQpICYmICFDUFUoQVJNNjRF
KQogICAgIC8vIE92ZXJyaWRlIGdsb2JhbGx5IGZvciBub3cuIExvbmdlciB0ZXJtIHdlJ2xsIGp1
c3QgbWFrZSB0aGUgZGVmYXVsdAogICAgIC8vIGJlIHRvIGhhdmUgdGhpcyBvcHRpb24gZW5hYmxl
ZCwgYW5kIGhhdmUgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydAogICAgIC8vIGl0IGp1c3Qg
c2lsZW50bHkgdXNlIGEgc2luZ2xlIG1hcHBpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZUTF9DT01QSUxFUl9USFJF
QURTIDIKICNlbHNlCiAjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZUTF9DT01QSUxFUl9USFJF
QURTIDgKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE4LTEwLTE4ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBmcm9tIFBMQVRGT1JNKElP
UykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvRmVh
dHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3Rm
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OnRocmVzaG9sZEZvclBv
bGljeSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL2NvY29hL01l
bW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Omluc3RhbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL05TTWFw
VGFibGVTUEkuaDoKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9YUENTUEkuaDoKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5jcHA6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpj
b3B5RGVmYXVsdExvY2FsZSk6CisKIDIwMTgtMTAtMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcy
MDguCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxMiArMTE5LDEyIEBAIGV4
dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRlQmFycmllcih2b2lkKTsKICNkZWZpbmUgV1RGX0FUVFJJ
QlVURV9QUklOVEYoZm9ybWF0U3RyaW5nQXJndW1lbnQsIGV4dHJhQXJndW1lbnRzKQogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8qIEZvciBh
IHByb2plY3QgdGhhdCB1c2VzIFdURiBidXQgaGFzIG5vIGNvbmZpZy5oLCB3ZSBuZWVkIHRvIGV4
cGxpY2l0bHkgc2V0IHRoZSBleHBvcnQgZGVmaW5lcyBoZXJlLiAqLwogI2lmbmRlZiBXVEZfRVhQ
T1JUX1BSSVZBVEUKICNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLyogVGhl
c2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGRlY2xhcmVkLCBidXQgbm90IG5lY2Vzc2Fy
aWx5IGFsd2F5cyBkZWZpbmVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGRpc2Fi
bGVkLiAqLwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAKIC8qIEZJWE1FOiBNb3ZlIG91dCB0aGUgUExBVEZPUk0gc3BlY2lmaWMgcnVs
ZXMgaW50byBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcy4gKi8KIAogLyogLS0tLS0tLS0tIEFwcGxl
IElPUyAoYnV0IG5vdCBNQUMpIHBvcnQgLS0tLS0tLS0tICovCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfQUlSUExBWV9Q
SUNLRVIpCiAjaWYgIVBMQVRGT1JNKElPU01BQykKQEAgLTE2NiwxOCArMTY2LDE4IEBAIHRoZSBw
dWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNlbmRpZgogCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX1dLTEVHQUNZUERGVklFVykKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMjAwMDAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYm
ICFQTEFURk9STShJT1NNQUMpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTIwMDAwCiAjZGVmaW5lIEVOQUJMRV9XS0xFR0FDWVBERlZJRVcgMQogI2VuZGlmCiAjZW5kaWYK
IAogI2lmICFkZWZpbmVkKEVOQUJMRV9XS1BERlZJRVcpCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NN
QUMpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwCiAjZGVmaW5lIEVOQUJMRV9XS1BERlZJRVcgMQogI2VuZGlmCiAjZW5k
aWYKIAotI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBQTEFURk9STShJT1Nf
RkFNSUxZKSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgV0FUQ0hPUyBwb3J0IC0tLS0tLS0tLSAq
LwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDcgQEAKICNkZWZpbmUgU1lNQk9MX1NUUklORyhuYW1lKSAjbmFtZQogI2VuZGlmCiAK
LSNpZiBPUyhJT1MpCisjaWYgT1MoSU9TX0ZBTUlMWSkKICNkZWZpbmUgVEhVTUJfRlVOQ19QQVJB
TShuYW1lKSBTWU1CT0xfU1RSSU5HKG5hbWUpCiAjZWxzZQogI2RlZmluZSBUSFVNQl9GVU5DX1BB
UkFNKG5hbWUpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgc2l6ZV90IHRo
cmVzaG9sZEZvclBvbGljeShNZW1vcnlVCiB7CiAgICAgY29uc3Qgc2l6ZV90IGJhc2VUaHJlc2hv
bGRGb3JQb2xpY3kgPSBzdGQ6Om1pbigzICogR0IsIHJhbVNpemUoKSk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBkb3VibGUgY29uc2Vy
dmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7CiAgICAgY29uc3QgZG91YmxlIHN0cmljdFRo
cmVzaG9sZEZyYWN0aW9uID0gMC42NTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwOSw5ICs1MDksOSBAQAogLyogRklYTUU6IHRoZXNlIGFyZSBhbGwgbWl4ZXMgb2YgT1MsIG9w
ZXJhdGluZyBlbnZpcm9ubWVudCBhbmQgcG9saWN5IGNob2ljZXMuICovCiAvKiBQTEFURk9STShH
VEspICovCiAvKiBQTEFURk9STShNQUMpICovCi0vKiBQTEFURk9STShJT1MpICovCiAvKiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAqLwotLyogUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgKi8KKy8qIFBM
QVRGT1JNKElPU19GQU1JTFkpICovCisvKiBQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkg
Ki8KIC8qIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAqLwogLyogUExBVEZPUk0oV0lO
KSAqLwogI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCkBAIC01MjIsNyArNTIyLDcgQEAKIC8q
IEpTQ09ubHkgZG9lcyBub3QgcHJvdmlkZSBQTEFURk9STSgpIG1hY3JvICovCiAjZWxpZiBPUyhN
QUNfT1NfWCkKICNkZWZpbmUgV1RGX1BMQVRGT1JNX01BQyAxCi0jZWxpZiBPUyhJT1MpCisjZWxp
ZiBPUyhJT1NfRkFNSUxZKQogI2RlZmluZSBXVEZfUExBVEZPUk1fSU9TIDEKICNkZWZpbmUgV1RG
X1BMQVRGT1JNX0lPU19GQU1JTFkgMQogI2lmIFRBUkdFVF9PU19TSU1VTEFUT1IKQEAgLTEwNTgs
NyArMTA1OCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0Uo
UVVJQ0tfTE9PSykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAogI2RlZmluZSBVU0VfU1lTVEVNX1BS
RVZJRVcgMQogI2VuZGlmCiAKQEAgLTEzNDksMTEgKzEzNDksMTEgQEAKICNkZWZpbmUgVVNFX0xJ
QldFQlJUQyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFVTRShHQ1JZUFQpCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IFVTRShHQ1JZUFQpCiAjZGVmaW5lIEhBVkVfUlNBX1BTUyAx
CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKEFQUExFVFYpKQorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwICYmICFQTEFURk9STShBUFBMRVRWKSkKICNkZWZpbmUgSEFWRV9VUkxf
Rk9STUFUVElORyAxCiAjZW5kaWYKIApAQCAtMTM2MSwxMSArMTM2MSwxMSBAQAogI2RlZmluZSBI
QVZFX1NUQUNLX0JPVU5EU19GT1JfTkVXX1RIUkVBRCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAjZGVmaW5lIEhBVkVfQVZDT05URU5US0VZU0VT
U0lPTiAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
CiAjZGVmaW5lIEVOQUJMRV9BQ0NFU1NJQklMSVRZX0VWRU5UUyAxCiAjZGVmaW5lIEhBVkVfU0VD
X0tFWV9QUk9YWSAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29h
L01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IG5vdGlmeVRva2Vuc1szXTsKIC8vIFRo
ZXNlIHZhbHVlIHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVyaWZpZXMgdGhhdCBpdCB0
aHJvdHRsZXMgZnJlcXVlbnQKIC8vIGxvdyBtZW1vcnkgZXZlbnRzLCBncmVhdGx5IHJlZHVjaW5n
IENQVSB1c2FnZS4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNfbWluaW11bUhvbGRPZmZUaW1lIHsg
NV9zIH07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hvbGRPZmZNdWx0aXBsaWVyID0gMjA7CiAjZW5kaWYKIApA
QCAtNjgsNyArNjgsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIGF1dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9O
T1JNQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4g
fCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8g
UExBVEZPUk0oTUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hf
TUVNT1JZUFJFU1NVUkVfQ1JJVElDQUw7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKIAogICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2
ZW50X2hhbmRsZXIobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSwgXnsKICAgICAgICAgICAgIGF1
dG8gc3RhdHVzID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKG1lbW9yeVByZXNzdXJlRXZlbnRT
b3VyY2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICAgICAgICAgIC8vIFZNIHByZXNzdXJlIGV2
ZW50cy4KICAgICAgICAgICAgIGNhc2UgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfTk9STUFMOgpA
QCAtMTgzLDE0ICsxODMsMTQgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYo
U2VjbwogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5pbnN0YWxsKCk7
CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNl
bmRpZgogCiAgICAgcmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZWNvbmRzIGhv
bGRPZmZUaW1lID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSAqIHNfaG9sZE9m
Zk11bHRpcGxpZXI7CiAgICAgaG9sZE9mZihzdGQ6Om1heChob2xkT2ZmVGltZSwgc19taW5pbXVt
SG9sZE9mZlRpbWUpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL05T
TWFwVGFibGVTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvTlNN
YXBUYWJsZVNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvY29j
b2EvTlNNYXBUYWJsZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNNYXBUYWJsZS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAogCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNNYXBUYWJs
ZVByaXYuaD4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsNyBAQCB0eXBlZGVmIHZvaWQqIHhwY19jb25uZWN0aW9uX3Q7CiAKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF94cGNfdHlwZV9zKiB4cGNfdHlwZV90OwogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9lc2NhcGUpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19oYXNfYXR0cmlidXRlKG5vZXNjYXBlKQogI2RlZmluZSBYUENfTk9FU0NBUEUg
X19hdHRyaWJ1dGVfXygoX19ub2VzY2FwZV9fKSkKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgVUNoYXIqIGFVCiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KLSNlbGlmIFBMQVRGT1JNKElPUykgJiYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpICYmICFB
U0FOX0VOQUJMRUQKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFdURl9BUk1fQVJDSF9B
VF9MRUFTVCg3KSAmJiAhQVNBTl9FTkFCTEVECiBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29u
c3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgYm9v
bCBpc0VxdWFsID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdURiB7CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgVmFyaWFu
dDxUZXh0QnJlYWtJdGVyYXRvcklDVSwgVGV4dEJyZWFrSXRlcmF0b3JQbGF0Zm9ybT4gbWFwTW9k
ZVRvQmFja2luZ0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcjo6
TW9kZSBtb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9pY3UvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbmNsdWRlIDx3dGYvdGV4dC9jZi9UZXh0QnJlYWtJdGVyYXRvckNGLmg+CiAjZWxzZQog
I2luY2x1ZGUgPHd0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5oPgpAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHR5cGVkZWYg
VGV4dEJyZWFrSXRlcmF0b3JDRiBUZXh0QnJlYWtJdGVyYXRvclBsYXRmb3JtOwogI2Vsc2UKIHR5
cGVkZWYgTnVsbFRleHRCcmVha0l0ZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yUGxhdGZvcm07Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGlubGluZSBjaGFyKiBjb3B5
U2hvcnRBU0NJSVN0cmluZwogCiBzdGF0aWMgY2hhciogY29weURlZmF1bHRMb2NhbGUoKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJu
IGNvcHlTaG9ydEFTQ0lJU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkxvY2FsZUdl
dFZhbHVlKGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKS5nZXQoKSwga0NGTG9jYWxlQ29s
bGF0b3JJZGVudGlmaWVyKSkpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogRG9jdW1lbnRhdGlvbiBj
bGFpbXMgdGhlIGNvZGUgYWJvdmUgd291bGQgd29yayBvbiBpT1MgNC4wIGFuZCBsYXRlci4gQWZ0
ZXIgdGVzdCB0aGF0IHdvcmtzLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgYW5kIHVzZSB0aGF0IGlu
c3RlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTEzIEBACisyMDE4LTEwLTE4
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBm
cm9tIFBMQVRGT1JNKElPUykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpzdWJMb2NhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
dWJMb2NhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJBZG1pbmlzdHJhdGl2ZUFyZWEpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0U3ViQWRtaW5pc3RyYXRpdmVBcmVhKToKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNSZXF1ZXN0RnJvbUlCb29rcyk6CisgICAgICAgICogTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9j
YXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYURldmljZXNSZXF1ZXN0OjpmaWx0ZXJEZXZpY2VMaXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJD
b3JlOjpKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmFjY2Vzc0xv
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjplcnJvckxvZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6U3BlZWNoU3ludGhl
c2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6c3BlYWspOgorICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlUHJlZml4Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21SZW5kZXJlcik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0OjpwcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TWVudUxpc3Q6OmlzQ29sbGFwc2VkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25W
ZXJiIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlP
YmplY3RJT1MubW06CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21t
b25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21tb25WTVNsb3cpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNr
RGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzaG91bGRJbnRl
cnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmluaXRp
YWxpemVUaHJlYWRpbmcpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAg
ICAgICAqIGNyeXB0by9Db21tb25DcnlwdG9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgICogY3J5cHRvL21hYy9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hc3RlcktleUFjY291bnRO
YW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFuZFN0
b3JlTWFzdGVyS2V5KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKToKKyAgICAgICAg
KiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgICogY3NzL2h0bWwuY3NzOgor
ICAgICAgICAodmlkZW8pOgorICAgICAgICAoaW5wdXQsIHRleHRhcmVhLCBrZXlnZW4sIHNlbGVj
dCwgYnV0dG9uKToKKyAgICAgICAgKCNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZ
KSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSk6CisgICAgICAgICgjaWYgZGVmaW5lZChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKSAmJiBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKToKKyAgICAgICAg
KCNlbmRpZik6CisgICAgICAgICgjaWYgZGVmaW5lZChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkg
JiYgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpOgorICAgICAgICAodGV4dGFyZWEpOgorICAgICAg
ICAoaW5wdXQ6bWF0Y2hlcyhbdHlwZT0icmFkaW8iXSwgW3R5cGU9ImNoZWNrYm94Il0pKToKKyAg
ICAgICAgKGlucHV0Om1hdGNoZXMoW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0ic3VibWl0Il0sIFt0
eXBlPSJyZXNldCJdKSwgaW5wdXRbdHlwZT0iZmlsZSJdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1
dHRvbiwgYnV0dG9uKToKKyAgICAgICAgKGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xp
ZGVyLXRodW1iLCBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LW1lZGlhLXNsaWRlci10aHVt
Yik6CisgICAgICAgICgjaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBX
VEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkpOgorICAgICAgICAoaW5wdXRbdHlwZT0iY2hlY2tib3gi
XSk6CisgICAgICAgICgjZW5kaWYgLy8gZGVmaW5lZChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikg
JiYgRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOgorICAgICAgICAoI2lmIGRlZmluZWQoV1RGX1BM
QVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUyk6IERlbGV0ZWQuCisgICAgICAgICgjaWYg
IShkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MpKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dCk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNzc1Byb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6
OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuaDoKKyAgICAgICAgKiBjc3Mvc3ZnLmNzczoKKyAgICAgICAgKCNpZiBkZWZpbmVkKFdURl9Q
TEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSk6CisgICAgICAg
ICgjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
ICogZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBk
b20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0RldmljZU9y
aWVudGF0aW9uRGF0YS5jcHA6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5o
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKiBk
b20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVE
T01PYmplY3RzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnRNYXJrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZEluc2VydEFzU2VwYXJhdGVNYXJrZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6d2lsbEJlRGVsZXRlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92
ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphYnNvbHV0ZVBvaW50SWZOb3RDbGlwcGVkKToKKyAgICAg
ICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Vmll
d3BvcnRGZWF0dXJlKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZW1wb3Jh
cnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6On5UZW1wb3JhcnlTZWxlY3Rpb25DaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGlu
Z1RleHRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG93U3BlbGxpbmdHdWVzc1BhbmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXZlYWxTZWxlY3Rpb25BZnRlckVk
aXRpbmdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRJZ25vcmVTZWxl
Y3Rpb25DaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9u
QWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2hvdWxkQ2hhbmdlU2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdU
eXBlTWFzayk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0ZvbnRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6RnJhbWVTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZERlbGV0ZVNlbGVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmV2ZWFsU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9t
Tm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6Zm9y
d2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjpjcmVhdGVTaGFkb3cgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKF9mb250Rm9yTmFtZUFu
ZFNpemUpOgorICAgICAgICAoX3NoYWRvd0ZvclNoYWRvd1N0eWxlKToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENv
bnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKEhUTUxDb252ZXJ0
ZXI6Ol9wcm9jZXNzTWV0YUVsZW1lbnRXaXRoTmFtZSk6CisgICAgICAgIChIVE1MQ29udmVydGVy
OjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgICogZWRpdGluZy9tYWMvRnJhbWVTZWxl
Y3Rpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNj
ZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29j
b2EubW06CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGcmFtZUJhc2U6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
RnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6cmVzdG9yZSk6CisgICAgICAgICogaGlzdG9y
eS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6SGlzdG9y
eUl0ZW0pOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAgKiBoaXN0
b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DYWNoZVBhZ2UpOgorICAg
ICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1
c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heEFjdGl2ZVBpeGVsTWVtb3J5KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAq
IGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTY2FuUmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnB1cmdlQnVmZmVyZWREYXRhSWZQb3NzaWJsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKToK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXNlc01lbnVMaXN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzY3JvbGxUb1NlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6
CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHls
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlVXBkYXRlZCk6CisgICAgICAgICogaHRt
bC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAg
ICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRWxlbWVudFNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlz
dGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmlzUGxheWlu
Z1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBodG1s
L1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFy
c2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hF
dmVudCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6
YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1c2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVG
b2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxl
Qmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0
VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6
OnNob3VsZFlpZWxkQmVmb3JlVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
aGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50OjpkcmFnRnJvbSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNldEluZGljYXRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpwbGF0Zm9ybSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9v
cFdoaWxlUGF1c2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFJ1bkxvb3ApOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQpOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y2hlY2tDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Ondp
bGxMb2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
dG9wRm9yVXNlckNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0
UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRGaXJz
dExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9J
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xs
UG9zaXRpb25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZUNv
bG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6ZGlk
UmVjZWl2ZURvY1R5cGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVy
OjpmaXJlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpvdXRlckhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6Om91dGVyV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpj
bGVhclRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVzZXRBbGxHZW9sb2NhdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9EZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjpnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyk6CisgICAgICAg
ICogcGFnZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbGxEZXRhY2hQYWdlKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVmZmVjdGl2
ZUZyYW1lRmxhdHRlbmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydENvbnN0cmFpbmVkVmlzaWJs
ZUNvbnRlbnRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRl
Q29udGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29tcHV0ZVNjcm9s
bGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RUaWxl
ZEJhY2tpbmdDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNhbGN1bGF0
ZUV4dGVuZGVkQmFja2dyb3VuZE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2l6ZUZvclJlc2l6ZUV2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OmxheW91dCk6CisgICAgICAgICogcGFnZS9N
ZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvci5jcHA6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdl
L05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkTWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VVc2FnZU92ZXJsYXk6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkg
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzQmFzZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmg6
CisgICAgICAgIChXZWJDb3JlOjplZGl0aW5nQmVoYXZpb3JUeXBlRm9yUGxhdGZvcm0pOgorICAg
ICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUlu
ZGljYXRvcik6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1lbnRQYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpq
ZXR0aXNvbkV4cGVuc2l2ZU9iamVjdHNPblRvcExldmVsTmF2aWdhdGlvbik6CisgICAgICAgICog
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvd1RleHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dm1QYWdlU2l6ZSk6CisgICAgICAgICogcGFnZS9j
b2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbToKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRs
ZXJJT1MubW06CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgICogcGFn
ZS9tYWMvQ2hyb21lTWFjLm1tOgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIHBhZ2Uv
bWFjL1dlYkNvcmVGcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmg6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJ
T1MubW06CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3Bw
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmg6CisgICAg
ICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90
aWZpZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29udGVudHNTY3JvbGxQ
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1Njcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZpc2libGVD
b250ZW50UmVjdEludGVybmFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9U
aHJlYWRUaW1lcnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZFN1cHByZXNzVGhyZWFkU2FmZXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6
QXVkaW9IYXJkd2FyZUxpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJ
T1MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1Mu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldHVwUG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVk
VGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvVVJMQ0YuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjp3
cmFwV2l0aERlY2lzaW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6Om5lZWRzVUlQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExp
bmsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5r
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW06CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QbGF0Zm9ybVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Np
b25Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU3lzdGVt
VmVyc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQubW06CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlRGVmYXVs
dERpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxH
bHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Zm9udEZvclBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmluYWN0aXZlRm9udENvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjppc0Vtb2ppIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjp2b2x1bWVDaGFu
Z2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjZW50
ZXJUcnVuY2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0VHJ1bmNhdGVUb0J1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dvcmRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cmF0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1By
aXZhdGVMZWdhY3lBVkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQ
ZXJzaXN0ZW50S2V5cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1h
Yy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0
TW9kaWZpZWRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptYXhpbXVtRHVyYXRp
b25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2sgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d291
bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRO
YW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZERpc2FibGVT
bGVlcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNG
cm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6flRpbGVDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVHcmlkOjpzdGFydGVkTmV3Q29ob3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVH
cmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVu
dFJ1bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBbmltYXRpb25EZWxlZ2F0ZSBhbmltYXRp
b25EaWRTdGFydDpdKToKKyAgICAgICAgKC1bV2ViQW5pbWF0aW9uRGVsZWdhdGUgYW5pbWF0aW9u
RGlkU3RvcDpmaW5pc2hlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQ29udGVudHNG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YmFja2luZ1N0
b3JlQnl0ZXNQZXJQaXhlbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d1BhdHRlcm5DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpwZWdVVEkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzaW1pbGFyRm9udCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRh
YmFzZTo6Zm9udEZvclBvc3RTY3JpcHROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhdGlv
bkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Omxvb2t1
cEZhbGxiYWNrRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RSZXNv
cnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJh
Y3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0Zm9ybUluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6dmFyaWFudENhcHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRo
ZXNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkZXRlcm1pbmVQaXRjaCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFt
aWx5Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlv
bjo6ZWZmZWN0aXZlRmFtaWx5QXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FzY2Fk
ZVRvTGFzdFJlc29ydEFuZFZhcmlhdGlvbnNGb250RGVzY3JpcHRvcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2VJT1N1cmZhY2UyRCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6b3B0aW9uc0ZvckJpcGxhbmFyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpv
cHRpb25zRm9yMzJCaXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6bWF4
aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlSUQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpjYXNjYWRlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hSGVscGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6
b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViTWV0YWxMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0lt
YWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpjdlBpeGVsRm9ybWF0
T3BlbkdMS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6Oklt
YWdlVHJhbnNmZXJTZXNzaW9uVlQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1Zp
ZGVvVGV4dHVyZUNvcGllckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lv
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b250QW50aWFsaWFzaW5nU3RhdGVTYXZlcjo6Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXI6OnNldHVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyOjpyZXN0b3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ludFBvaW50TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbnRSZWN0TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXpl
TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdlRXh0
cmFzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRy
YXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAg
ICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxh
eWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnMzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RP
cGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRp
cGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL0RldmljZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0Rl
dmljZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50SU9TOjptb3Rpb25DaGFuZ2VkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUzo6b3JpZW50YXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9FdmVudExvb3BJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tleUV2ZW50
SU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
R3JpZC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVMYXllci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVy
UG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9Mb3dQb3dlck1vZGVOb3RpZmllcklPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5J
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1Mu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJT1MuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsVmll
d0lPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVu
dHNTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW06CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1N5c3RlbU1lbW9yeUlPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1N
ZW1vcnlMZXZlbCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9U
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlTmFtZUZvclVzZXJBZ2Vu
dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZhbGlkYXRpb25CdWJibGVJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAg
ICAgICAoV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYkFWUGxheWVyQ29udHJvbGxlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQmFj
a2dyb3VuZFRhc2tDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkJhY2tn
cm91bmRUYXNrQ29udHJvbGxlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1v
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lmg6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYkV2ZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5
ZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJldHVyblZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
V2lkZ2V0SU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLQXBwS2l0U3R1YnMu
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS0NsaXBWaWV3Lm06CisgICAgICAgICog
cGxhdGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
d2FrL1dBS1Njcm9sbFZpZXcubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV0tHcmFwaGljcy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2Fr
L1dLVXRpbGl0aWVzLmM6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW06Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpydGZQYXN0ZWJvYXJk
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpydGZkUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXJsUGFz
dGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aHRtbFBhc3RlYm9hcmRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbG9yUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
cGRmUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dGlmZlBhc3RlYm9hcmRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1N1ZGRlblRlcm1pbmF0aW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
RnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNl
Ojp+UmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVv
U291cmNlOjpwcmVwYXJlVG9Qcm9kdWNlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmRldmljZUlzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJD
b3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWRkTm90aWZpY2F0
aW9uT2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9i
c2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJlZmVyc1ByZXNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZW5zb3JPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6bW9uaXRvck9yaWVudGF0aW9uKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWRkTm90aWZpY2F0
aW9uT2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9i
c2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVh
dGVBdWRpb1VuaXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVk
aW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb1NoYXJlZFVu
aXQ6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVT
b3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6On5Db3JlQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+RGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBv
b2wpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6On5N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluUmVzb3VyY2VIYW5kbGVDb25z
dHJ1Y3Rvck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYWxsYmFja3NSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Db29raWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0b3Ig
TlNIVFRQQ29va2llICogX051bGxhYmxlICBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmNvb2tpZXNGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SFRUUENvb2tpZXNGb3JV
UkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtT
dGF0ZU5vdGlmaWVySU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5T
VVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNl
U3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6c3FsaXRlM0hhbmRsZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRy
YW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6
Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6c3RvcCk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybUxvY2FsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXpl
ZERhdGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVD
YWNoZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2lvcy9UZXh0RW5jb2RpbmdSZWdpc3Ry
eUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1h
cmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5bGVGb3JN
YXJrZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmNvbGxlY3RNYXJr
ZWRUZXh0c0ZvckRvY3VtZW50TWFya2Vycyk6CisgICAgICAgICogcmVuZGVyaW5nL01hcmtlZFRl
eHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjphbGxvd01pbk1heFBlcmNlbnRhZ2VzSW5BdXRvSGVpZ2h0Qmxv
Y2tzUXVpcmspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVjb2RpbmdNb2RlRm9y
SW1hZ2VEcmF3IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5
bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmFsbG93c0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVtYmVkZGVkT2JqZWN0OjpzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbldpdGhEZXNj
cmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFt
ZVdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9s
OjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxl
bWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpjYW5Vc2VBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzaG93c092ZXJmbG93Q29udHJvbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1h
cnlHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6
c2hvdWxkQ2xpcENvbXBvc2l0ZWRCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBhcmVudEdyYXBoaWNzTGF5ZXJSZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNJbnRvV2luZG93
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVu
dHNOZWVkRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpc2libGVSZWN0Rm9yTGF5
ZXJGbHVzaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUN1c3RvbUxheWVyc0FmdGVyRmx1c2gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRGbHVzaENoYW5nZXNGb3JMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3Np
dGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnNldElzSW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNBc3luY1Njcm9sbGFibGVTdGlj
a3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbnRlbnRzU2NhbGVNdWx0aXBsaWVy
Rm9yTmV3VGlsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjplbnN1cmVSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpjb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OndpbGxSZW1vdmVTY3JvbGxpbmdMYXll
cldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNZW51TGlzdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFJlbmRlck1lbnVM
aXN0Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6c2V0VGV4
dEZyb21PcHRpb24pOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmhpZGVQb3B1cCk6CisgICAg
ICAgIChSZW5kZXJNZW51TGlzdDo6cG9wdXBEaWRIaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkQXBwbHlDb21wb3NpdGVkQ29u
dGFpbmVyU2Nyb2xsc0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpkZXN0cm95KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpn
ZXRBdmVyYWdlQ2hhcldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6Z2V0QXZlcmFnZUNoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGggY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OnBhaW50Qm9yZGVyT25seSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6YXJLaXRCdW5kbGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y2xpZW50TG9naWNhbFdpZHRoRm9y
Rml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGll
bnRMb2dpY2FsSGVpZ2h0Rm9yRml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEN1cnJlbnRDdXJzb3JJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRRdWlja0xvb2tQYXNzd29yZCk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6
CisKIDIwMTgtMTAtMTggIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtJbnRlcnNlY3Rpb25PYnNlcnZlcl0gRmFjdG9yIG91dCByZWN0IG1hcHBpbmcgYW5kIGNsaXBw
aW5nIGxvZ2ljIGZyb20gY29tcHV0ZVJlY3RGb3JSZXBhaW50CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsMTAgKzEwNTgsMTAgQEAgaWZl
cSAoJChVU0VfTExWTV9UQVJHRVRfVFJJUExFU19GT1JfQ0xBTgogCVRBUkdFVF9UUklQTEVfRkxB
R1M9LXRhcmdldCAkKFdLX0NVUlJFTlRfQVJDSCktJChMTFZNX1RBUkdFVF9UUklQTEVfVkVORE9S
KS0kKExMVk1fVEFSR0VUX1RSSVBMRV9PU19WRVJTSU9OKSQoTExWTV9UQVJHRVRfVFJJUExFX1NV
RkZJWCkKIGVuZGlmCiAKLWlmZXEgKCQoc2hlbGwgJChDQykgLXN0ZD1nbnUrKzE0IC14IGMrKyAt
RSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFSR0VUX1RSSVBMRV9GTEFHUykgJChGUkFNRVdPUktf
RkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiIC9kZXYvbnVs
bCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9TICcgfCBjdXQgLWQnICcgLWYzKSwgMSkKLSAgICBX
VEZfUExBVEZPUk1fSU9TID0gMQoraWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTQgLXgg
YysrIC1FIC1QIC1kTSAkKFNES19GTEFHUykgJChUQVJHRVRfVFJJUExFX0ZMQUdTKSAkKEZSQU1F
V09SS19GTEFHUykgJChIRUFERVJfRkxBR1MpIC1pbmNsdWRlICJ3dGYvUGxhdGZvcm0uaCIgL2Rl
di9udWxsIHwgZ3JlcCAnIFdURl9QTEFURk9STV9JT1NfRkFNSUxZICcgfCBjdXQgLWQnICcgLWYz
KSwgMSkKKyAgICBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSA9IDEKIGVsc2UKLSAgICBXVEZfUExB
VEZPUk1fSU9TID0gMAorICAgIFdURl9QTEFURk9STV9JT1NfRkFNSUxZID0gMAogZW5kaWYKIAog
aWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTQgLXggYysrIC1FIC1QIC1kTSAkKFNES19G
TEFHUykgJChUQVJHRVRfVFJJUExFX0ZMQUdTKSAkKEZSQU1FV09SS19GTEFHUykgJChIRUFERVJf
RkxBR1MpIC1pbmNsdWRlICJ3dGYvUGxhdGZvcm0uaCIgL2Rldi9udWxsIHwgZ3JlcCAnIFdURl9Q
TEFURk9STV9NQUMgJyB8IGN1dCAtZCcgJyAtZjMpLCAxKQpAQCAtMTA4MCw4ICsxMDgwLDggQEAg
aWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTQgLXggYysrIAogICAgIEVOQUJMRV9PUklF
TlRBVElPTl9FVkVOVFMgPSAxCiBlbmRpZgogCi1pZmVxICgkKFdURl9QTEFURk9STV9JT1MpLCAx
KQotRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUyA9ICQoRkVBVFVSRV9ERUZJTkVTKSBXVEZf
UExBVEZPUk1fSU9TCitpZmVxICgkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSwgMSkKK0ZFQVRV
UkVfQU5EX1BMQVRGT1JNX0RFRklORVMgPSAkKEZFQVRVUkVfREVGSU5FUykgV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkKIGVsc2UgaWZlcSAoJChXVEZfUExBVEZPUk1fTUFDKSwgMSkKIEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMgPSAkKEZFQVRVUkVfREVGSU5FUykgV1RGX1BMQVRGT1JNX01B
QwogZWxzZQpAQCAtMTEwNSw3ICsxMTA1LDcgQEAgaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9J
T1NfR0VTVFVSRV9FVgogQURESVRJT05BTF9CSU5ESU5HX0lETFMgKz0gR2VzdHVyZUV2ZW50Lmlk
bAogZW5kaWYKIAotaWZlcSAoJChXVEZfUExBVEZPUk1fSU9TKSwgMSkKK2lmZXEgKCQoV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkpLCAxKQogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9JT1NfVE9V
Q0hfRVZFTlRTLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKQog
QURESVRJT05BTF9CSU5ESU5HX0lETFMgKz0gXAogICAgIERvY3VtZW50VG91Y2guaWRsIFwKQEAg
LTExMzEsNyArMTEzMSw3IEBAICQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpIDogJSA6IFdlYktp
dEEKIAogZW5kaWYgIyBNQUNPUwogCi1pZm5lcSAoJChXVEZfUExBVEZPUk1fSU9TKSwgMSkKK2lm
bmVxICgkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSwgMSkKIEpTX0JJTkRJTkdfSURMUyArPSBc
CiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL1RvdWNoLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzOCw3ICsxMzgsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZiAvLyBPUyhXSU5E
T1dTKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAK
QEAgLTE0OSwxNCArMTQ5LDE0IEBACiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KICNlbHNlCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPENvY29hL0Nv
Y29hLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMu
aD4KICNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3RyaW5nICpz
dWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
MTAxMjA0KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDQpCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwCiAgICAgaWYgKCFb
YWRkcmVzcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1YkxvY2FsaXR5KV0pCiAgICAg
ICAgIHJldHVybiBuaWw7CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqc3ViTG9j
YWxpdHkoQ05Qb3N0YWxBZGQKIAogc3RhdGljIHZvaWQgc2V0U3ViTG9jYWxpdHkoQ05NdXRhYmxl
UG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKnN1YkxvY2FsaXR5KQogewotI2lmIFBM
QVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTIwNCkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjA0KQogI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMAog
ICAgIGlmICghW2FkZHJlc3MgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTdWJMb2Nh
bGl0eTopXSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRTdWJMb2NhbGl0eShDTk11dGFibGVQb3N0CiAKIHN0YXRpYyBOU1N0cmluZyAqc3ViQWRtaW5p
c3RyYXRpdmVBcmVhKENOUG9zdGFsQWRkcmVzcyAqYWRkcmVzcykKIHsKLSNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSAxMDEyMDQpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTIwNCkKICNpZiBQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKICAgICBpZiAo
IVthZGRyZXNzIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3ViQWRtaW5pc3RyYXRpdmVB
cmVhKV0pCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBOU1N0
cmluZyAqc3ViQWRtaW5pc3RyYXRpdmVBcmVhKEMKIAogc3RhdGljIHZvaWQgc2V0U3ViQWRtaW5p
c3RyYXRpdmVBcmVhKENOTXV0YWJsZVBvc3RhbEFkZHJlc3MgKmFkZHJlc3MsIE5TU3RyaW5nICpz
dWJBZG1pbmlzdHJhdGl2ZUFyZWEpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjA0KQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDEyMDQpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwCiAgICAgaWYgKCFbYWRkcmVzcyByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFN1YkFkbWluaXN0cmF0aXZlQXJlYTopXSkKICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRl
TWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29udGVudFR5cGUu
aCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNyArMzQ4
LDcgQEAgc3RhdGljIGJvb2wgaXNSZXF1ZXN0RnJvbUlCb29rcygpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKTsKLSNlbGlmIFBMQVRG
T1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIElPU0FwcGxp
Y2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
blBvc2l0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNf
Q0xBU1MgQ0xMb2NhdGlvbjsKICNlbmRpZgogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3NpdGlvbihDTExvY2F0
aW9uKik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2Vv
bG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMyArNTcsMTMgQEAgTmF2aWdhdG9y
R2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aQogICAgIHJldHVybiBzdXBwbGVtZW50Owog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIE5h
dmlnYXRvckdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpCiB7CiAg
ICAgaWYgKG1fZ2VvbG9jYXRpb24pCiAgICAgICAgIG1fZ2VvbG9jYXRpb24tPnJlc2V0QWxsR2Vv
bG9jYXRpb25QZXJtaXNzaW9uKCk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6Z2VvbG9jYXRpb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9s
b2NhdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkg
KzM5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oTmF2
aWdhdG9yJik7CiAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1cHBsZW1lbnROYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1Mu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CiAKQEAgLTU0LDQgKzU0LDQgQEAgR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbgogCiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NjQsNCArNDY0LDQgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1RpbQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgpAQCAtMTA5LDQgKzEwOSw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250
ZXh0RGVzdHJveQogCiB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmZpbHRlckRldmljZUxpc3Qo
VmVjdG9yPFJlZjxNZWRpYURldmljZUluZm8+PiYgZGV2aWNlcykKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgaW50IGRlZmF1
bHRDYW1lcmFDb3VudCA9IDI7CiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdENh
bWVyYUNvdW50ID0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgUEFMOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlND
b250ZXh0ICopOwogc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNv
bnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICosIEpTQ29udGV4dCAqKTsKICNlbmRpZgpAQCAtMjU0
LDcgKzI1NCw3IEBAIHZvaWQgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmUKICAg
ICBtX3BhcmVudEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBKU1ZhbHVlICpqc1Zh
bHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICpkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBKU0NvbnRleHQgKmNvbnRleHQpCiB7CkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIEpTVmFs
dWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZQogCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
SFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAg
ICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6
anNOdWxsKCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgSlNDOjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbgogCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBIVE1MVmlkZW9FbGVtZW50KiBw
YXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50IHx8ICFw
YXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKQEAgLTQxOSw3
ICs0MTksNyBAQCBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVuCiAKIEpT
Qzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplcnJvckxvZyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBh
cmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpcz4gU3BlZWNoU3lu
dGhlc2lzOjpjcgogU3BlZWNoU3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoKQogICAgIDogbV9j
dXJyZW50U3BlZWNoVXR0ZXJhbmNlKG51bGxwdHIpCiAgICAgLCBtX2lzUGF1c2VkKGZhbHNlKQot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9yZXN0
cmljdGlvbnMoUmVxdWlyZVVzZXJHZXN0dXJlRm9yU3BlZWNoU3RhcnRSZXN0cmljdGlvbikKICNl
bmRpZgogewpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpzdGFydFNw
ZWFraW5nSW1tZWQKIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVhayhTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmIHV0dGVyYW5jZSkKIHsKICAgICAvLyBMaWtlIEF1ZGlvLCB3ZSBzaG91bGQgcmVx
dWlyZSB0aGF0IHRoZSB1c2VyIGludGVyYWN0IHRvIHN0YXJ0IGEgc3BlZWNoIHN5bnRoZXNpcyBz
ZXNzaW9uLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAg
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yU3BlZWNo
U3RhcnRSZXN0cmljdGlvbik7CiAgICAgZWxzZSBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvclNw
ZWVjaFN0YXJ0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKFNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYsIGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdm9pZCBmaXJlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1
bnNpZ25lZCBsb25nIGNoYXJJbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJlc3RyaWN0aW9ucyB0
byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCiAgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9u
RmxhZ3MgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC04OSw3ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX2N1cnJlbnRTcGVlY2hVdHRl
cmFuY2U7CiAgICAgRGVxdWU8UmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4+IG1fdXR0ZXJh
bmNlUXVldWU7CiAgICAgYm9vbCBtX2lzUGF1c2VkOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rp
b25zOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCw3ICs4OCw3IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BCiAKICAgICBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdh
aXRUaW1lID0gMzAwMDA7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tn
cm91bmQgcmVtb3ZhbCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQgYmVmb3Jl
IHRyeWluZyB0byBvcGVuIGFueSBkYXRhYmFzZS4KICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2Rp
ZnlEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSkgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkTmV3T3JpZ2luKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlT3JpZ2luKCkgPSAwOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKICNlbmRpZgogCkBAIC0xMTM2LDcgKzEx
MzYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlCiAgICAgZm9y
IChhdXRvJiBkYXRhYmFzZSA6IGRlbGV0ZWREYXRhYmFzZXMpCiAgICAgICAgIGRhdGFiYXNlLT5t
YXJrQXNEZWxldGVkQW5kQ2xvc2UoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChkZWxldGlvbk1vZGUgPT0gRGVsZXRpb25Nb2RlOjpEZWZl
cnJlZCkgewogICAgICAgICAvLyBPdGhlciBiYWNrZ3JvdW5kIHByb2Nlc3NlcyBtYXkgc3RpbGwg
YmUgYWNjZXNzaW5nIHRoaXMgZGF0YWJhc2UuIERlbGV0aW5nIHRoZSBkYXRhYmFzZSBkaXJlY3Rs
eQogICAgICAgICAvLyB3b3VsZCBudWtlIHRoZSBQT1NJWCBmaWxlIGxvY2tzLCBwb3RlbnRpYWxs
eSBjYXVzaW5nIFNhZmFyaS9XZWJBcHAgdG8gY29ycnVwdCB0aGUgbmV3IGRiIGlmIGl0J3MgcnVu
bmluZyBpbiB0aGUgYmFja2dyb3VuZC4KQEAgLTExNTUsNyArMTE1NSw3IEBAIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3Rl
bTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGZ1bGxQYXRoKTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJl
bW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZURlbGV0
ZWRPcGVuZWREYXRhYmFzZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWxl
dGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCkBAIC0xNDAsNyArMTQwLDcg
QEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgRGVsZXRpb25Nb2RlIHsKICAgICAgICAgSW1t
ZWRpYXRlLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICAvLyBEZWZlcnJlZCBkZWxldGlvbiBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgb24g
aU9TCiAgICAgICAgIC8vIChzZWUgcmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyBldGMsIGFi
b3ZlKS4KICAgICAgICAgRGVmZXJyZWQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNCBAQAorMjAxOC0xMC0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggZnJvbSBQTEFURk9STShJT1MpIHRvIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg6Cisg
ICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tOgorICAgICAgICAqIHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oOgorICAg
ICAgICAqIHBhbC9zcGkvY29jb2EvQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaDoKKyAgICAgICAgKiBw
YWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9EYXRh
RGV0ZWN0b3JzQ29yZVNQSS5oOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJ
Lmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorICAgICAg
ICAqIHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvY29jb2Ev
TlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgICog
cGFsL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9pb3Mv
R3JhcGhpY3NTZXJ2aWNlc1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvaW9zL01lZGlhUGxheWVy
U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oOgorICAgICAg
ICAqIHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oOgorICAgICAgICAqIHBhbC9zeXN0ZW0v
bWFjL0Nsb2NrQ00ubW06CisgICAgICAgIChDbG9ja0NNOjpDbG9ja0NNKToKKwogMjAxOC0xMC0x
NyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgdGhlIGRhdGFsaXN0IGVsZW1lbnQgYnkgZGVmYXVsdCBvbiBpT1MgYW5kIG1hY09TCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxD
b3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMzAwMDApIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTQwMCkKKyNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAw
MCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwg
MTAxNDAwKQogI2RlZmluZSBDTVNBTVBMRUJVRkZFUkNBTExfTk9FU0NBUEUKICNlbHNlCiAjZGVm
aW5lIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBDRl9OT0VTQ0FQRQpAQCAtMTYwLDIxICsx
NjAsMjEgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGlt
ZUNsb2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVm
IGNsb2NrKSwgKGNsb2NrKSkKIAotI2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TTUFDKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwKQorI2lmIFBM
QVRGT1JNKEFQUExFVFYpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFDKSB8fCBQ
TEFURk9STShXQVRDSE9TKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVS
Q0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwg
Q01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBj
YWxsYmFjaywgcmVmY29uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxCbG9ja0ZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAo
Q01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKF4gQ01TQU1QTEVCVUZGRVJDQUxMX05P
RVNDQVBFIGhhbmRsZXIpKENNU2FtcGxlQnVmZmVyUmVmLCBDTUl0ZW1Db3VudCkpLCAoc2J1Ziwg
aGFuZGxlcikpCiAjZW5kaWYKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Nsb2NrQ3JlYXRlLCBPU1N0YXR1cywg
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01DbG9ja1JlZiAqY2xvY2tPdXQpLCAoYWxsb2Nh
dG9yLCBjbG9ja091dCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVN
ZWRpYSwgQ01UaW1lTWF4aW11bSwgQ01UaW1lLCAoQ01UaW1lIHRpbWUxLCBDTVRpbWUgdGltZTIp
LCAodGltZTEsIHRpbWUyKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTVRpbWVNaW5pbXVtLCBDTVRpbWUsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1l
MiksICh0aW1lMSwgdGltZTIpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIENNVGltZVJhbmdlQ29udGFpbnNUaW1lLCBCb29sZWFuLCAoQ01UaW1lUmFuZ2Ug
cmFuZ2UsIENNVGltZSB0aW1lKSwgKHJhbmdlLCB0aW1lKSkKIAogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgZGV2aWNlVUlELCBDTUNsb2NrUmVmICpjbG9ja091
dCksIChhbGxvY2F0b3IsIGRldmljZVVJRCwgY2xvY2tPdXQpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjZGVmaW5lIFNPRlRMSU5LX0FWS0lUX0ZSQU1FV09S
SygpIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZLaXQpCiAjZW5kaWYKIAotI2lmIChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMzAwMDAp
IHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEw
MTQwMCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA8IDEzMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01BWF9BTExPV0VEIDwgMTAxNDAwKQogI2RlZmluZSBDTVNBTVBMRUJVRkZFUkNBTExfTk9F
U0NBUEUKICNlbHNlCiAjZGVmaW5lIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBDRl9OT0VT
Q0FQRQpAQCAtMjcwLDcgKzI3MCw3IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU0KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUNsb2NrR2V0VGltZSwgQ01UaW1lLCAoQ01DbG9ja1JlZiBjbG9jayksIChjbG9jaykpCiAjZGVm
aW5lIENNQ2xvY2tHZXRUaW1lICBzb2Z0TGlua19Db3JlTWVkaWFfQ01DbG9ja0dldFRpbWUKIAot
I2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFD
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwKQorI2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFDKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8
IDEyMDAwMCkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZm
ZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxi
YWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwg
dm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pKQog
I2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlCkBAIC0yODEsNyArMjgxLDcgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9D
bG9ja0NyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQ2xvY2tS
ZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgY2xvY2tPdXQpKQogI2RlZmluZSBDTUF1ZGlvQ2xv
Y2tDcmVhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9DbG9ja0NyZWF0ZQpAQCAtMjk1LDcg
KzI5NSw3IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU0KIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0
ZSwgQ01UaW1lKQogI2RlZmluZSBrQ01UaW1lSW5kZWZpbml0ZSBnZXRfQ29yZU1lZGlhX2tDTVRp
bWVJbmRlZmluaXRlKCkKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oTUFDKQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEku
aD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKIC8vIFRoZSBTUEkgaGVhZGVyIHNob3VsZCBkZWZpbmUgd2hpY2gg
Q0ZOZXR3b3JrIGZlYXR1cmVzICpleGlzdCogaW4gdGhlIHVuZGVybHlpbmcgc3lzdGVtLCBidXQg
bm90CiAvLyBwb2xpY3kgYWJvdXQgd2hhdCBXZWJLaXQgc2hvdWxkIGRvLiBBY2NvcmRpbmdseSwg
d2Ugc2hvdWxkIG1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBvciByZW5hbWUgaXQKIC8vIHRvIGJl
IGFib3V0IENGTmV0d29yayBjYXBhYmlsaXRpZXMgKEhBVkUpIHJhdGhlciB0aGFuIGFib3V0IFdl
YktpdCBwb2xpY3kgKFVTRSkuCi0jaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDIwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNDAyMDApIHx8IChQTEFURk9STShUVk9TKSAmJiBf
X1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkpCisjaWYgKChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAyMDApIHx8IChQ
TEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDQw
MjAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAyMDApKQogI2RlZmluZSBVU0VfQ0ZORVRXT1JLX0lHTk9SRV9IU1RTIDEKICNlbmRpZgog
CkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1VSTFNl
c3Npb25DCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqX3NvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3Ry
aW5nICpfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogQHByb3BlcnR5IEJP
T0wgX3Nob3VsZFNraXBQcmVmZXJyZWRDbGllbnRDZXJ0aWZpY2F0ZUxvb2t1cCBOU19BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqX0NURGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZTsKICNlbmRpZgotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1NldCAqX3N1cHByZXNzZWRBdXRv
QWRkZWRIVFRQSGVhZGVyczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FU
Q0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSA2MDAwMApAQCAtMTkyLDEyICsxOTIsMTIgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNVUkxTZXNzaW9uQwogQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqX3N0b3JhZ2VQYXJ0aXRpb25JZGVudGlmaWVyOwogQHByb3BlcnR5IChudWxs
YWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CiBAcHJvcGVy
dHkgKHJlYWR3cml0ZSkgQk9PTCBfaXNUb3BMZXZlbE5hdmlnYXRpb247Ci0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IEJPT0wgX3ByZWNvbm5lY3Q7CiAjZW5kaWYKIEBlbmQKIAotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCiBAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlv
bk1ldHJpY3MgKCkKIEBwcm9wZXJ0eSAoY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nKiBfcmVtb3Rl
QWRkcmVzc0FuZFBvcnQ7CiBAcHJvcGVydHkgKGNvcHksIHJlYWRvbmx5KSBOU1VVSUQqIF9jb25u
ZWN0aW9uSWRlbnRpZmllcjsKQEAgLTM1OCw3ICszNTgsNyBAQCBXVEZfRVhURVJOX0NfRU5ECiBA
ZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAoKQotI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8
fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25j
ZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBhIGJ1aWxkLgogQHByb3BlcnR5IChjb3B5
KSBOU0RpY3Rpb25hcnkgKl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgog
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPEFWS2l0L0FWS2l0Lmg+CiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0xNjgsOSAr
MTY4LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3QwogTlNfQVNT
VU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9DRk5TVVJMQ29ubmVjdGlvblNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NGTlNVUkxDb25u
ZWN0aW9uU1BJLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0NGTlNVUkxDb25uZWN0aW9uU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAKICNlbHNlCiAKIEBpbnRlcmZhY2UgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAoKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyhOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Rm9yQ0ZBdXRoQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2Ugc2Vu
ZGVyOihpZCA8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4pc2VuZGVyOwogI2Vs
c2UKICsoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKV9hdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdl
IHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+KXNlbmRlcjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQ29yZVRleHRTUEku
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
Q29yZVRleHRTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB0eXBlZGVmIENG
X09QVElPTlMoQ0ZPcHRpb25GbGFncywgQ1RGb250CiAgICAga0NURm9udEZhbGxiYWNrT3B0aW9u
RGVmYXVsdCA9IGtDVEZvbnRGYWxsYmFja09wdGlvblN5c3RlbSB8IGtDVEZvbnRGYWxsYmFja09w
dGlvblVzZXJJbnN0YWxsZWQsCiB9OwogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09
IDEyMDAwMCkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVyT3B0aW9uQWxs
b3dVbmJvdW5kZWRMYXlvdXQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0
b3JzQ29yZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgdHlwZWRlZiBz
dHJ1Y3QgX19ERFJlc3VsdCAqRERSZXN1bHRSZWY7CiAjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzQ29y
ZS9ERFNjYW5uZXJSZXN1bHQuaD4KICNpbXBvcnQgPERhdGFEZXRlY3RvcnNDb3JlL0RhdGFEZXRl
Y3RvcnNDb3JlLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgPERhdGFEZXRlY3RvcnNDb3JlL0RET3B0aW9uYWxTb3VyY2UuaD4KICNpbXBv
cnQgPERhdGFEZXRlY3RvcnNDb3JlL0REVVJMaWZpZXIuaD4KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2Vsc2UgLy8gIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L0lPU3VyZmFjZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0lPU3VyZmFjZVNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwog
Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDExMDAwMAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwCiBlbnVtIHsKICAgICBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5
ICA9IDB4MDAwMDAwMDEsCiB9OwpAQCAtOTIsNyArOTIsNyBAQCBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbHNlCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwMCkKIAogI2ltcG9y
dCA8SU9TdXJmYWNlL0lPU3VyZmFjZVR5cGVzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2Vydmlj
ZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaWYgUExBVEZPUk0o
TUFDKQogI2ltcG9ydCA8TGF1bmNoU2VydmljZXMvTGF1bmNoU2VydmljZXNQcml2Lmg+Ci0jZWxp
ZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05F
RmlsdGVyU291cmNlU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdHlwZWRl
ZiB2b2lkICheTkVGaWx0ZXJTb3VyY2VEZWNpc2lvbkhhbgogLSAodm9pZClyZWNlaXZlZERhdGE6
KE5TRGF0YSAqKWRhdGEgZGVjaXNpb25IYW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFu
ZGxlcilkZWNpc2lvbkhhbmRsZXI7CiAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEZWNpc2lv
bkhhbmRsZXI6KE5FRmlsdGVyU291cmNlRGVjaXNpb25IYW5kbGVyKWRlY2lzaW9uSGFuZGxlcjsK
IC0gKHZvaWQpcmVtZWRpYXRlV2l0aERlY2lzaW9uSGFuZGxlcjooTkVGaWx0ZXJTb3VyY2VEZWNp
c2lvbkhhbmRsZXIpZGVjaXNpb25IYW5kbGVyOwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzb3VyY2VBcHBJZGVudGlm
aWVyOwogQHByb3BlcnR5IChhc3NpZ24pIHBpZF90IHNvdXJjZUFwcFBpZDsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRy
aWJ1dGVkU3RyaW5nU1BJLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0L05T
QXR0cmlidXRlZFN0cmluZy5oPgogCkBAIC0xMDUsOSArMTA1LDkgQEAgc3RhdGljIE5TU3RyaW5n
ICpjb25zdCBOU1N1cGVyc2NyaXB0QXR0cgogLSAoQk9PTCljb250YWluc0F0dGFjaG1lbnRzOwog
QGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTMwMCkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAx
MDEzMDApCiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJDaXJjbGUgPSBA
IntjaXJjbGV9IjsKIHN0YXRpYyBOU1N0cmluZyAqY29uc3QgTlNUZXh0TGlzdE1hcmtlckRpc2Mg
PSBAIntkaXNjfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJTcXVh
cmUgPSBAIntzcXVhcmV9IjsKQEAgLTEyMSw0ICsxMjEsNCBAQCBzdGF0aWMgTlNTdHJpbmcgKmNv
bnN0IE5TVGV4dExpc3RNYXJrZXJVCiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RN
YXJrZXJMb3dlcmNhc2VSb21hbiA9IEAie2xvd2VyLXJvbWFufSI7CiBzdGF0aWMgTlNTdHJpbmcg
KmNvbnN0IE5TVGV4dExpc3RNYXJrZXJVcHBlcmNhc2VSb21hbiA9IEAie3VwcGVyLXJvbWFufSI7
CiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJEZWNpbWFsID0gQCJ7ZGVj
aW1hbH0iOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxMzAwKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhf
QUxMT1dFRCA8IDEwMTMwMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2RlZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVS
X0FQSSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49
IDEwMTMwMiAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MjAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSA0MDIwMCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMjAwKSkKKyNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9BUEkgKChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAy
MDApIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDQwMjAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19UVl9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAyMDApKQogCi0jZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJfRk9SX0FU
VFJJQlVURURfU1RSSU5HICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gMTAxMzAyICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMzAwMDApIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDYwMDAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19UVl9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApKQorI2RlZmluZSBVU0VfU0VDVVJFX0FSQ0hJ
VkVSX0ZPUl9BVFRSSUJVVEVEX1NUUklORyAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwMiAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYm
IF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNjAwMDApIHx8IChQTEFURk9STShU
Vk9TKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkpCiAKICNpZiBV
U0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tp
dFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNlbHNlCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8UGFzc0tp
dC9QYXNzS2l0Lmg+CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFu
dFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikp
c2Vzc2lvbkJsb2NrOwogQGVuZAogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwNCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApCisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwNCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMzAw
KQogdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlKSB7
CiAgICAgUEtQYXltZW50UmVxdWVzdEFQSVR5cGVJbkFwcCA9IDAsCiAgICAgUEtQYXltZW50UmVx
dWVzdEFQSVR5cGVXZWJKUywKQEAgLTI3Niw3ICsyNzYsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBQS1BheW1lbnRCdXR0CiAgICAgUEtQYXltZW50QnV0dG9uVHlwZVNldFVwLAogICAg
IFBLUGF5bWVudEJ1dHRvblR5cGVJblN0b3JlLAogICAgIFBLUGF5bWVudEJ1dHRvblR5cGVEb25h
dGUsCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01BWF9BTExPV0VEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTIwMDAwKQogICAgIFBLUGF5bWVudEJ1
dHRvblR5cGVDaGVja291dCwKICAgICBQS1BheW1lbnRCdXR0b25UeXBlQm9vaywKICAgICBQS1Bh
eW1lbnRCdXR0b25UeXBlU3Vic2NyaWJlLApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdHlwZWRlZiBlbnVtIHsKIEBpbnRlcmZhY2UgQ0FUcmFu
c2FjdGlvbiAoKQogKyAodm9pZClhZGRDb21taXRIYW5kbGVyOih2b2lkKF4pKHZvaWQpKWJsb2Nr
IGZvclBoYXNlOihDQVRyYW5zYWN0aW9uUGhhc2UpcGhhc2U7CiAKLSNpZiBQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMAogKyAoQ0FUcmFuc2FjdGlvblBoYXNlKWN1cnJlbnRQaGFzZTsKICNlbmRpZgogCkBAIC0y
MzcsNyArMjM3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dERpc3BsYQog
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0OwogZXh0ZXJu
IE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dFBvcnROdW1iZXI7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QUNvbnRlbnRzRm9ybWF0UkdCQTEwWFI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL0RhdGFEZXRlY3RvcnNV
SVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL0dyYXBoaWNzU2Vy
dmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3Mv
R3JhcGhpY3NTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5
ZXJTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVk
aWFQbGF5ZXJTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvaW9zL01lZGlhUGxheWVyU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2ltcG9ydCA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgpAQCAtMTAzLDQgKzEwMyw0IEBAIE5TX0FTU1VNRV9O
T05OVUxMX0VORAogCiAjZW5kaWYKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
aW9zL01vYmlsZUdlc3RhbHRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxh
eWVyTGF5ZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyX1ByaXZh
dGUuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKQogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlcl9XZWJLaXRPbmx5Lmg+CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTdHJlYW1EYXRh
UGFyc2VyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uX1ByaXZhdGUuaD4K
ICNlbmRpZgogCkBAIC01NCwxNiArNTQsMTYgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyLmg+CiAKLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAx
MzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VE
ID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDApCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogQGludGVyZmFjZSBBVlBsYXllckl0ZW0gKCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNUaW1lSW50ZXJ2YWwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSBO
U19BVkFJTEFCTEUoMTBfMTMsIDExXzApOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1RpbWVJbnRlcnZhbCBsaXZlVXBkYXRlSW50ZXJ2YWw7CiBAZW5kCiBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKLSNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDAp
CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSB8fCBQTEFURk9STShJT1Mp
CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtNzcsNyArNzcsNyBAQCBAaW50
ZXJmYWNlIEFWT3V0cHV0Q29udGV4dCA6IE5TT2JqZWN0IDxOCiBAcHJvcGVydHkgKHJlYWRvbmx5
KSBOU0FycmF5PEFWT3V0cHV0RGV2aWNlICo+ICpvdXRwdXREZXZpY2VzOwogQGVuZAogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgQVZQ
bGF5ZXIgKEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1N1cHBvcnRQcml2YXRlKQogQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbikgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0OwogQGVu
ZApAQCAtOTUsNyArOTUsNyBAQCBAaW50ZXJmYWNlIEFWUGxheWVyIChBVlBsYXllckV4dGVybmFs
UGxhCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgfHwgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVkFzc2V0Q2FjaGUuaD4KIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCkBA
IC0xMDksMTQgKzEwOSwxNCBAQCBAaW50ZXJmYWNlIEFWQXNzZXRDYWNoZSAoKQogQGVuZAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECiAKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1Nf
U0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SX0ZBTUlMWSkKIEBpbnRlcmZhY2UgQVZQbGF5ZXIgKEFWUGxheWVyVmlkZW9TbGVlcFBy
ZXZlbnRpb24pCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9wcmV2ZW50c1NsZWVwRHVy
aW5nVmlkZW9QbGF5YmFjaywgc2V0dGVyPV9zZXRQcmV2ZW50c1NsZWVwRHVyaW5nVmlkZW9QbGF5
YmFjazopIEJPT0wgcHJldmVudHNTbGVlcER1cmluZ1ZpZGVvUGxheWJhY2s7CiBAZW5kCiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlM
WSkKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNw
cmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTdHJlYW1EYXRhUGFyc2VyCkBAIC0xNTYsNyAr
MTU2LDcgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKCkgPEFWQ29udAogQGVuZAog
I2VuZGlmCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIApAQCAtMTY4
LDE0ICsxNjgsMTQgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKEFWU3RyZWFtRAog
TlNfQVNTVU1FX05PTk5VTExfRU5ECiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgKCFI
QVZFKEFWS0lUKSB8fCAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgKCFIQVZFKEFWS0lUKSB8fCAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykpCiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXllci5oPgogQGludGVyZmFjZSBBVlBsYXll
ckxheWVyIChBVlBsYXllckxheWVyUGljdHVyZUluUGljdHVyZU1vZGVTdXBwb3J0UHJpdmF0ZSkK
IC0gKHZvaWQpc2V0UElQTW9kZUVuYWJsZWQ6KEJPT0wpZmxhZzsKIEBlbmQKICNlbmRpZiAvLyAh
SEFWRShBVktJVCkKIAotI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE0MDQpIHx8IChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAyMDApCisj
aWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTQwNCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAyMDApCiBAY2xhc3MgQVZW
aWRlb1BlcmZvcm1hbmNlTWV0cmljczsKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAaW50ZXJm
YWNlIEFWUGxheWVyTGF5ZXIgKEFWUGxheWVyTGF5ZXJWaWRlb1BlcmZvcm1hbmNlTWV0cmljcykK
QEAgLTIzNSw3ICsyMzUsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIF9f
aGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXpl
ci5oPikKIAotI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FM
TE9XRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPCAxMTAwMDApKSAmJiBfX2hhc19pbmNsdWRlKDxBVkZvdW5kYXRpb24vQVZR
dWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmcuaD4pCisjaWYgKChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMTAwMDApKSAmJiBf
X2hhc19pbmNsdWRlKDxBVkZvdW5kYXRpb24vQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmcu
aD4pCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmcu
aD4KIEBjbGFzcyBBVlZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzOwogTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KQEAgLTI3Myw3ICsyNzMsNyBAQCBAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIDogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNlbmRpZiAvLyBfX2hhc19pbmNsdWRl
KDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4pCiAKLSNpZiAoKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTEw
MDAwKSkgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWUXVldWVkU2FtcGxlQnVmZmVy
UmVuZGVyaW5nLmg+KQorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTEwMDAwKSkgJiYgX19oYXNfaW5jbHVkZSg8QVZG
b3VuZGF0aW9uL0FWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nLmg+KQogLy8gTm90aGluZyB0
byBkbywgQVZmb3VuZGF0aW9uL0FWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nLmggd2FzIGlt
cG9ydGVkIGFib3ZlLgogI2VsaWYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWU2FtcGxl
QnVmZmVyQXVkaW9SZW5kZXJlci5oPikKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1
ZmZlckF1ZGlvUmVuZGVyZXIuaD4KQEAgLTMxMiw3ICszMTIsNyBAQCBAaW50ZXJmYWNlIEFWVmlk
ZW9QZXJmb3JtYW5jZU1ldHJpY3MgKEFWCiBAZW5kCiAjZW5kaWYKIAotI2lmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKSAmJiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9S
KSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpICYm
ICFQTEFURk9STShJT1NNQUMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24u
aD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBDbG9ja0NNOjpDbG9ja0NNKCkKICAgICAsIG1fcnVubmluZyhmYWxzZSkK
IHsKICAgICBDTUNsb2NrUmVmIHJhd0Nsb2NrUHRyID0gMDsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDTUF1ZGlvQ2xvY2tDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgJnJhd0Nsb2NrUHRyKTsKICNlbHNlCiAgICAgQ01BdWRpb0RldmljZUNsb2Nr
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsICZyYXdDbG9ja1B0cik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgUmVmPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZyCiAgICAgaWYgKG5vZGUgJiYgaXM8SFRNTExhYmVsRWxl
bWVudD4obm9kZSkgJiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCiAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNyZWF0ZShyZW5kZXJlcik7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXM8SFRNTE1lZGlhRWxl
bWVudD4obm9kZSkgJiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCiAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZWRpYU9iamVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5TWVkaWFPYmplY3QuaCIKIAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKQEAgLTE4
OCw0ICsxODgsNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdDo6ZW50ZXJGdWxsCiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVkaWFPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogCkBAIC02OCw0ICs2OCw0IEBA
IHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQUNDRVNTSUJJTElUWShBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QsIGlzTWVkaWFPYmplY3Qo
KSkKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsNyBAQCBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0PiBBY2Nlc3NpYmlsaXR5
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpwcmVzcygpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZW5kZXJNZW51TGlzdCogbWVu
dUxpc3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJNZW51TGlzdCo+KHJlbmRlcmVyKCkpOwogICAgIGlm
IChtZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKSkKICAgICAgICAgbWVudUxpc3QtPmhpZGVQb3B1
cCgpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6Y2hpbGRy
ZW5DaGFuCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojppc0NvbGxhcHNlZCgpIGNvbnN0
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBy
ZXR1cm4gIXN0YXRpY19jYXN0PFJlbmRlck1lbnVMaXN0Kj4ocmVuZGVyZXIoKSktPnBvcHVwSXNW
aXNpYmxlKCk7CiAjZWxzZQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdAogICAgICAgICAKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6Okxpbms6IHsKICAgICAgICAgYm9vbCBpc0xpbmsgPSBheE9iamVjdC0+
aXNMaW5rKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIGlmICghaXNMaW5rKQogICAgICAgICAgICAgaXNMaW5rID0gYXhPYmplY3QtPmlzRGVz
Y2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmspOwogI2VuZGlmCkBA
IC0xMDA2LDcgKzEwMDYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzKCkKICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgZG9jdW1lbnQpOwogICAgIAogICAgIGJvb2wgZGlzcGF0Y2hlZFRvdWNoRXZlbnQgPSBm
YWxzZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoaGFzVG91Y2hFdmVudExpc3RlbmVyKCkpCiAgICAgICAgIGRpc3BhdGNoZWRUb3VjaEV2ZW50
ID0gZGlzcGF0Y2hUb3VjaEV2ZW50KCk7CiAjZW5kaWYKQEAgLTE5NTUsNyArMTk1NSw3IEBAIGNv
bnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWwKICNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpCiBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIoKSBj
b25zdAogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gYWRkIHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYnV0dG9uQWN0aW9uKEFYQnV0dG9u
QWN0aW9uVmVyYigpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB0
ZXh0RmllbGRBY3Rpb24oQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBwdWJsaWM6CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNs
dWRlc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkRlZmF1bHRCZWhhdmlvcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmllbGRMZW5n
dGgoKTsKICAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwogICAgIGJvb2wg
aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0OwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sKTsK
ICNlbmRpZgogICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGNhcmV0
QnJvd3NpbmdFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChib29sKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNyArNzY2LDcgQEAgU3RyaW5nIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc1RleHRDb250cm9sKCkpCiAg
ICAgICAgIHJldHVybiB0ZXh0KCk7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSkKICAgICAg
ICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKICNlbmRpZgpAQCAtMjcxNCw3ICsyNzE0LDcg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgICAgICBpZiAo
aW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUo
KTsKICAgICAgICAgLy8gT24gaU9TLCB0aGUgZGF0ZSBmaWVsZCBhbmQgdGltZSBmaWVsZCBhcmUg
cG9wdXAgYnV0dG9ucy4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXkgYXJlIHRleHQgZmllbGRzLgot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
aW5wdXQuaXNEYXRlRmllbGQoKSB8fCBpbnB1dC5pc1RpbWVGaWVsZCgpKQogICAgICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICNlbmRpZgpAQCAtMzQ5MCw3
ICszNDkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZAogICAg
IAogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25WZXJiKCkg
Y29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGJ1dHRvbkFjdGlvbihBWEJ1dHRv
bkFjdGlvblZlcmIoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
dGV4dEZpZWxkQWN0aW9uKEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcg
KzE3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWMKICAgICBp
ZiAoIW1fcGFyZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSNpZiBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9S
TShHVEspCiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUhlYWRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUhl
YWRlckNvbnRhaW5lcjo6CiAgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmpl
Y3RDYWNoZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCiAK
LSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgi
CkBAIC0xMzgsNCArMTM4LDQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRv
QW5jaAogICAgIAogfQogCi0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0
eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYg
UExBVEZPUk0oSU9TKQorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAi
RXZlbnROYW1lcy5oIgpAQCAtOTYsNCArOTYsNCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzSW5wdXRUeXBlUG9wCiAKIH0gLy8gV2ViQ29yZQogCi0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCkBAIC03MSw0ICs3MSw0IEBACiAKIEBlbmQKIAotI2VuZGlmIC8v
IEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEhBVkUoQUND
RVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIgogCi0jaWYgSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QXR0YWNobWVu
dC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmgiCkBAIC0zMjQ0LDQgKzMy
NDQsNCBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAKIEBlbmQKIAotI2VuZGlmIC8vIEhB
VkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEhBVkUoQUNDRVNT
SUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNlbmRpZgogCkBAIC01OCw3ICs1
OCw3IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAKICAgICB2bS5oZWFwLmFjcXVpcmVBY2Nl
c3MoKTsgLy8gQXQgYW55IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdD
LgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm0u
c2V0UnVuTG9vcChXZWJUaHJlYWRSdW5Mb29wKCkpOwogICAgIHZtLmhlYXAubWFjaGluZVRocmVh
ZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAg
ICB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICNp
bmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCiAjZW5kaWYKIApAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgSlNET01XaW5k
b3dCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3IKICAgICBpZiAoc2hvdWxkSW50ZXJydXB0U2NyaXB0
VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25XaGVuQ2xvc2luZ1BhZ2UocGFnZSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmlzU3RvcHBpbmcoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNyArNzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2
Miw3ICsxNjIsNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtCiAg
ICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBmaWVsZE5hbWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwg
anNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwogICAgIGlkIHRhcmdldE9i
amVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3Qo
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQogICAgIGlkIGF0dHJpYnV0
ZXMgPSBbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYXR0cmlidXRl
S2V5cyldID8gW3RhcmdldE9iamVjdCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGF0dHJpYnV0
ZUtleXMpXSA6IG5pbDsKICAgICBJR05PUkVfV0FSTklOR1NfRU5ECkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NvbW1vbkNyeXB0b1V0aWxpdGllcy5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQogI2RlZmluZSBIQVZFX0NDUlNBR2V0Q1JUQ29t
cG9uZW50cyAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9LZXlSU0FNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvS2V5UlNBTWFjLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKQorI2lmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEx
MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTMwMCkKIGlubGluZSB1aW50OF90KiBjYXN0RGF0YUFyZ3VtZW50VG9DQ1JTQUNyeXB0
b3JDcmVhdGVGcm9tRGF0YUlmTmVlZGVkKGNvbnN0IHVpbnQ4X3QqIHZhbHVlKQogewogICAgIHJl
dHVybiBjb25zdF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBV
U0VfS0VZQ0hBSU5fQUNDRVNTX0NPTlRST0xfTElTVFMgMAogI2Vsc2UKICNkZWZpbmUgVVNFX0tF
WUNIQUlOX0FDQ0VTU19DT05UUk9MX0xJU1RTIDEKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tTlNEYXRhKAogCiBzdGF0aWMgTlNTdHJpbmcqIG1hc3Rl
cktleUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKCkKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRp
ZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAjZWxzZQog
ICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW1tOU1J1bm5pbmdBcHBsaWNhdGlvbiBj
dXJyZW50QXBwbGljYXRpb25dIGJ1bmRsZUlkZW50aWZpZXJdOwpAQCAtODcsNyArODcsNyBAQCBz
dGF0aWMgYm9vbCBjcmVhdGVBbmRTdG9yZU1hc3RlcktleShWZWN0CiAgICAgaW50IHJjID0gQ0NS
YW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgbWFzdGVyS2V5RGF0YS5kYXRhKCksIG1h
c3RlcktleURhdGEuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChyYyA9PSBrQ0NTdWNjZXNz
KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5T
QnVuZGxlICptYWluQnVuZGxlID0gW05TQnVuZGxlIG1haW5CdW5kbGVdOwogICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbbWFpbkJ1bmRsZSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtl
eTpAIkNGQnVuZGxlRGlzcGxheU5hbWUiXTsKICAgICBpZiAoIWFwcGxpY2F0aW9uTmFtZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDcgKzM4Niw3IEBA
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGUKICAgICBDU1NQcm9wZXJ0
eVBlcnNwZWN0aXZlT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVz
dCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENTU1Byb3BlcnR5V2Via2l0VG91Y2hDYWxs
b3V0LAogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTM3MDcsNyArMzcwNyw3
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS50b3VjaEFjdGlvbigpKTsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VG91Y2hDYWxsb3V0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoc3R5bGUudG91Y2hDYWxsb3V0RW5hYmxlZCgpID8gQ1NTVmFsdWVE
ZWZhdWx0IDogQ1NTVmFsdWVOb25lKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnRpZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydGllcy5qc29uCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydGllcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC02NjM1LDcgKzY2MzUsNyBAQAog
ICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAibmFt
ZS1mb3ItbWV0aG9kcyI6ICJUb3VjaENhbGxvdXRFbmFibGVkIiwKICAgICAgICAgICAgICAgICAi
Y29udmVydGVyIjogIlRvdWNoQ2FsbG91dCIsCi0gICAgICAgICAgICAgICAgImVuYWJsZS1pZiI6
ICJXVEZfUExBVEZPUk1fSU9TIgorICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkiCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInN0YXR1cyI6
ICJub24tc3RhbmRhcmQiCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsy
MzUsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIHBhcnNlSmF2YVNjcmlwdENTCiAgICAgKmJ1
ZmZlclB0ciA9ICdcMCc7CiAKICAgICB1bnNpZ25lZCBvdXRwdXRMZW5ndGggPSBidWZmZXJQdHIg
LSBidWZmZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoYnVmZmVyLCBuYW1lLCBvdXRwdXRMZW5ndGgp
OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzbWFsbC1jYXB0aW9uCiAtd2Via2l0
LXNtYWxsLWNvbnRyb2wKIC13ZWJraXQtY29udHJvbAogCi0jaWYgZGVmaW5lZChXVEZfUExBVEZP
Uk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
X0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKIC1hcHBsZS1zeXN0ZW0taGVhZGxp
bmUKIC1hcHBsZS1zeXN0ZW0tYm9keQogLWFwcGxlLXN5c3RlbS1zdWJoZWFkbGluZQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRN
b3Rpb25FdmFsdWF0ZQogICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1
ZTo6T2ZmOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldHRpbmdzOjpGb3JjZWRBY2Nlc3Np
YmlsaXR5VmFsdWU6OlN5c3RlbToKLSNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1Mp
CisjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uID0gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFycXVlZUluY3JlbWVudChT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGaWx0ZXJPcGVyYXRpb25zPiBjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
QEAgLTEyNTUsNyArMTI1NSw3IEBAIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3MgU3R5bGVC
dWlsZGUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaENh
bGxvdXQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1
cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkuc3RyaW5nVmFsdWUoKSwgIm5vbmUiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9odG1sLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGhyIHsKIAogdmlkZW8gewogICAgIG9iamVjdC1m
aXQ6IGNvbnRhaW47Ci0jaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZP
Uk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRG
T1JNX0lPU19GQU1JTFkKICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFy
ZW50OwogI2VuZGlmCiB9CkBAIC0zNTksNyArMzU5LDcgQEAgaW5wdXQsIHRleHRhcmVhLCBrZXln
ZW4sIHNlbGVjdCwgYnV0dG9uLAogCiBpbnB1dCwgdGV4dGFyZWEsIGtleWdlbiwgc2VsZWN0LCBi
dXR0b24gewogICAgIG1hcmdpbjogMF9fcWVtOwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1f
SU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
X0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpCiAgICAgZm9udDogLXdlYmtpdC1z
bWFsbC1jb250cm9sOwogI2VuZGlmCiAgICAgY29sb3I6IGluaXRpYWw7CkBAIC0zNzcsNyArMzc3
LDcgQEAgaW5wdXRbdHlwZT0iaGlkZGVuIl0gewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLSNp
ZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZp
bmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQog
dGV4dGFyZWEsCiBpbnB1dFt0eXBlPSJyYW5nZSJdLAogI2VuZGlmCkBAIC0zOTAsNyArMzkwLDcg
QEAgaW5wdXQ6bWF0Y2hlcyhbdHlwZT0icGFzc3dvcmQiXSwgW3R5cGU9IgogI2Vsc2UKICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICNlbmRpZgotI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JN
X0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19G
QU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZCiAgICAgYm9yZGVyLXJhZGl1czogNXB4
OwogICAgIGZvbnQ6IDExcHggSGVsdmV0aWNhLCAtd2Via2l0LXBpY3RvZ3JhcGg7CiAgICAgYm9y
ZGVyOiAxcHggc29saWQgIzRjNGM0YzsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbnB1dFt0eXBlPSJk
YXRlIl0gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGRp
c3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSNpZiAh
KGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRl
ZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZ
KQogICAgIHdpZHRoOiAxMGVtOwogI2VuZGlmCiB9CkBAIC00NzgsNyArNDc4LDcgQEAgaW5wdXRb
dHlwZT0iZGF0ZXRpbWUiXSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZW51bGlzdC1idXR0
b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICBvdmVyZmxvdzogaGlk
ZGVuOwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9T
KQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkpCiAgICAgd2lkdGg6IDEwZW07CiAjZW5kaWYKIH0KQEAgLTQ4OSw3ICs0ODks
NyBAQCBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdIHsKICAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lbnVsaXN0LWJ1dHRvbjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4Owog
ICAgIG92ZXJmbG93OiBoaWRkZW47Ci0jaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYm
IFdURl9QTEFURk9STV9JT1MpCisjaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZ
KSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkKICAgICB3aWR0aDogMTBlbTsKICNlbmRpZgog
fQpAQCAtNTAwLDcgKzUwMCw3IEBAIGlucHV0W3R5cGU9Im1vbnRoIl0gewogICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5l
LWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JN
X0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lP
U19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogICAgIHdpZHRoOiAxMGVtOwog
I2VuZGlmCiB9CkBAIC01MTEsMTMgKzUxMSwxMyBAQCBpbnB1dFt0eXBlPSJ0aW1lIl0gewogICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGRpc3BsYXk6IC13ZWJr
aXQtaW5saW5lLWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSNpZiAhKGRlZmluZWQoV1RG
X1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogICAgIHdpZHRo
OiAxMGVtOwogI2VuZGlmCiB9CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspICYmIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRG
T1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogaW5wdXRbdHlwZT0id2Vl
ayJdIHsKICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVudWxpc3QtYnV0dG9uOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGlucHV0W3R5cGU9IndlZWsiXSB7
CiAjZW5kaWYKIAogaW5wdXQ6Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSB7Ci0jaWYgZGVm
aW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChX
VEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKICAgICBt
YXJnaW4tcmlnaHQ6IDE4cHg7CiAjZWxzZQogICAgIG1hcmdpbjogMXB4IDI0cHggMXB4IDRweDsK
QEAgLTYyMCw3ICs2MjAsNyBAQCBpbnB1dDo6LXdlYmtpdC1saXN0LWJ1dHRvbiB7CiAgICAgZmxl
eDogbm9uZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHdpZHRoOiAxNnB4
OwotI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lm
IGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFN
SUxZCiAgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiB3aWR0
aD0iMTYiIGhlaWdodD0iMTYiPjxwb2x5Z29uIHBvaW50cz0iOCAxMS4wMzEsIDQuNSA0Ljk2OSwg
MTEuNSA0Ljk2OSIvPjwvc3ZnPicpOwogICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGhpdCB0aGUg
YnV0dG9uIG9uIGlPUyAqLwogICAgIHBhZGRpbmc6IDdweDsKQEAgLTY0MSw3ICs2NDEsNyBAQCBr
ZXlnZW46Oi13ZWJraXQta2V5Z2VuLXNlbGVjdCB7CiAKIHRleHRhcmVhIHsKICAgICAtd2Via2l0
LWFwcGVhcmFuY2U6IHRleHRhcmVhOwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAm
JiBXVEZfUExBVEZPUk1fSU9TKQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlM
WSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpCiAjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1f
TUFDKSAmJiBXVEZfUExBVEZPUk1fTUFDCiAgICAgY29sb3I6IHRleHQ7CiAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogLWFwcGxlLXN5c3RlbS1jb250cm9sLWJhY2tncm91bmQ7CkBAIC03MDcsNyArNzA3
LDcgQEAgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCwgaW5wdXQ6LXdlYmtpdC1hdQogCiBpbnB1dDpt
YXRjaGVzKFt0eXBlPSJyYWRpbyJdLCBbdHlwZT0iY2hlY2tib3giXSkgewogICAgIG1hcmdpbjog
M3B4IDJweDsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9J
T1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1f
SU9TX0ZBTUlMWQogICAgIGJvcmRlcjogMXB4IHNvbGlkICM0YzRjNGM7CiAgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKICNlbHNlCkBAIC03MzQsNyArNzM0LDcgQEAgaW5wdXQ6bWF0Y2hlcyhb
dHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJzdQogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICBj
dXJzb3I6IGRlZmF1bHQ7CiAgICAgY29sb3I6IEJ1dHRvblRleHQ7Ci0jaWYgIShkZWZpbmVkKFdU
Rl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MpCisjaWYgIShkZWZpbmVkKFdURl9Q
TEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkKICAgICBwYWRk
aW5nOiAycHggNnB4IDNweCA2cHg7CiAgICAgYm9yZGVyOiAycHggb3V0c2V0IEJ1dHRvbkZhY2U7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogQnV0dG9uRmFjZTsKQEAgLTc3OSwxNCArNzc5LDE0IEBA
IGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW0KICAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IHNsaWRlcnRodW1iLWhvcml6b250YWw7CiAgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKICAgICBkaXNwbGF5OiBibG9jazsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1Mp
ICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZ
KSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OwogICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig2NiwgNjYsIDY2KTsKICAgICBwYWRkaW5nOiAw
cHg7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BM
QVRGT1JNX0lPUworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9Q
TEFURk9STV9JT1NfRkFNSUxZCiBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10
aHVtYjphY3RpdmUgewogICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOwogfQpAQCAtODExLDcg
KzgxMSw3IEBAIHNlbGVjdFtkaXNhYmxlZF0+b3B0aW9uIHsKICAgICBjb2xvcjogR3JheVRleHQ7
CiB9CiAKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lP
UykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9S
TV9JT1NfRkFNSUxZKQogaW5wdXQ6bWF0Y2hlcyhbdHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJzdWJt
aXQiXSwgW3R5cGU9InJlc2V0Il0pOmFjdGl2ZSwgaW5wdXRbdHlwZT0iZmlsZSJdOmFjdGl2ZTo6
LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbjphY3RpdmUgewogICAgIGJvcmRlci1z
dHlsZTogaW5zZXQ7CiB9CkBAIC04MjgsNyArODI4LDcgQEAgYXJlYSwgcGFyYW0gewogCiBpbnB1
dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNrYm94Owot
I2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKQorI2lm
ICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19G
QU1JTFkpCiAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICNlbHNlCiAgICAgYm9yZGVyLXJh
ZGl1czogNXB4OwpAQCAtODQwLDcgKzg0MCw3IEBAIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewog
I2VuZGlmCiB9CiAKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9S
TV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZP
Uk1fSU9TX0ZBTUlMWQogaW5wdXRbdHlwZT0icmFkaW8iXSB7CiAgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiByYWRpbzsKICAgICBib3JkZXItcmFkaXVzOiA1MCU7CkBAIC04NzEsMTQgKzg3MSwxNCBA
QCBpbnB1dDptYXRjaGVzKFt0eXBlPSJjaGVja2JveCJdLCBbdHlwZT0iCiB9CiAjZW5kaWYKIAot
I2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKQorI2lm
ICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19G
QU1JTFkpCiBpbnB1dFt0eXBlPSJyYWRpbyJdIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHJh
ZGlvOwogICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiB9CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lmIGRlZmluZWQoV1RG
X1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZCiBzZWxlY3Q6
Zm9jdXMgewogICAgIGJvcmRlci1jb2xvcjogcmdiKDE3LCA0NiwgMTM1KTsKIH0KQEAgLTkwNCw3
ICs5MDQsNyBAQCBpbnB1dFt0eXBlPSJjb2xvciJdOjotd2Via2l0LWNvbG9yLXN3YXRjCiAKIHNl
bGVjdCB7CiAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSNpZiBkZWZpbmVkKFdURl9QTEFU
Rk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9J
T1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgICAg
d29yZC1zcGFjaW5nOiBub3JtYWw7CkBAIC05MzEsNyArOTMxLDcgQEAgc2VsZWN0IHsKICAgICBj
dXJzb3I6IGRlZmF1bHQ7CiB9CiAKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYg
V1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkp
ICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogc2VsZWN0Om1hdGNoZXMoW3NpemVdLCBbbXVs
dGlwbGVdLCBbc2l6ZV1bbXVsdGlwbGVdKSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0
Ym94OwogICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAg
c2xvdCB7CiAgICAgZGlzcGxheTogY29udGVudHM7CiB9CiAKLSNpZiBkZWZpbmVkKFdURl9QTEFU
Rk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9J
T1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogYXBwbGV0LCBlbWJlZCwgb2Jq
ZWN0LCBpbWcgewogICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAw
LCAwKTsKIH0KQEAgLTEyMzgsNyArMTIzOCw3IEBAIGFwcGxldCwgZW1iZWQsIG9iamVjdCwgaW1n
IHsKICNpZiBkZWZpbmVkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICYmIEVOQUJMRV9BVFRB
Q0hNRU5UX0VMRU1FTlQKIGF0dGFjaG1lbnQgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYXR0
YWNobWVudDsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9J
T1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1f
SU9TX0ZBTUlMWQogICAgIGNvbG9yOiAtYXBwbGUtc3lzdGVtLWJsdWU7CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9zdmcuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9zdmcuY3NzCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
c3ZnLmNzcwkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB0ZXh0LCB0c3BhbiwgdGV4
dFBhdGggewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAogfQogCi0jaWYgZGVmaW5lZChXVEZfUExB
VEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1f
SU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKIHRleHQsIHRzcGFuLCB0cmVm
IHsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogbm9uZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJz
ZXJDb250ZXh0KENTU1BhCiAgICAgOiBiYXNlVVJMKGJhc2VVUkwpCiAgICAgLCBtb2RlKG1vZGUp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
RklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdvcmsgb24gaU9T
LiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCiAgICAgLy8gdG8gc2Vl
IGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlzIHRvIGJlIGhh
bmRsZWQgYnk6CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVzdGlnYXRlIEVu
YWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQgVUlXZWJWaWV3
CkBAIC03Miw3ICs3Miw3IEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29u
c3QKICAgICBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmRl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpOwogICAgIHVzZVN5c3RlbUFwcGVhcmFuY2UgPSBkb2N1
bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnVzZVN5c3RlbUFwcGVhcmFuY2UoKSA6IGZh
bHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdvcmsgb24g
aU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCiAgICAgLy8gdG8g
c2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlzIHRvIGJl
IGhhbmRsZWQgYnk6CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVzdGlnYXRl
IEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQgVUlXZWJW
aWV3CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Myw3ICs3ODMsNyBA
QCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFpvb206CiAgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXNldDsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBcHBsZSBzcGVj
aWZpYyBwcm9wZXJ0eS4gVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGlzIHB1
cmVseSB0bwogICAgIC8vIHN1cHBvcnQgY3VzdG9tIFdlYktpdC1iYXNlZCBBcHBsZSBhcHBsaWNh
dGlvbnMuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRvdWNoQ2FsbG91dDoKQEAgLTk1Nyw3
ICs5NTcsNyBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVyCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxhc3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRKdXN0aWZ5OgogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXBwbGUgc3BlY2lmaWMgcHJvcGVydHkuIFRoaXMgd2ls
bCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGlzIHB1cmVseSB0bwogICAgIC8vIHN1cHBvcnQg
Y3VzdG9tIFdlYktpdC1iYXNlZCBBcHBsZSBhcHBsaWNhdGlvbnMuCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRvdWNoQ2FsbG91dDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBzdHJp
bmcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMsIHVuc2lnbmVk
JiBuZXdMZW5ndGgpCiB7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiLXdlYmtpdC1o
eXBoZW5hdGUtbG9jYWxlIikpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgQ1NTUHJvcGVy
dHlJRCBjc3NQcm9wZXJ0eUlEKGNvbnN0CiAgICAgICAgICAgICArK2xlbmd0aDsKICAgICAgICAg
fQogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGJ1ZmZlciwgbmFtZSwgbGVuZ3RoKTsK
ICNlbmRpZgogICAgIH0KQEAgLTM4NTYsNyArMzg1Niw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NT
UHJvcGVydHlQYXJzZXI6OnBhcnMKICAgICAgICAgLy8gd2hldGhlciBpc1RleHRBdXRvc2l6aW5n
RW5hYmxlZCgpIGlzIHRydWUuIFdlIHdhbnQgdG8gZW5hYmxlIHRoaXMgcHJvcGVydHkgb24gaU9T
LCB3aGVuIHNpbXVsYXRpbmcKICAgICAgICAgLy8gYSBpT1MgZGV2aWNlIGluIFNhZmFyaSdzIHJl
c3BvbnNpdmUgZGVzaWduIG1vZGUgYW5kIHdoZW4gb3B0aW9uYWxseSBlbmFibGVkIGluIERSVC9X
VFIuIE90aGVyd2lzZSwKICAgICAgICAgLy8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBpZiAoIW1fY29udGV4dC50ZXh0QXV0b3NpemluZ0VuYWJsZWQpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTMsNyArMTEzLDcgQEAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKFN0cmluZ1Zp
ZXcpOwogQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3KTsKIGJvb2wgaXND
dXN0b21Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmco
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMs
IHVuc2lnbmVkJiBuZXdMZW5ndGgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOSArNDIsOSBAQCBEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpEZXZpY2VNb3Rpb25D
b250CiAgICAgZGV2aWNlTW90aW9uQ2xpZW50KCktPnNldENvbnRyb2xsZXIodGhpcyk7CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZmZXJl
bmNlcyB3aXRoIHRoaXMgY2xhc3MKLS8vIHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhl
c2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisvLyBzbyB0aGF0
IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1NfRkFNSUxZKS1ndWFyZC4KIHZvaWQgRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6c3VzcGVu
ZFVwZGF0ZXMoKQogewogICAgIGlmIChtX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGV2aWNlTW90aW9uQ29udHJvbGxl
cihEZXZpY2VNb3Rpb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5EZXZpY2VNb3Rpb25Db250cm9s
bGVyKCkgPSBkZWZhdWx0OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUgaU9T
IGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzIHdpdGggdGhpcyBjbGFzcwotICAgIC8vIHNvIHRo
YXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRG
T1JNKElPUyktZ3VhcmQuCisgICAgLy8gc28gdGhhdCB3ZSBjYW4gZWl0aGVyIHJlbW92ZSB0aGVz
ZSBtZXRob2RzIG9yIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQuCiAgICAg
dm9pZCBzdXNwZW5kVXBkYXRlcygpOwogICAgIHZvaWQgcmVzdW1lVXBkYXRlcygpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCkK
ICAgICA6IERldmljZUNvbnRyb2xsZXIoY2xpZW50KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUZW1wb3JhcmlseSBhdm9pZCBh
c3NlcnRpbmcgd2hpbGUgT3BlblNvdXJjZSBpcyB1c2luZyBhIGRpZmZlcmVudCBkZXNpZ24uCiAg
ICAgLy8gV2Ugc2hvdWxkIHJlY29uY2lsZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBPcGVuU291
cmNlIGFuZCBpT1Mgc28gdGhhdCB3ZSBjYW4KICAgICAvLyByZW1vdmUgdGhpcyBjb2RlIHBhdGgu
CkBAIC02MCw5ICs2MCw5IEBAIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBEZXZpY2VPcmllbnRh
dGkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV2aWNlT3JpZW50YXRpb25DbGllbnQqPihtX2Ns
aWVudCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNv
dXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKLS8vIHNvIHRoYXQgd2UgY2FuIGVpdGhl
ciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQu
CisvLyBzbyB0aGF0IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3Zl
IHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KIHZvaWQgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpzdXNwZW5kVXBkYXRlcygpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpAQCAtODQs
NyArODQsNyBAQCBSZWZQdHI8RXZlbnQ+IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlCiB7CiAg
ICAgcmV0dXJuIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2
aWNlb3JpZW50YXRpb25FdmVudCwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+bGFzdE9yaWVu
dGF0aW9uKCkpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiBjb25zdCBjaGFyKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPcmllbnRh
dGlvbihEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNv
bmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MK
LSAgICAvLyBzbyB0aGF0IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVt
b3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAgIC8vIHNvIHRoYXQgd2UgY2FuIGVpdGhl
ciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkp
LWd1YXJkLgogICAgIHZvaWQgc3VzcGVuZFVwZGF0ZXMoKTsKICAgICB2b2lkIHJlc3VtZVVwZGF0
ZXMoKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25E
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25EYXRhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9w
ZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCiBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VP
cmllbnRhdGlvbkRhdGE6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNv
bXBhc3NBY2N1cmFjeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25EYXRhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU9yaWVudGF0aW9uRGF0YSk7CiAg
ICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNz
SGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVh
dGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0
YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29s
dXRlKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGE7IH0KICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gYmV0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYmV0YTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBnYW1tYSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2FtbWE7IH0KLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
Y29tcGFzc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhc3NIZWFkaW5nOyB9CiAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcGFzc0FjY3VyYWN5OyB9CiAjZWxzZQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKCkgPSBkZWZhdWx0OwotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIERldmljZU9yaWVudGF0aW9u
RGF0YShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBj
b21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAj
ZWxzZQogICAgIERldmljZU9yaWVudGF0aW9uRGF0YShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxw
aGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2Ft
bWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwogICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBtX2JldGE7CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZ2FtbWE7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1fY29tcGFzc0hlYWRpbmc7CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IG1fY29tcGFzc0FjY3VyYWN5OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FCiAg
ICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmdhbW1hKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RkOjpvcHRpb25hbDxkb3VibGU+IERldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OmNvbXBhc3NIZWFkaW5nKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGJldGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEoKSBjb25z
dDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygpIGNvbnN0OwogICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3koKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgZGVm
aW5pbmcgYW4gRU5BQkxFIG1hY3JvIGZvciBpT1MgZGV2aWNlIG9yaWVudGF0aW9uIGNvZGUgYW5k
L29yIG1vZGlmeWluZwogICAgIC8vIHRoZSBiaW5kaW5ncyBzY3JpcHRzIHRvIHN1cHBvcnQgZ2Vu
ZXJhdGluZyBtb3JlIGNvbXBsaWNhdGVkIGNvbmRpdGlvbmFsIGNvZGUuCi0jaWYgZGVmaW5lZChX
VEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExB
VEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKICAgICBbSW1wbGVt
ZW50ZWRBcz1jb21wYXNzSGVhZGluZ10gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBk
b3VibGU/IHdlYmtpdENvbXBhc3NIZWFkaW5nOwogICAgIFtJbXBsZW1lbnRlZEFzPWNvbXBhc3NB
Y2N1cmFjeV0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGU/IHdlYmtpdENv
bXBhc3NBY2N1cmFjeTsKICAgICB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KG9wdGlv
bmFsIERPTVN0cmluZyB0eXBlID0gIiIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQAogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3Qu
aCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50SU9TLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgpAQCAtNTEzLDcg
KzUxMyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFUKICAgICAs
IG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzTm90aWZ5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bm90
aWZ5SW50ZXJzZWN0aW9uT2JzZXJ2ZXJzVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9sb2Fk
RXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJl
ZCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCiAgICAgLCBtX2RldmljZU1vdGlv
bkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPihtX2Rl
dmljZU1vdGlvbkNsaWVudC5nZXQoKSkpCkBAIC01OTksNyArNTk5LDcgQEAgRG9jdW1lbnQ6On5E
b2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50KTsK
ICAgICBBU1NFUlQobV9pbkRvY3VtZW50U2hhZG93Um9vdHMuaXNFbXB0eSgpKTsKIAotI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fZGV2aWNlTW90
aW9uQ2xpZW50LT5kZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCk7CiAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVk
KCk7CiAjZW5kaWYKQEAgLTI1NTQsNyArMjU1NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRE
ZXZpY2VNb3Rpb25BbmRPcmkKICAgICBpZiAobV9hcmVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlv
blVwZGF0ZXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FyZURldmljZU1vdGlv
bkFuZE9yaWVudGF0aW9uVXBkYXRlc1N1c3BlbmRlZCA9IHRydWU7Ci0jaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZGV2aWNlTW90aW9uQ29u
dHJvbGxlcikKICAgICAgICAgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyLT5zdXNwZW5kVXBkYXRl
cygpOwogICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcikKQEAgLTI1NjcsNyAr
MjU2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZURldmljZU1vdGlvbkFuZE9yaWUKICAgICBp
ZiAoIW1fYXJlRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzU3VzcGVuZGVkKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9hcmVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXNT
dXNwZW5kZWQgPSBmYWxzZTsKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAobV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKQogICAgICAgICBtX2Rl
dmljZU1vdGlvbkNvbnRyb2xsZXItPnJlc3VtZVVwZGF0ZXMoKTsKICAgICBpZiAobV9kZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIpCkBAIC0yNTg0LDcgKzI1ODQsNyBAQCBib29sIERvY3VtZW50
OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250CiAKIHZvaWQgRG9jdW1lbnQ6OnBsYXRmb3JtU3Vz
cGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRDb250
ZW50TW9kaWZpZXJzKCkgPiAwKSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKQEAg
LTM2MDIsNyArMzYwMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NTdXBwb3J0ZWRDb2xvclNj
aGUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29uc3QgU3RyaW5n
JiBmZWF0dXJlcykKIHsKQEAgLTYxMzAsNyArNjEzMCw3IEBAIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciogRG9jdW1lbnQ6OnRha2VBbnkKICAgICByZXR1cm4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJz
LnRha2VBbnkoKTsKIH0KIAotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRG
T1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBEb2N1bWVudDo6ZGV2aWNlTW90aW9u
Q29udHJvbGxlcigpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkV2ZW50VHJhY2tpbmdSZWdpb25zLmgiCiAjZW5k
aWYKIApAQCAtMjIwLDcgKzIyMCw3IEBAIGNsYXNzIFRvdWNoOwogY2xhc3MgVG91Y2hMaXN0Owog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNs
YXNzIERldmljZU1vdGlvbkNsaWVudDsKIGNsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7CiBj
bGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKQEAgLTg4Myw3ICs4ODMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gc3BlY2lmaWVkIGluIGFuIEhUTUwgZmlsZS4KICAgICB2b2lkIHByb2Nlc3NIdHRw
RXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGlz
SW5Eb2N1bWVudEhlYWQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBwcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gQ2FsbGVkIHdoZW4gPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtb3Jp
ZW50YXRpb25zIj4gY2hhbmdlcy4KQEAgLTEyMjUsNyArMTIyNSw3IEBAIHB1YmxpYzoKICNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRJT1MuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGV2aWNlTW90aW9uQ29u
dHJvbGxlciogZGV2aWNlTW90aW9uQ29udHJvbGxlcigpIGNvbnN0OwogICAgIERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlciogZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkgY29uc3Q7CiAj
ZW5kaWYKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRIYXNGcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhib29sKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERldmlj
ZU1vdGlvbkNsaWVudD4gbV9kZXZpY2VNb3Rpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PERldmljZU1vdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnQ+IG1fZGV2aWNlT3JpZW50YXRp
b25DbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVj
dCBvYmpjX29iamVjdCAqaWQ7CiAjZW5kaWYKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICAgICAgVGVsZXBob25lTnVt
YmVyID0gMSA8PCAxMCwKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogaU9TIHNob3VsZCBzaGFyZSB0aGUgc2FtZSBk
aWN0YXRpb24gbWFyayBzeXN0ZW0gd2l0aCB0aGUgb3RoZXIgcGxhdGZvcm1zIDxyZGFyOi8vcHJv
YmxlbS85NDMxMjQ5Pi4KICAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyA9
IDEgPDwgMTEsCiAgICAgICAgIERpY3RhdGlvblJlc3VsdCA9IDEgPDwgMTIsCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG9yaWdpbmFsVGV4dDsKICAgICB9OwogICAg
IHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZXNEYXRhIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRp
dmVzOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhOwogI2VuZGlmCkBAIC0xMDQsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50TWFya2VyKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNBY3RpdmVNYXRjaCk7CiAgICAgRG9jdW1lbnRN
YXJrZXIoTWFya2VyVHlwZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiA9IFN0cmluZygpKTsKICAgICBEb2N1bWVudE1h
cmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
LCBEYXRhJiYpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIERvY3VtZW50TWFya2VyKE1hcmtlclR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbHRlcm5hdGl2ZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOwogI2VuZGlmCiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRPZmZzZXQodW5zaWdu
ZWQgb2Zmc2V0KSB7IG1fZW5kT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgdm9pZCBzaGlmdE9mZnNl
dHMoaW50IGRlbHRhKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgaXNEaWN0YXRpb24oKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbHRlcm5hdGl2ZShjb25z
dCBTdHJpbmcmLCBzaXplX3QgaW5kZXgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBhdXRv
IERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pCiAgICAgICAgIFRlbGVwaG9uZU51bWJlciwKICNlbmRpZgotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBEaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzLAogICAgICAgICBEaWN0YXRpb25SZXN1bHQsCiAjZW5kaWYKQEAg
LTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2V0QWN0aXZlTWF0
CiAgICAgbV9kYXRhID0gaXNBY3RpdmVNYXRjaDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAvLyBGSVhNRTogaU9TIHNob3VsZCBzaGFyZSB0aGUg
c2FtZSBkaWN0YXRpb24gbWFyayBzeXN0ZW0gd2l0aCB0aGUgb3RoZXIgcGxhdGZvcm1zIDxyZGFy
Oi8vcHJvYmxlbS85NDMxMjQ5Pi4KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRUZXh0TWEK
ICAgICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSogcmFuZ2Us
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0
cjxpZD4mIG1ldGFkYXRhKQogewpAQCAtMzAyLDcgKzMwMiw3IEBAIFZlY3RvcjxGbG9hdFJlY3Q+
IERvY3VtZW50TWFya2VyQ29udHJvbGwKIAogc3RhdGljIGJvb2wgc2hvdWxkSW5zZXJ0QXNTZXBh
cmF0ZU1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWFya2VyKQogewotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChuZXdNYXJrZXIudHlw
ZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzIHx8
IG5ld01hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjo6c2hpZnRNYXJrCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gbGlzdC0+c2l6ZSgpOyApIHsKICAgICAgICAgUmVuZGVyZWREb2N1bWVudE1hcmtlciYgbWFy
a2VyID0gbGlzdC0+YXQoaSk7CiAgICAgICAgIC8vIEZJWE1FOiBIb3cgY2FuIHRoaXMgcG9zc2li
bHkgYmUgaU9TLXNwZWNpZmljIGNvZGU/Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIGludCB0YXJnZXRTdGFydE9mZnNldCA9IG1hcmtlci5zdGFy
dE9mZnNldCgpICsgZGVsdGE7CiAgICAgICAgIGludCB0YXJnZXRFbmRPZmZzZXQgPSBtYXJrZXIu
ZW5kT2Zmc2V0KCkgKyBkZWx0YTsKICAgICAgICAgaWYgKHRhcmdldFN0YXJ0T2Zmc2V0ID49IG5v
ZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIHx8IHRhcmdldEVuZE9mZnNldCA8PSAwKSB7CkBAIC02
ODUsNyArNjg1LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnNoaWZ0TWFyawog
ICAgICAgICAgICAgQVNTRVJUKChpbnQpbWFya2VyLnN0YXJ0T2Zmc2V0KCkgKyBkZWx0YSA+PSAw
KTsKICAgICAgICAgICAgIG1hcmtlci5zaGlmdE9mZnNldHMoZGVsdGEpOwogICAgICAgICAgICAg
ZGlkU2hpZnRNYXJrZXIgPSB0cnVlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIC8vIEZJWE1FOiBJbnNlcnRp
bmcgdGV4dCBpbnNpZGUgYSBEb2N1bWVudE1hcmtlciBkb2VzIG5vdCBncm93IHRoZSBtYXJrZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRNYXJr
ZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1hcmtlcjo6RGF0YSYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJvb2wg
YWN0aXZlTWF0Y2gpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgYWRkTWFya2VyKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUs
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnBy
ZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERp
Y3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UqLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zKTsKICAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1h
cmtlcihSYW5nZSosIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgdm9pZCBFbGVt
ZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91cwogICAgIH0KIAogICAgIFNlbGVjdGlvblJl
dmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbDsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGb2N1c2luZyBh
IGZvcm0gZWxlbWVudCB0cmlnZ2VycyBhbmltYXRpb24gaW4gVUlLaXQgdG8gc2Nyb2xsIHRvIHRo
ZSByaWdodCBwb3NpdGlvbi4KICAgICAvLyBDYWxsaW5nIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZSgp
IHdvdWxkIGdlbmVyYXRlIGFuIHVubmVjZXNzYXJ5IGNhbGwgdG8gU2Nyb2xsVmlldzo6c2V0U2Ny
b2xsUG9zaXRpb24oKSwKICAgICAvLyB3aGljaCB3b3VsZCBqdW1wIHVzIGFyb3VuZCBkdXJpbmcg
dGhpcyBhbmltYXRpb24uIFNlZSA8cmRhcjovL3Byb2JsZW0vNjY5OTc0MT4uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBOb2RlOjp+Tm9kZSgpCiAKICAg
ICBkb2N1bWVudCgpLmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpICYmICghQVNTRVJUX0RJU0FCTEVEIHx8
IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKSkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykpCiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKSkgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighZG9jdW1lbnQtPnRvdWNoRXZlbnRMaXN0ZW5lcnNDb250YWluKCp0aGlzKSk7CiAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudC0+dG91Y2hFdmVudEhh
bmRsZXJzQ29udGFpbigqdGhpcykpOwpAQCAtMzc1LDE0ICszNzUsMTQgQEAgdm9pZCBOb2RlOjp3
aWxsQmVEZWxldGVkRnJvbShEb2N1bWVudCYgZAogICAgIGlmIChoYXNFdmVudFRhcmdldERhdGEo
KSkgewogICAgICAgICBkb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcywg
RXZlbnRIYW5kbGVyUmVtb3ZhbDo6QWxsKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBkb2N1bWVu
dC5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMsIEV2ZW50SGFuZGxlclJlbW92YWw6OkFs
bCk7CiAjZW5kaWYKICAgICAgICAgZG9jdW1lbnQuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIo
KnRoaXMsIEV2ZW50SGFuZGxlclJlbW92YWw6OkFsbCk7CiAjZW5kaWYKICAgICB9CiAKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkb2N1bWVudC5yZW1vdmVUb3VjaEV2
ZW50SGFuZGxlcigqdGhpcywgRXZlbnRIYW5kbGVyUmVtb3ZhbDo6QWxsKTsKICNlbmRpZgogCkBA
IC0yMDgzLDcgKzIwODMsNyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1
bWVuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaEV2ZW50TGlzdGVu
ZXJzOyArK2kpIHsKICAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92ZVRvdWNoRXZlbnRI
YW5kbGVyKCp0aGlzKTsKICAgICAgICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFRvdWNoRXZlbnRI
YW5kbGVyKCp0aGlzKTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1Mp
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgICAgIG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7CiAgICAg
ICAgICAgICBuZXdEb2N1bWVudC5hZGRUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMpOwogI2VuZGlm
CkBAIC0yMTAyLDcgKzIxMDIsNyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChE
b2N1bWVuCiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlf
QVNTRVJUSU9OUykKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2xkRG9jdW1lbnQudG91Y2hFdmVudExpc3Rl
bmVyc0NvbnRhaW4oKnRoaXMpKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tighb2xkRG9jdW1lbnQudG91Y2hFdmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykpOwogI2VuZGlm
CkBAIC0yMTI2LDcgKzIxMjYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0
ZW5lcihOCiAgICAgZWxzZSBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRU
eXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFu
ZGxlcigqdGFyZ2V0Tm9kZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAm
JiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50KQogICAgICAgICB0YXJnZXRO
b2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5pbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVy
c0NvdW50KCk7CiAKQEAgLTIxNDEsNyArMjE0MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlB
ZGRFdmVudExpc3RlbmVyKE4KICAgICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUo
ZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50
TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVf
RVZFTlRTKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChldmVudE5hbWVzKCkuaXNH
ZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCkBAIC0yMTY4LDcgKzIxNjgsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lCiAgICAgZWxzZSBpZiAoZXZlbnROYW1l
cygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodGFyZ2V0Tm9k
ZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LnNjcm9sbEV2ZW50KQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
LT5kZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CiAKQEAgLTIxODIsNyArMjE4
Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmUKICAgICBpZiAo
ZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwog
I2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAmJiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogICAgIGlmIChldmVudE5hbWVzKCkuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlw
ZSkpCkBAIC0yNDc0LDcgKzI0NzQsNyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQmIGV2CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigp
KQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFdoZWVsRXZlbnRIYW5k
bGVyKHN0YXJ0Tm9kZSwgZG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpKTsKLSNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2
ZW50KSAmJiBldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShldmVudFR5cGUpKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgICAgICB3
aGlsZSAocmVuZGVyZXIgJiYgKCFpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikgfHwgIWRvd25jYXN0
PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KSkpCkBAIC0yNDkxLDcgKzI0OTEsNyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQmIGV2CiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQogewog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlIGlPUyBjb2RlIHBhdGggZGlmZmVyZW50IGZyb20gdGhl
IG5vbi1pT1MgY29kZSBwYXRoPwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFpczxFbGVtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoZG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpLmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpKQpAQCAtMjUwMyw3ICsyNTAzLDcgQEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
CiB7CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGUgaU9TIGNvZGUgcGF0aCBkaWZmZXJlbnQgZnJv
bSB0aGUgbm9uLWlPUyBjb2RlIHBhdGg/Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKCkgfHwgaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuY2xpY2tFdmVudCk7CiAjZWxzZQogICAgIGlmICghaXM8RWxlbWVudD4oKnRoaXMpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIlNlbGVjdGlvblJlY3QuaCIKICNlbmRpZgogCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCB2b2lk
IFJhbmdlOjphYnNvbHV0ZVRleHRRdWFkcyhWZWN0b3I8RmxvCiAgICAgICAgICppbkZpeGVkID0g
YWxsRml4ZWQgPyBFbnRpcmVseUZpeGVkUG9zaXRpb24gOiAoc29tZUZpeGVkID8gUGFydGlhbGx5
Rml4ZWRQb3NpdGlvbiA6IE5vdEZpeGVkUG9zaXRpb24pOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpbnRlcnZhbHNTdWZmaWNp
ZW50bHlPdmVybGFwKGludCBzdGFydEEsIGludCBlbmRBLCBpbnQgc3RhcnRCLCBpbnQgZW5kQikK
IHsKICAgICBpZiAoZW5kQSA8PSBzdGFydEEgfHwgZW5kQiA8PSBzdGFydEIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gVHJhbnNm
b3JtLWZyaWVuZGx5CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYnNvbHV0ZVRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdl
SW5GaXhlZFBvc2l0aW9uKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEZs
b2F0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nUmVjdChSZXNwZWN0Q2xpcHBpbmdGb3JUZXh0UmVjdHMg
PSBSZXNwZWN0Q2xpcHBpbmdGb3JUZXh0UmVjdHM6Ok5vKSBjb25zdDsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgY29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFVuaW9uSW50ZXJp
b3JMaW5lcyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdQogICAgIGFic29sdXRlUG9pbnQu
bW92ZUJ5KHZpZXctPmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBMYXlvdXRSZWN0
IHZpc2libGVSZWN0OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CiAjZWxz
ZQogICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9ydEFy
Z3VtZW50CiAgICAgICAgIGFyZ3VtZW50cy5tYXhab29tID0gZmluZFNjYWxlVmFsdWUoZG9jdW1l
bnQsIGtleSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGtleSwgInVzZXItc2NhbGFibGUiKSkKICAgICAgICAgYXJndW1lbnRzLnVzZXJab29tID0g
ZmluZEJvb2xlYW5WYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJ
Z25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5IGJlIHJl
bW92ZWQKICAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGluIHRoZSB3
ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKICAgICBlbnVtIFR5cGUgewog
ICAgICAgICAvLyBUaGVzZSBhcmUgb3JkZXJlZCBpbiBpbmNyZWFzaW5nIGltcG9ydGFuY2UuCiAg
ICAgICAgIEltcGxpY2l0LAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBQbHVnaW5Eb2N1bWVudCwKICAgICAgICAgSW1hZ2VEb2N1bWVudCwKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAg
dm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjp1bmFwcGx5KCkKICAgICAvLyBMb3cgbGV2ZWwg
b3BlcmF0aW9ucywgbGlrZSBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxheW91
dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCB1c2UgdGhlbSBwZXJmb3Jt
IG9uZQogICAgIC8vIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9yIHRoZSBjcmVhdGlvbiBv
ZiBWaXNpYmxlUG9zaXRpb25zKS4KICAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2hlcmUgc2hvdWxkIGlQaG9uZSBjb2RlIGRlYWwgd2l0
aCB0aGUgY29tcG9zaXRpb24/CiAgICAgLy8gU2luY2UgZWRpdGluZyBjb21tYW5kcyBkb24ndCBz
YXZlL3Jlc3RvcmUgdGhlIGNvbXBvc2l0aW9uLCB1bmRvaW5nIHdpdGhvdXQgZml4aW5nCiAgICAg
Ly8gdXAgdGhlIGNvbXBvc2l0aW9uIHdpbGwgbGVhdmUgYSBzdGFsZSwgaW52YWxpZCBjb21wb3Np
dGlvbiwgYXMgaW4gPHJkYXI6Ly9wcm9ibGVtLzY4MzE2Mzc+LgpAQCAtNzcwLDcgKzc3MCw3IEBA
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW4KICAgICByZXBsYWNlVGV4
dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwogICAgIFJlZlB0
cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZz
ZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobWFya2VyLmlzRGljdGF0aW9uKCkpIHsK
ICAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBt
YXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFya2VyLmFsdGVybmF0aXZlcygp
LCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0NTAsNyAr
MTQ1MCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAv
LyBhbnl0aGluZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBlbXB0
eSBwYXJhZ3JhcGggY2FuIGhhdmUgc3R5bGUKICAgICAvLyB0b28sIDxkaXY+PGI+PGJyPjwvYj48
L2Rpdj4gZm9yIGV4YW1wbGUuICBTYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZlIGl0IGxh
dGVyLgogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlSW5FbXB0eVBhcmFncmFwaDsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzdGFy
dE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlICYmIHByZXNlcnZlU3R5
bGUpIHsKICNlbHNlCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZW5kT2ZQYXJh
Z3JhcGhUb01vdmUgJiYgcHJlc2VydmVTdHlsZSAmJiBpc1JpY2hseUVkaXRhYmxlUG9zaXRpb24o
ZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDExICsxOTgsMTEgQEAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlYwogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAs
IG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV93YXNJZ25vcmluZ1NlbGVjdGlvbkNoYW5nZXMo
ZnJhbWUuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9hcHBlYXJhbmNlVXBkYXRlc1dl
cmVFbmFibGVkKGZyYW1lLnNlbGVjdGlvbigpLmlzVXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQoKSkK
ICNlbmRpZgogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmIChvcHRpb25zICYgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uRW5hYmxlQXBwZWFyYW5j
ZVVwZGF0ZXMpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFVwZGF0ZUFwcGVhcmFuY2VF
bmFibGVkKHRydWUpOwogI2VuZGlmCkBAIC0yMjYsNyArMjI2LDcgQEAgVGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlOjp+VGVtcG9yYXJ5U2VsZQogICAgICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5zZXRJ
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2VzLCByZXZl
YWxTZWxlY3Rpb24pOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtX29wdGlvbnMgJiBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25F
bmFibGVBcHBlYXJhbmNlVXBkYXRlcykKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkuc2V0
VXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQobV9hcHBlYXJhbmNlVXBkYXRlc1dlcmVFbmFibGVkKTsK
ICNlbmRpZgpAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgRWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQo
VGV4dEV2ZW50JiAKIAogICAgIGlmIChldmVudC5pc1Bhc3RlKCkpIHsKICAgICAgICAgaWYgKGV2
ZW50LnBhc3RpbmdGcmFnbWVudCgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgICAgICBpZiAoY2xpZW50KCktPnBlcmZvcm1zVHdvU3RlcFBh
c3RlKGV2ZW50LnBhc3RpbmdGcmFnbWVudCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgRWRpdG9yOjpFZGl0b3IoRnJhbWUmIGZy
YW1lKQogICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVsbENoZWNrZXI+
KGZyYW1lKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fZWRpdG9yVUlV
cGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKQotI2lm
IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywg
JkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMpCiAjZW5kaWYKIHsKQEAg
LTExODYsNyArMTE4Niw3IEBAIHZvaWQgRWRpdG9yOjpjbGVhcigpCiAgICAgbV9vbGRTZWxlY3Rp
b25Gb3JFZGl0b3JVSVVwZGF0ZSA9IHsgfTsKICAgICBtX2VkaXRvclVJVXBkYXRlVGltZXIuc3Rv
cCgpOwogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZP
Uk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1l
ci5zdG9wKCk7CiAgICAgbV9kZXRlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlcy5jbGVhcigpOwog
I2VuZGlmCkBAIC0xMjU2LDcgKzEyNTYsNyBAQCBib29sIEVkaXRvcjo6aW5zZXJ0VGV4dFdpdGhv
dXRTZW5kaW5nVGV4CiAgICAgICAgICAgICAvLyBSZXZlYWwgdGhlIGN1cnJlbnQgc2VsZWN0aW9u
CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGVkaXRlZEZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkp
CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBlZGl0ZWRGcmFtZS0+cGFnZSgpKSB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVh
bE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWU7CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICBT
ZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWw7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIEVkaXRv
cjo6cGFzdGViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgRWRpdG9yOjpjb3B5SW1hZ2UoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9pZCBFZGl0
b3I6OnRvZ2dsZVVuZGVybGluZSgpCiAKIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSAmJiAKICAgICAgICAgYmFzZVdyaXRpbmdEaXJl
Y3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpID09IGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTkzMyw3ICsxOTMzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZwogICAgICAgICB9CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgY2xpZW50KCktPnN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29u
dGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKTsKICNlbmRpZgogCkBAIC0yMDEwLDcgKzIwMTAsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nCiAgICAgICAgIH0KICAg
ICB9CiAKLSNpZiBQTEFURk9STShJT1MpICAgICAgICAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAgICAgICAgCiAgICAgY2xpZW50KCktPnN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50
Q2hhbmdlTm90aWZpY2F0aW9ucygpOwogI2VuZGlmCiB9CkBAIC0yMDQ1LDcgKzIwNDUsNyBAQCB2
b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygpCiAgICAgdGV4dENoZWNrZXIoKS0+bGVhcm5Xb3Jk
KHRleHQpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKQogewpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhibwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFN0cmluZyBFZGl0b3I6Om1p
c3NwZWxsZWRXb3JkQXRDYXJldE9yUmFuZ2UoTm9kZSogY2xpY2tlZE5vZGUpIGNvbnN0CiB7CkBA
IC0yMzQzLDcgKzIzNDMsNyBAQCB2b2lkIEVkaXRvcjo6c2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKICNl
bmRpZgogICAgIGNsaWVudCgpLT5zaG93U3BlbGxpbmdVSSh0cnVlKTsKQEAgLTIzNzQsNyArMjM3
NCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKIHsKICAgICBS
ZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0ZXJUeXBp
bmcpOwogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKICAgICBPcHRpb25TZXQ8VGV4
dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9uczsKQEAgLTI1MTcsNyArMjUxNyw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKICAgICAKIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc2VsZWN0aW9uIGFs
cmVhZHkgZXhwYW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIC8vIE1pZ2h0IGJlIG5pY2Ug
dG8gYXNzZXJ0IHRoYXQgaGVyZS4KICAgICAKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWEKICAgICAgICAgVU5VU0VEX1BBUkFNKHNl
bGVjdGlvbik7CiAgICAgICAgIFVOVVNFRF9QQVJBTShjaGVja1NwZWxsaW5nKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogYm9vbCBFZGl0b3I6
OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSogbm9kZSkgY29uc3QKQEAgLTI4NDYsNyAr
Mjg0Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGUKIAogdm9p
ZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBBU1NFUlQodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKTsKIAogICAgIGlmIChy
ZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpCkBAIC0yODY1LDcgKzI4NjUsNyBAQCB2b2lkIEVkaXRv
cjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoCiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7Ci0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogCkBAIC0y
OTcyLDcgKzI5NzIsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
CiAgICAgICAgIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsCiAgICAgICAg
IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uLAogICAgICAgICBEb2N1bWVu
dE1hcmtlcjo6U3BlbGxpbmcsCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsCiAjZW5kaWYKICAgICB9
OwpAQCAtMzAwNyw3ICszMDA3LDcgQEAgdm9pZCBFZGl0b3I6OnJldmVhbFNlbGVjdGlvbkFmdGVy
RWRpdGluZwogICAgIGlmIChtX2lnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNl
bGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVh
bFVwVG9NYWluRnJhbWU7CiAjZWxzZQogICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9k
ZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbDsKQEAgLTMwMjIsNyArMzAyMiw3IEBAIHZv
aWQgRWRpdG9yOjpzZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGIKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gaWdub3JlOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBTaG91bGQgc3VwcHJl
c3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBhIGNvbXBvc2l0aW9uIGNo
YW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IAogICAgIGlmICghaWdub3JlKQogICAg
ICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCksIHsgfSk7CkBAIC0zMTcxLDcgKzMxNzEsNyBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlU2Vs
ZWN0aW9uQWZ0ZXJDb21tYW5kCiAgICAgLy8gY2hhbmdlIHRoZSBjYXJldCdzIERPTSBwb3NpdGlv
biAoWyJoZWxsbyIsIDBdKS4gSW4gdGhlc2Ugc2l0dWF0aW9ucyB0aGUgYWJvdmUgRnJhbWVTZWxl
Y3Rpb246OnNldFNlbGVjdGlvbiBjYWxsCiAgICAgLy8gZG9lcyBub3QgY2FsbCBFZGl0b3JDbGll
bnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKSwgd2hpY2gsIG9uIHRoZSBNYWMsIHNlbmRz
IHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBhbmQKICAgICAvLyBzdGFydHMgYSBuZXcg
a2lsbCByaW5nIHNlcXVlbmNlLCBidXQgd2Ugd2FudCB0byBkbyB0aGVzZSB0aGluZ3MgKG1hdGNo
ZXMgQXBwS2l0KS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBGSVhNRTogU2hvdWxkIHN1cHByZXNzIHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0
aW9ucyBkdXJpbmcgYSBjb21wb3NpdGlvbiBjaGFuZ2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzM4
ODMwPgogICAgIGlmIChtX2lnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAgIHJldHVybjsK
QEAgLTMyNDksNyArMzI0OSw3IEBAIEludFJlY3QgRWRpdG9yOjpmaXJzdFJlY3RGb3JSYW5nZShS
YW5nZSoKIAogYm9vbCBFZGl0b3I6OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVj
dGlvbiwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdAogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2Zy
YW1lLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogI2VuZGlmCkBAIC0zNTIwLDcgKzM1MjAsNyBAQCB2b2lkIEVkaXRvcjo6c2VsZWN0aW9u
V2lsbENoYW5nZSgpCiAKIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVj
dGlvbk9wdGlvbj4gb3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU2hvdWxkIHN1cHByZXNzIHNlbGVjdGlvbiBjaGFu
Z2Ugbm90aWZpY2F0aW9ucyBkdXJpbmcgYSBjb21wb3NpdGlvbiBjaGFuZ2UgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzM4ODMwPiAKICAgICBpZiAobV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKQogICAg
ICAgICByZXR1cm47CkBAIC0zNTI5LDcgKzM1MjksNyBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihjCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigmbV9mcmFtZSk7CiAKLSNpZiBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
c2hvdWxkRGV0ZWN0VGVsZXBob25lTnVtYmVycygpKQogICAgICAgICBtX3RlbGVwaG9uZU51bWJl
ckRldGVjdGlvblVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogI2VuZGlmCkBAIC0zNTQ1
LDcgKzM1NDUsNyBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjCiAg
ICAgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogfQogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgRWRpdG9y
OjpzaG91bGREZXRlY3RUZWxlcGhvbmVOdW1iZXJzKCkKIHsKQEAgLTM2NDEsNyArMzY0MSw3IEBA
IHZvaWQgRWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXIKICAgICB9CiB9CiAKLSNl
bmRpZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBFZGl0b3I6OnVwZGF0ZUVkaXRvclVJTm93SWZTY2hl
ZHVsZWQoKQogewpAQCAtMzY2NSwxMCArMzY2NSwxMCBAQCB2b2lkIEVkaXRvcjo6ZWRpdG9yVUlV
cGRhdGVUaW1lckZpcmVkKCkKICAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS5z
ZXR0aW5ncygpLmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgICAgIGlmIChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2lu
ZykgewogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5ld1N0YXJ0KG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBuZXdBZGphY2VudFdvcmRzID0g
VmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChuZXdTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRh
cnkpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwogI2Vsc2UK
LSAgICAgICAgICAgIC8vIElmIHRoaXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZPUk0oSU9T
KSBjb2RlIGNvdWxkIGJlIHJlbW92ZWQ6CisgICAgICAgICAgICAvLyBJZiB0aGlzIGJ1ZyBnZXRz
IGZpeGVkLCB0aGlzIFBMQVRGT1JNKElPU19GQU1JTFkpIGNvZGUgY291bGQgYmUgcmVtb3ZlZDoK
ICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MjU5NjExPiBXb3JkIGJvdW5kYXJ5IGNv
ZGUgb24gaVBob25lIGdpdmVzIGRpZmZlcmVudCByZXN1bHRzIHRoYW4gZGVza3RvcAogICAgICAg
ICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKICAg
ICAgICAgICAgIFVDaGFyMzIgYyA9IG5ld1N0YXJ0LmNoYXJhY3RlckJlZm9yZSgpOwpAQCAtMzY3
OCw3ICszNjc4LDcgQEAgdm9pZCBFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCgpCiAg
ICAgICAgICAgICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG5ld0FkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0
aW9uKHN0YXJ0T2ZXb3JkKG5ld1N0YXJ0LCBzdGFydFdvcmRTaWRlKSwgZW5kT2ZXb3JkKG5ld1N0
YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgaWYgKGlzQ29udGlu
dW91c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQpCiAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRT
ZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKG5ld1N0YXJ0KSwgZW5k
T2ZTZW50ZW5jZShuZXdTdGFydCkpOwogICAgICAgICB9CkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBi
b29sIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoCiAKIE9wdGlvblNldDxUZXh0
Q2hlY2tpbmdUeXBlPiBFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhjb25zdCBO
b2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4
dENoZWNraW5nT3B0aW9ucykKIHsKLSNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQp
ICYmICFQTEFURk9STShJT1MpCisjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG9ubHlBbGxvd3NUZXh0UmVwbGFjZW1l
bnQgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaG9zdCA9IHJvb3RFZGl0YWJsZUVsZW1lbnQuc2hh
ZG93SG9zdCgpKQogICAgICAgICBvbmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50ID0gaXM8SFRNTElu
cHV0RWxlbWVudD4oaG9zdCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmhvc3QpLmlz
U3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KCk7CkBAIC0zNzczLDcgKzM3
NzMsNyBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpyZXNvCiAKICAgICBi
b29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpOwogICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0
ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKICAgICBib29sIHNob3VsZENo
ZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgdGV4dENoZWNr
aW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICNlbmRp
ZgpAQCAtMzc4Myw3ICszNzgzLDcgQEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IEVkaXRv
cjo6cmVzbwogICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAgICAgICBjaGVja2luZ1R5cGVz
LmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24p
CiAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24p
OwogICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQpAQCAtMzgwNiw3ICszODA2LDcg
QEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IEVkaXRvcjo6cmVzbwogICAgICAgICAgICAg
Y2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0K
ICNlbmRpZgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICAgICByZXR1cm4gY2hlY2tpbmdUeXBlczsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmPEZyYW1lPiBtX2ZyYW1lOwogICAgIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25P
cHRpb24+IG1fb3B0aW9uczsKICAgICBib29sIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2Vz
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wg
bV9hcHBlYXJhbmNlVXBkYXRlc1dlcmVFbmFibGVkOwogI2VuZGlmCiAgICAgc3RkOjpvcHRpb25h
bDxWaXNpYmxlU2VsZWN0aW9uPiBtX3NlbGVjdGlvblRvUmVzdG9yZTsKQEAgLTE3MSw3ICsxNzEs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY29weVVSTChjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CiAgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6
OlVSTCBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlm
CiAKQEAgLTIwNiwxNCArMjA2LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZvcm1hdHRp
bmdBbmRTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1v
cmVUeXBpbmcoKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxS
aW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlLCBFZGl0QWN0aW9uID0g
RWRpdEFjdGlvbjo6RGVsZXRlKTsKICAgICB2b2lkIGNsZWFyVGV4dCgpOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CiAjZW5kaWYKIApAQCAtMjk3LDEyICsyOTcsMTIg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVu
YWJsZWQoKTsKIAogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4sIFJlZlB0cjxSYW5nZT4mJiBzcGVsbGlu
Z1JhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRy
PFJhbmdlPiYmIGdyYW1tYXJSYW5nZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKICNlbmRpZgogICAgIHZv
aWQgY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
Zyk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRC
ZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAjZW5kaWYKICAgICB2b2lkIHNob3dTcGVsbGluZ0d1
ZXNzUGFuZWwoKTsKQEAgLTM3MCw3ICszNzAsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGVkUmFuZ2UoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0
cmluZyYsIEVsZW1lbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CkBAIC00
NzUsMTMgKzQ3NSwxMyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKICAgICBTdHJp
bmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgY2FuQ29w
eUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKTsKICAgICB2b2lkIHRha2VGaW5kU3RyaW5nRnJv
bVNlbGVjdGlvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICNlbmRpZgogCkBAIC00
OTMsNyArNDkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzY2FuU2VsZWN0aW9u
Rm9yVGVsZXBob25lTnVtYmVycygpOwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYg
ZGV0ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2RldGVjdGVk
VGVsZXBob25lTnVtYmVyUmFuZ2VzOyB9CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDIsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUgeyBm
YWxzZSB9OwogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBzaG91bGREZXRlY3RUZWxlcGhvbmVOdW1iZXJz
KCk7CiAgICAgdm9pZCBzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiwgY29uc3Qg
U3RyaW5nVmlldyYsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgbWFya2VkUmFuZ2VzKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw3IEBAIHN0cnVjdCBGb250QXR0cmlidXRlcyB7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5TRm9udD4gZm9udDsKLSNlbGlmIFBMQVRGT1JNKElP
UykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFVJRm9udD4gZm9u
dDsKICNlbmRpZgogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjgsNyArNjgsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q29sb3IuaCIKQEAgLTEzNSw3ICsxMzUsNyBAQCBGcmFtZVNlbGVjdGlvbjo6RnJhbWVTZWxlY3Rp
b24oRnJhbWUqIGZyCiAgICAgLCBtX3Nob3VsZFNob3dCbG9ja0N1cnNvcihmYWxzZSkKICAgICAs
IG1fcGVuZGluZ1NlbGVjdGlvblVwZGF0ZShmYWxzZSkKICAgICAsIG1fYWx3YXlzQWxpZ25DdXJz
b3JPblNjcm9sbFdoZW5SZXZlYWxpbmdTZWxlY3Rpb24oZmFsc2UpCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9jYXJldEJsaW5rcyh0cnVlKQogI2VuZGlmCkBAIC00MzYsNyAr
NDM2LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZQogCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVEYXRhRGV0ZWN0b3JzRm9yU2VsZWN0aW9uKCkKIHsKLSNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5zY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVt
YmVycygpOwogI2VuZGlmCiB9CkBAIC0xOTg3LDcgKzE5ODcsNyBAQCBib29sIEZyYW1lU2VsZWN0
aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVj
dGlvbigqcmFuZ2UsIGFmZmluaXR5KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0aGlzIGNoZWNrIG9u
bHkgaW4gaU9TPwogICAgIGlmIChuZXdTZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIGlubGluZSBzdGF0aWMgYm9vbCBzaG91bGRT
dG9wQmxpbmtpbmdEdWUKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KCFtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAg
LTIyNTMsNyArMjI1Myw3IEBAIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGcmFtZVNl
bGUKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uQ2hhbmdl
Q2FsbGJhY2tzRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKQEAgLTIz
NzAsNyArMjM3MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbihTZWwK
ICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNTRVJUKHN0
YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYm
IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXll
ciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkp
IHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KSB7CiAgICAgICAg
ICAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0cnVlKTsK
QEAgLTIzOTcsNyArMjM5Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkZy
b21Ob24KICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBkZXNpZ25Nb2RlIGlz
IG9uIGZvciB0aGlzIGRvY3VtZW50KS4KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJh
bWUtPmRvY3VtZW50KCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpLmNhcmV0
QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgaWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50LT5oYXNF
ZGl0YWJsZVN0eWxlKCkgfHwgY2FyZXRCcm93c2luZykpCiAgICAgICAgIHJldHVybjsKQEAgLTI0
MTIsNyArMjQxMiw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkZyb21Ob24K
IAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uQ2hhbmdl
Q2FsbGJhY2tzRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKQEAgLTI0
ODAsNyArMjQ4MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNob3dUcmVlRm9yVGhpcygpIGMK
IAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHZvaWQgRnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvRWxlbWVudENvbnRhaW5pbmdD
YXJldFNlbGVjdGlvbigpCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVsZW1lbnRSYW5n
ZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOwpAQCAtMjg5NCw3ICsyODk0LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRDb2xvcihjb25zdAogICAgICAgICAgICAgaW52YWxpZGF0
ZUNhcmV0UmVjdCgpOwogICAgIH0KIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJDb2xvci5oIgogI2VuZGlmCiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZUNvbnRhaW5pbmdD
YXJldFNlbGVjdGlvbigpIGNvbnN0OwpAQCAtMzYyLDcgKzM2Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3BlbmRpbmdTZWxlY3Rpb25VcGRhdGUgOiAxOwogICAgIGJvb2wgbV9hbHdheXNBbGln
bkN1cnNvck9uU2Nyb2xsV2hlblJldmVhbGluZ1NlbGVjdGlvbiA6IDE7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fdXBkYXRlQXBwZWFy
YW5jZUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9jYXJldEJsaW5rcyA6IDE7CiAgICAgQ29sb3Ig
bV9jYXJldENvbG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjZW5kaWYKIApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIElu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoCiAgICAgbV9ub2RlLT5pbnNlcnREYXRh
KG1fb2Zmc2V0LCBtX3RleHQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXaHkgd291bGQgcmVhcHBseSBiZSBpT1Mtc3BlY2lm
aWM/CiB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGRv
VW5hcHBseSgpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Y2xvc2VUeXBp
bmcoRnJhbWUqIGYKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmNsb3NlVHlwaW5nKCk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3Bl
bkZvck1vcmVUeXBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdT
ZWxlY3Rpb24pCiB7CiAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoKmZyYW1lKSkgewpA
QCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGUKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwg
ZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzID0gc3RhcnQucHJldmlvdXMoKTsKICAgICBpZiAocHJldmlvdXMuaXNOb3ROdWxsKCkpIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChwcmV2aW91cywgTGVmdFdvcmRJZk9uQm91
bmRhcnkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDIgPSBzdGFydE9mV29yZChzdGFydCwg
TGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBpZiAocDEgIT0gcDIpIHsKQEAgLTQ3MSw3
ICs0NzEsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlCiAgICAg
ICAgICAgICBmcmFtZS5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb21tYW5kVHlwZSk7Ci0gICAgICAgIC8vIElmIHRo
aXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZPUk0oSU9TKSBjb2RlIGNvdWxkIGJlIHJlbW92
ZWQ6CisgICAgICAgIC8vIElmIHRoaXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgY29kZSBjb3VsZCBiZSByZW1vdmVkOgogICAgICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNzI1OTYxMT4gV29yZCBib3VuZGFyeSBjb2RlIG9uIGlQaG9uZSBnaXZlcyBkaWZmZXJlbnQg
cmVzdWx0cyB0aGFuIGRlc2t0b3AKICAgICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNpZGUgPSBM
ZWZ0V29yZElmT25Cb3VuZGFyeTsKICAgICAgICAgVUNoYXIzMiBjID0gcHJldmlvdXMuY2hhcmFj
dGVyQWZ0ZXIoKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwMiA9IHN0YXJ0T2ZXb3Jk
KHN0YXJ0LCBzdGFydFdvcmRTaWRlKTsKICAgICAgICAgaWYgKHAxICE9IHAyKQogICAgICAgICAg
ICAgZnJhbWUuZWRpdG9yKCkubWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKHAxLCBl
bmRpbmdTZWxlY3Rpb24oKSwgZmFsc2UpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfQogfQogCkBAIC03MzUsNyArNzM1LDcg
QEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleAogICAgIAogICAgIEFT
U0VSVCghc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpOwogICAgIGlmIChzZWxlY3Rpb25Ub0Rl
bGV0ZS5pc05vbmUoKSkgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciB0aGlzIGJ1ZzoKICAgICAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzQ2NTM3NTU+IFVJS2l0IHRleHQgd2lkZ2V0cyBzaG91bGQgdXNlIFdlYktp
dCBlZGl0aW5nIEFQSSB0byBtYW5pcHVsYXRlIHRleHQKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKQEAgLTg0Miw3ICs4NDIsNyBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAgICAgCiAgICAgQVNTRVJU
KCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7CiAgICAgaWYgKHNlbGVjdGlvblRvRGVsZXRl
LmlzTm9uZSgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIHRoaXMgYnVnOgogICAgICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNDY1Mzc1NT4gVUlLaXQgdGV4dCB3aWRnZXRzIHNob3VsZCB1c2UgV2ViS2l0IGVk
aXRpbmcgQVBJIHRvIG1hbmlwdWxhdGUgdGV4dAogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwpAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wKICAgICB0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRGVsZXRlU2VsZWN0aW9uKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgRnJpZW5kbHlFZGl0Q29tbWFuZCA6IHB1YmxpYyBF
ZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRpbmdTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoRG9jdW1lbnQmLCBP
cHRpb25zKTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3Rl
ZENvbnRlbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBjbG9zZVR5cGluZyhGcmFtZSop
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRp
YyB2b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JN
b3JlVHlwaW5nKEZyYW1lKiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogI2VuZGlmCiAKQEAg
LTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBlKFRleHRD
b21wb3NpdGlvblR5cGUgdHlwZSkgeyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0KICAgICB2
b2lkIHNldElzQXV0b2NvbXBsZXRpb24oYm9vbCBpc0F1dG9jb21wbGV0aW9uKSB7IG1faXNBdXRv
Y29tcGxldGlvbiA9IGlzQXV0b2NvbXBsZXRpb247IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uT25MYXN0
SW5zZXJ0Q29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0
ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRl
dGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7
CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqZGV0ZWN0Q29udGVu
dEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JUeXBlcywg
TlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5CZVByZXNlbnRl
ZEJ5RGF0YURldGVjdG9ycyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBpc0RhdGFEZXRlY3RvckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgZGF0YURldGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZXRhaW5QdHI8RERBY3Rpb25Db250
ZXh0PiBEYXRhRGV0ZWN0aW9uCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgRGF0YURldGVjdGlv
bjo6Y2FuQmVQcmVzZW50ZWRCeURhdGFEZXRlY3RvcnMoY29uc3QgVVJMJiB1cmwpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0Nv
Y29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1
dGVkU3RyaW5nU1BJLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFk
b3dDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCAiQ29s
b3JDb2NvYS5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+
CiAjZW5kaWYKIApAQCAtMzksNyArMzksNyBAQCBSZXRhaW5QdHI8TlNTaGFkb3c+IEZvbnRTaGFk
b3c6OmNyZWF0ZVNoCiB7CiAjaWYgVVNFKEFQUEtJVCkKICAgICBhdXRvIHNoYWRvdyA9IGFkb3B0
TlMoW05TU2hhZG93IG5ld10pOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW1BBTDo6Z2V0X1VJS2l0X05T
U2hhZG93Q2xhc3MoKSBuZXddKTsKICNlbmRpZgogICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6
cGxhdGZvcm1Db2xvcihjb2xvcildOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIFJhbmdlOwogZW51bSBjbGFzcyBJbmNsdWRlSW1hZ2VzSW5BdHRyaWJ1dGVk
U3RyaW5nIHsgWWVzLCBObyB9OwogICAgIAogV0VCQ09SRV9FWFBPUlQgTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdlJik7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFdFQkNPUkVfRVhQT1JUIE5TQXR0cmlidXRl
ZFN0cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmLCBJbmNsdWRl
SW1hZ2VzSW5BdHRyaWJ1dGVkU3RyaW5nID0gSW5jbHVkZUltYWdlc0luQXR0cmlidXRlZFN0cmlu
Zzo6WWVzKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDcgQEAKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAKQEAgLTExOSw3ICsxMTksNyBAQCBT
T0ZUX0xJTktfQ0xBU1MoVUlGb3VuZGF0aW9uLCBOU1RleHRUYWIpCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBVSUZvbnRU
cmFpdFBsYWluICAgICAgID0gMHgwMDAwMDAwMCwKQEAgLTI4MSw3ICsyODEsNyBAQCAtICh2b2lk
KXNldFRhYlN0b3BzOihOU0FycmF5ICopYXJyYXk7CiAKIEBpbnRlcmZhY2UgTlNUZXh0QXR0YWNo
bWVudCA6IE5TT2JqZWN0CiAtIChpZClpbml0V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVy
ICopZmlsZVdyYXBwZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kczsKIEBwcm9wZXJ0eShyZXRhaW4s
IG5vbmF0b21pYykgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXI7CiAjZW5kaWYKQEAgLTQ5Niw3
ICs0OTYsNyBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKkhUTUxDb252ZXJ0ZXI6OmNvbnZlCiAgICAg
cmV0dXJuIFtbX2F0dHJTdHIgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLy8gUmV0dXJucyB0aGUgZm9udCB0
byBiZSB1c2VkIGlmIHRoZSBOU0ZvbnRBdHRyaWJ1dGVOYW1lIGRvZXNuJ3QgZXhpc3QKIHN0YXRp
YyBOU0ZvbnQgKldlYkRlZmF1bHRGb250KCkKIHsKQEAgLTUxNiw3ICs1MTYsNyBAQCBzdGF0aWMg
TlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiBzdGF0aWMgUGxhdGZvcm1Gb250ICpfZm9udEZvck5h
bWVBbmRTaXplKE5TU3RyaW5nICpmb250TmFtZSwgQ0dGbG9hdCBzaXplLCBOU011dGFibGVEaWN0
aW9uYXJ5ICpjYWNoZSkKIHsKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQgPSBbY2FjaGUgb2JqZWN0
Rm9yS2V5OmZvbnROYW1lXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoZm9udCkKICAgICAgICAgcmV0dXJuIFtmb250IGZvbnRXaXRoU2l6ZTpz
aXplXTsKIApAQCAtNTMwLDcgKzUzMCw3IEBAIHN0YXRpYyBQbGF0Zm9ybUZvbnQgKl9mb250Rm9y
TmFtZUFuZFNpemUKICAgICBmb250ID0gW2ZvbnRNYW5hZ2VyIGZvbnRXaXRoRmFtaWx5OmZvbnRO
YW1lIHRyYWl0czowIHdlaWdodDowIHNpemU6c2l6ZV07CiAjZW5kaWYKICAgICBpZiAoIWZvbnQp
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
TlNBcnJheSAqYXZhaWxhYmxlRmFtaWx5TmFtZXMgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZmFtaWx5
TmFtZXNdOwogI2Vsc2UKICAgICAgICAgTlNBcnJheSAqYXZhaWxhYmxlRmFtaWx5TmFtZXMgPSBb
Zm9udE1hbmFnZXIgYXZhaWxhYmxlRm9udEZhbWlsaWVzXTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBz
dGF0aWMgUGxhdGZvcm1Gb250ICpfZm9udEZvck5hbWVBbmRTaXplCiAgICAgICAgIHdoaWxlIChk
aXZpZGluZ1JhbmdlLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgIE5TU3RyaW5nICpmYW1pbHlO
YW1lID0gW2ZvbnROYW1lIHN1YnN0cmluZ1RvSW5kZXg6ZGl2aWRpbmdSYW5nZS5sb2NhdGlvbl07
CiAgICAgICAgICAgICBpZiAoW2F2YWlsYWJsZUZhbWlseU5hbWVzIGNvbnRhaW5zT2JqZWN0OmZh
bWlseU5hbWVdKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmZhY2VOYW1lID0gW2ZvbnROYW1lIHN1YnN0cmlu
Z0Zyb21JbmRleDooZGl2aWRpbmdSYW5nZS5sb2NhdGlvbiArIGRpdmlkaW5nUmFuZ2UubGVuZ3Ro
KV07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZmFtaWx5TWVtYmVyRmFjZU5hbWVzID0gW1Bs
YXRmb3JtRm9udENsYXNzIGZvbnROYW1lc0ZvckZhbWlseU5hbWU6ZmFtaWx5TmFtZV07CiAgICAg
ICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZmFtaWx5TWVtYmVyRmFjZU5hbWUgaW4gZmFtaWx5
TWVtYmVyRmFjZU5hbWVzKSB7CkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIFBsYXRmb3JtRm9u
dCAqX2ZvbnRGb3JOYW1lQW5kU2l6ZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZm9u
dCkKICAgICAgICAgZm9udCA9IFtQbGF0Zm9ybUZvbnRDbGFzcyBzeXN0ZW1Gb250T2ZTaXplOnNp
emVdOwogI2Vsc2UKQEAgLTg0Myw3ICs4NDMsNyBAQCBib29sIEhUTUxDb252ZXJ0ZXJDYWNoZXM6
OmZsb2F0UHJvcGVydHlWCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJpbmcgKl9OU0ZpcnN0UGF0
aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TU2VhcmNoUGF0aERpcmVjdG9yeSBkaXJlY3Rvcnks
IE5TU2VhcmNoUGF0aERvbWFpbk1hc2sgZG9tYWluTWFzaywgQk9PTCBleHBhbmRUaWxkZSkKIHsK
ICAgICBOU0FycmF5ICphcnJheSA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5z
KGRpcmVjdG9yeSwgZG9tYWluTWFzaywgZXhwYW5kVGlsZGUpOwpAQCAtOTAwLDcgKzkwMCw3IEBA
IHN0YXRpYyBpbmxpbmUgTlNTaGFkb3cgKl9zaGFkb3dGb3JTaGFkb3cKICAgICAgICAgICAgICAg
ICAgICAgc3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgICAgICAgICAgICAgIENH
RmxvYXQgc2hhZG93SGVpZ2h0ID0gW1tzaGFkb3dTdHlsZSBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNN
YWtlUmFuZ2UoTlNNYXhSYW5nZShzcGFjZVJhbmdlKSwgc2Vjb25kUmFuZ2UubG9jYXRpb24gLSBO
U01heFJhbmdlKHNwYWNlUmFuZ2UpKV0gZmxvYXRWYWx1ZV07CiAgICAgICAgICAgICAgICAgLy8g
SSBkb24ndCBrbm93IHdoeSB3ZSBoYXZlIHRoaXMgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28g
cGxhdGZvcm1zLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldC5oZWlnaHQgPSBzaGFkb3dIZWlnaHQ7CiAjZWxz
ZQogICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldC5oZWlnaHQgPSAtc2hhZG93SGVpZ2h0OwpA
QCAtMTAyOSw3ICsxMDI5LDcgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnQoRWxlbWVudCYg
ZWxlbQogTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0
cnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5h
Z2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwogI2VuZGlmCiAKQEAgLTEw
NTIsNyArMTA1Miw3IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHQK
ICAgICBpZiAoZm9udFNpemUgPD0gMC4wKQogICAgICAgICBmb250U2l6ZSA9IGRlZmF1bHRGb250
U2l6ZTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoYWN0dWFsRm9udCkKICAgICAgICAgZm9udCA9IFthY3R1YWxGb250IGZvbnRXaXRo
U2l6ZTpmb250U2l6ZV07CiAjZWxzZQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgTlNEaWN0aW9uYXJ5
ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dAogICAgICAgICBTdHJpbmcgZm9udFN0eWxlID0g
X2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U3R5
bGUpOwogICAgICAgICBpZiAoZm9udFN0eWxlID09ICJpdGFsaWMiIHx8IGZvbnRTdHlsZSA9PSAi
b2JsaXF1ZSIpIHsKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250ID0gZm9u
dDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
ICAgIGZvbnQgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZm9udFdpdGhGYW1pbHlOYW1lOltmb250IGZh
bWlseU5hbWVdIHRyYWl0czpVSUZvbnRUcmFpdEl0YWxpYyBzaXplOltmb250IHBvaW50U2l6ZV1d
OwogI2Vsc2UKICAgICAgICAgICAgIGZvbnQgPSBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6Zm9u
dCB0b0hhdmVUcmFpdDpOU0l0YWxpY0ZvbnRNYXNrXTsKQEAgLTEwODIsNyArMTA4Miw3IEBAIE5T
RGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHQKICAgICAgICAgaWYgKGZvbnRX
ZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IGZvbnRXZWlnaHQudG9JbnQoKSA+PSA3MDApIHsK
ICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUgd2VpZ2h0IHByb3Blcmx5IHVzaW5nIE5TRm9udE1h
bmFnZXIKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250ID0gZm9udDsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgIGZv
bnQgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZm9udFdpdGhGYW1pbHlOYW1lOltmb250IGZhbWlseU5h
bWVdIHRyYWl0czpVSUZvbnRUcmFpdEJvbGQgc2l6ZTpbZm9udCBwb2ludFNpemVdXTsKICNlbHNl
CiAgICAgICAgICAgICBmb250ID0gW2ZvbnRNYW5hZ2VyIGNvbnZlcnRGb250OmZvbnQgdG9IYXZl
VHJhaXQ6TlNCb2xkRm9udE1hc2tdOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgTlNEaWN0aW9uYXJ5
ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dAogICAgICAgICAgICAgaWYgKCFmb250KQogICAg
ICAgICAgICAgICAgIGZvbnQgPSBvcmlnaW5hbEZvbnQ7CiAgICAgICAgIH0KLSNpZiAhUExBVEZP
Uk0oSU9TKSAvLyBJSkI6IE5vIHNtYWxsIGNhcHMgc3VwcG9ydCBvbiBpT1MKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgLy8gSUpCOiBObyBzbWFsbCBjYXBzIHN1cHBvcnQgb24gaU9TCiAgICAg
ICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50Q2FwcykgPT0gInNtYWxsLWNhcHMiKSB7CiAgICAgICAgICAgICAvLyA/Pz8g
c3ludGhlc2l6ZSBzbWFsbC1jYXBzIGlmIFtmb250IGlzRXF1YWw6b3JpZ2luYWxGb250XQogICAg
ICAgICAgICAgTlNGb250ICpvcmlnaW5hbEZvbnQgPSBmb250OwpAQCAtMTM4NSw3ICsxMzg1LDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZQogICAgICAgICAgICAg
W2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgfQogICAgIH0KLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZmlsZVdyYXBwZXIgJiYg
IW5vdEZvdW5kKSB7CiAgICAgICAgIGZpbGVXcmFwcGVyID0gZmlsZVdyYXBwZXJGb3JVUkwoZGF0
YVNvdXJjZSwgdXJsKTsKICAgICAgICAgaWYgKHVzZVBsYWNlaG9sZGVyICYmIGZpbGVXcmFwcGVy
ICYmIFtbW1tmaWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV0gcGF0aEV4dGVuc2lvbl0gbG93
ZXJjYXNlU3RyaW5nXSBoYXNQcmVmaXg6QCJodG0iXSkKQEAgLTE0MTYsNyArMTQxNiw3IEBAIEJP
T0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGUKICAgICBpZiAoZmlsZVdyYXBw
ZXIgfHwgdXNlUGxhY2Vob2xkZXIpIHsKICAgICAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0g
W19hdHRyU3RyIGxlbmd0aF07CiAgICAgICAgIFJldGFpblB0cjxOU1RleHRBdHRhY2htZW50PiBh
dHRhY2htZW50ID0gYWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5p
dFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBlcl0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBmbG9hdCB2ZXJ0aWNhbEFsaWduID0gMC4wOwog
ICAgICAgICBfY2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbik7CiAgICAgICAgIGF0dGFjaG1lbnQu
Z2V0KCkuYm91bmRzID0gQ0dSZWN0TWFrZSgwLCAodmVydGljYWxBbGlnbiAvIDEwMCkgKiBlbGVt
ZW50LmNsaWVudEhlaWdodCgpLCBlbGVtZW50LmNsaWVudFdpZHRoKCksIGVsZW1lbnQuY2xpZW50
SGVpZ2h0KCkpOwpAQCAtMTQyNSwxMiArMTQyNSwxMiBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlCiAgICAgICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01h
a2VSYW5nZSh0ZXh0TGVuZ3RoLCAwKTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyczsKICAg
ICAgICAgaWYgKGZpbGVXcmFwcGVyKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgIGlmIChpZ25vcmVPcmllbnRhdGlvbikKICAgICAg
ICAgICAgICAgICBbYXR0YWNobWVudCBzZXRJZ25vcmVzT3JpZW50YXRpb246WUVTXTsKICNlbmRp
ZgogICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAgICAgW2F0dGFjaG1lbnQgcmVsZWFzZV07CiAgICAgICAgICAgICBO
U1VSTCAqbWlzc2luZ0ltYWdlVVJMID0gW193ZWJLaXRCdW5kbGUoKSBVUkxGb3JSZXNvdXJjZTpA
Im1pc3NpbmdfaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJ0aWZmIl07CiAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1pc3NpbmdJbWFnZVVSTCAhPSBuaWwsICJVbmFibGUgdG8gZmluZCBt
aXNzaW5nX2ltYWdlLnRpZmYhIik7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lkIEhUTUxDb252
ZXJ0ZXI6Ol9wcm9jZXNzTWV0YUVsZW1lbnRXCiAgICAgICAgICAgICBbX2RvY3VtZW50QXR0cnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TQ29udmVydGVkRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgICAg
ICAgICAgW19kb2N1bWVudEF0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2ZXJzaW9uTnVtYmVyXSBmb3JLZXk6TlNDb2NvYVZlcnNpb25Eb2N1bWVudEF0dHJpYnV0ZV07
CiAgICAgICAgIH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB9IGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW0AiR2VuZXJhdG9yIiBjb21wYXJlOm5h
bWUgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0pIHsKICAgICAgICAga2V5ID0gTlNH
ZW5lcmF0b3JEb2N1bWVudEF0dHJpYnV0ZTsKICNlbmRpZgpAQCAtMTY4Niw3ICsxNjg2LDcgQEAg
dm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc01ldGFFbGVtZW50VwogICAgICAgICAgICAgICAg
IFtfZG9jdW1lbnRBdHRycyBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6TlNNb2RpZmljYXRpb25UaW1l
RG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICB9CiAgICAgfQotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0g
W0AiRGlzcGxheU5hbWUiIGNvbXBhcmU6bmFtZSBvcHRpb25zOk5TQ2FzZUluc2Vuc2l0aXZlU2Vh
cmNoXSB8fCBOU09yZGVyZWRTYW1lID09IFtAIkluZGV4VGl0bGUiIGNvbXBhcmU6bmFtZSBvcHRp
b25zOk5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoXSkKICAgICAgICAga2V5ID0gTlNEaXNwbGF5TmFt
ZURvY3VtZW50QXR0cmlidXRlOwogICAgIGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW0Aicm9i
b3RzIiBjb21wYXJlOm5hbWUgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0pIHsKQEAg
LTE4ODAsNyArMTg4MCw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVs
ZW0KICAgICAgICAgICAgIE5TVVJMICp1cmwgPSBlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogICAgICAg
ICAgICAgaWYgKCF1cmwpCiAgICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93ZWJfVVJMV2l0
aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hh
cmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVsYXRpdmVUb1VS
TDpfYmFzZVVSTF07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBOTzsKICNlbHNlCiAgICAg
ICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBZRVM7CkBAIC0yMzk0LDcgKzIzOTQs
NyBAQCBOb2RlKiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNoZUFuY2VzdG9yCiAgICAgcmV0dXJu
IGNvbW1vbkFuY2VzdG9yOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyRm9yVVJMKERv
Y3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQogewpAQCAtMjQ1Nyw3ICsyNDU3
LDcgQEAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbQogICAgIHJldHVy
biBjb252ZXJ0ZXIuY29udmVydCgpOwogfQogICAgIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFRoaXMgZnVuY3Rpb24gdXNlcyBUZXh0SXRlcmF0
b3IsIHdoaWNoIG1ha2VzIG9mZnNldHMgaW4gaXRzIHJlc3VsdCBjb21wYXRpYmxlIHdpdGggSFRN
TCBlZGl0aW5nLgogTlNBdHRyaWJ1dGVkU3RyaW5nICplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zy
b21SYW5nZShSYW5nZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXNJbkF0dHJpYnV0ZWRTdHJpbmcgaW5j
bHVkZU9yU2tpcEltYWdlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjcsMjMgKzY3LDIzIEBACiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5oIgogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKQogQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKCkKIC0gKE5TU3RyaW5n
ICopX2h0bWxEb2N1bWVudEZyYWdtZW50U3RyaW5nOihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0
cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdCBzdWJyZXNvdXJjZXM6KE5TQXJyYXkgKiopc3Vi
cmVzb3VyY2VzOwogQGVuZAotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJLaXRMZWdhY3kpCiAjZWxp
ZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFdlYktpdCwg
V2ViS2l0TGVnYWN5KQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkKKyNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEz
MDApCiBTT0ZUX0xJTksoV2ViS2l0TGVnYWN5LCBfV2ViQ3JlYXRlRnJhZ21lbnQsIHZvaWQsIChX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBX
ZWJDb3JlOjpGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KSwgKGRvY3VtZW50LCBzdHJpbmcs
IHJlc3VsdCkpCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKIAogc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmli
dXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKQEAgLTEwOCw3ICsxMDgsNyBA
QCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmliCiAgICAgICAgIFtleGNs
dWRlZEVsZW1lbnRzIGFkZE9iamVjdDpAIm9iamVjdCJdOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZSA9IEAiRXhjbHVkZWRFbGVt
ZW50cyI7CiAjZW5kaWYKIApAQCAtNzQwLDcgKzc0MCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFVSTChjb25zdCBVUkwKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIHNlbGVjdGlv
biBhbmQgY2hhbmdpbmcgdGhlIGJlaGF2aW9yLgogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuY2xp
ZW50KCktPmhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkpIHsKICAgICAgICAgaWYgKHJlYWRQ
bGFpblRleHQoWyhOU1VSTCAqKXVybCBhYnNvbHV0ZVN0cmluZ10pKQpAQCAtNzQ5LDcgKzc0OSw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwKIAogICAgIGlmIChb
KE5TVVJMICopdXJsIGlzRmlsZVVSTF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIGF1
dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvIGFuY2hv
ciA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGF0aW9uQ29tbWFuZElPUy5oIgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpAQCAtNzksNCArNzks
NCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNv
bW1hbmRJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTIsNCArNTIsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0Vk
aXRvcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTM5MCw0ICszOTAs
NCBAQCB2b2lkIEVkaXRvcjo6ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VyCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVT
ZWxlY3Rpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RnJhbWVTZWxlY3Rpb25NYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHkKICAgICAg
ICAgICAgIGNhY2hlLT5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKG1fc2VsZWN0aW9u
LnN0YXJ0KCksIGludGVudCwgbV9zZWxlY3Rpb24pOwogICAgIH0KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gaWYgem9vbSBmZWF0dXJlIGlz
IGVuYWJsZWQsIGluc2VydGlvbiBwb2ludCBjaGFuZ2VzIHNob3VsZCB1cGRhdGUgdGhlIHpvb20K
ICAgICBpZiAoIVVBWm9vbUVuYWJsZWQoKSB8fCAhbV9zZWxlY3Rpb24uaXNDYXJldCgpKQogICAg
ICAgICByZXR1cm47CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlm
eUFjY2Vzc2liaWxpdHkKICAgICBDR1JlY3QgY2dWaWV3UmVjdCA9IE5TUmVjdFRvQ0dSZWN0KG5z
Vmlld1JlY3QpOwogCiAgICAgVUFab29tQ2hhbmdlRm9jdXMoJmNnVmlld1JlY3QsICZjZ0NhcmV0
UmVjdCwga1VBWm9vbUZvY3VzVHlwZUluc2VydGlvblBvaW50KTsKLSNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxNb2Jp
bGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgfHwgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2VuZGlmCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBDYWNoZWRGcmFtZUJhc2U6OnJlc3RvcmUo
KQogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2RvY3VtZW50ID09
IGZyYW1lLmRvY3VtZW50KCkpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2lzTWFpbkZyYW1lKSB7CiAgICAgICAgIGZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1l
KCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUm
IGZyYW1lKQogICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVk
RnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVyICVw
XG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgp
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKG1faXNNYWluRnJhbWUpIHsKICAgICAgICAgaWYgKERPTVdpbmRvdyogZG9tV2lu
ZG93ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIGlmIChkb21XaW5k
b3ctPnNjcm9sbEV2ZW50TGlzdGVuZXJDb3VudCgpICYmIGZyYW1lLnBhZ2UoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2VuZGlmCiAKQEAg
LTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSYgcGFnZSkKICAg
ICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIGRvbid0IHN1cHBvcnQgcGFnZXMgdy8gZnJhbWVzIGlu
IHRoZSBiL2YgY2FjaGUuICBUaGlzIG1heSBuZWVkIHRvIGJlIHR3ZWFrZWQgd2hlbiB3ZSBhZGQg
c3VwcG9ydCBmb3IgdGhhdC4KICAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gcGFnZS5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlm
IChFbGVtZW50KiBlbGVtZW50ID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpKSB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgZm9jdXNlZCBub2RlcyBjaGFuZ2luZyBzY3JvbGwgcG9zaXRpb24gd2hl
biByZXN0b3JpbmcgZnJvbSB0aGUgY2FjaGUKICAgICAgICAgLy8gYXMgaXQgY2FuIGNhdXNlIHVn
bHkganVtcHMgYmVmb3JlIHdlIG1hbmFnZSB0byByZXN0b3JlIHRoZSBjYWNoZWQgcG9zaXRpb24u
CiAgICAgICAgIHBhZ2UubWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuc3VwcHJlc3NTY3JvbGxpbmco
KTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSYgcGFn
ZSkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZUZvY3VzQXBwZWFy
YW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmUpOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoZnJhbWVWaWV3KQogICAg
ICAgICAgICAgZnJhbWVWaWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcoaGFkUHJvaGliaXRzU2Ny
b2xsaW5nKTsKICAgICAgICAgcGFnZS5tYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXN0b3JlU2Ny
b2xsaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgSGlzdG9yeUl0ZW06Okhp
c3RvcnlJdGVtKGNvbnN0IEhpCiAgICAgLCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIoaXRlbS5t
X2RvY3VtZW50U2VxdWVuY2VOdW1iZXIpCiAgICAgLCBtX2Zvcm1Db250ZW50VHlwZShpdGVtLm1f
Zm9ybUNvbnRlbnRUeXBlKQogICAgICwgbV9wcnVuaW5nUmVhc29uKFBydW5pbmdSZWFzb246Ok5v
bmUpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBt
X29ic2N1cmVkSW5zZXRzKGl0ZW0ubV9vYnNjdXJlZEluc2V0cykKICAgICAsIG1fc2NhbGUoaXRl
bS5tX3NjYWxlKQogICAgICwgbV9zY2FsZUlzSW5pdGlhbChpdGVtLm1fc2NhbGVJc0luaXRpYWwp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNlbmRpZgogCkBA
IC0xNzYsNyArMTc2LDcgQEAgcHVibGljOiAKICAgICBpbnQgc2hvd1RyZWVXaXRoSW5kZW50KHVu
c2lnbmVkIGluZGVudExldmVsKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3NlZENvbnRlbnRSZWN0OyB9CiAgICAgdm9pZCBzZXRF
eHBvc2VkQ29udGVudFJlY3QoRmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCkgeyBtX2V4cG9z
ZWRDb250ZW50UmVjdCA9IGV4cG9zZWRDb250ZW50UmVjdDsgfQogCkBAIC0yNjgsNyArMjY4LDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gbV9jYWNoZWRQYWdl
OwogICAgIFBydW5pbmdSZWFzb24gbV9wcnVuaW5nUmVhc29uOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmxvYXRSZWN0IG1fZXhwb3NlZENvbnRl
bnRSZWN0OwogICAgIEludFJlY3QgbV91bm9ic2N1cmVkQ29udGVudFJlY3Q7CiAgICAgRmxvYXRT
aXplIG1fbWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcg
KzIwMyw3IEBAIHN0YXRpYyBib29sIGNhbkNhY2hlUGFnZShQYWdlJiBwYWdlKQogICAgICAgICBs
b2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6aXNEaXNhYmxlZEtleSgpKTsKICAgICAgICAgaXND
YWNoZWFibGUgPSBmYWxzZTsKICAgICB9Ci0jaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikg
JiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6aXNBY3Rp
dmVBdCgmcGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIGlzIHVzaW5nIERldmljZU1v
dGlvbiIpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UoZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZGV2aWNlTW90aW9u
S2V5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0
LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlTWlzcwogICAgIHJldHVy
biBlbGVtZW50KCktPmlzUmVxdWlyZWQoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAog
ewogICAgIEFTU0VSVChlbGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMyArNTEsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNl
Y29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsK
ICAgICBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgRGF0
ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCA9IDA7CiAjZW5kaWYKICAgICBkb3Vi
bGUgdmFsdWVBc0RhdGUoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Q29sb3JJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBi
b29sIENvbG9ySW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgCiBib29sIENvbG9ySW5wdXRU
eXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAogewogICAgIEFT
U0VSVChlbGVtZW50KCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChlbGVtZW50KCktPmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEhUTUxBcHBsZXRF
bGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0o
Y3JlYXRlUGx1Z2lucyk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBJdCdzIHNhZG5lc3MgdGhhdCB3
ZSBoYXZlIHRoaXMgc3BlY2lhbCBjYXNlIGhlcmUuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBI
VE1MQXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KENyZQogICAgIEFTU0VSVChmcmFtZSk7CiAK
ICAgICByZW5kZXJlci0+c2V0V2lkZ2V0KGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigp
LmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQocm91bmRlZEludFNpemUoTGF5b3V0U2l6ZShjb250ZW50
V2lkdGgsIGNvbnRlbnRIZWlnaHQpKSwgKnRoaXMsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIH0KIAogYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6Y2FuRW1iZWRKYXZhKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICBib29sIHNob3VsZFNlbGVjdE9u
TW91c2VEb3duKCkgZmluYWwgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBpbnQgZGVmYXVsdEhlaWdo
dCA9IDE1MDsKIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBwaXhlbHMs
IGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQKIC8vIHJlYWNoZXMgdGhhdCBs
aW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0g
ZGltZW5zaW9ucywKIC8vIGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMg
c2l6ZS4gVGhlIG1heGltdW0gY2FudmFzIHNpemUgaXMgaW4gZGV2aWNlIHBpeGVscy4KLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNvbnN0IHVuc2lnbmVkIG1h
eENhbnZhc0FyZWEgPSA0MDk2ICogNDA5NjsKICNlbHNlCiBjb25zdCB1bnNpZ25lZCBtYXhDYW52
YXNBcmVhID0gMTYzODQgKiAxNjM4NDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW5saW5l
IHNpemVfdCBtYXhBY3RpdmVQaXhlbE1lbW9yCiAgICAgc3RhdGljIHNpemVfdCBtYXhQaXhlbE1l
bW9yeTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgbWF4UGl4ZWxNZW1vcnkgPSByYW1TaXplKCkgLyA0OwogI2Vsc2UK
ICAgICAgICAgbWF4UGl4ZWxNZW1vcnkgPSBzdGQ6Om1heChyYW1TaXplKCkgLyA0LCAyMTUxICog
TUIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudAogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUxpbmVC
cmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0LCBD
U1NWYWx1ZU5vbmUpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQqKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzA0LDcgKzcwNCw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGUKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IFRoaXMgaXMgYSB3
b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzcyNTE1OD4uIFdlIHNob3VsZCBmaW5kIGEg
YmV0dGVyIHBsYWNlIGZvciB0aGUgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGxvZ2ljLgogYm9vbCBI
VE1MSW1hZ2VFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0NCw3ICsxNjQ0LDcg
QEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1N0ZXBwYWJsZSgpIGNvbgogICAgIHJldHVybiBt
X2lucHV0VHlwZS0+aXNTdGVwcGFibGUoKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogRGF0ZUNvbXBvbmVudHM6OlR5cGUgSFRNTElucHV0RWxlbWVu
dDo6ZGF0ZVR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZGF0ZVR5cGUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNlbmRpZgogCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNUaW1lRmllbGQoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzV2Vla0ZpZWxkKCkgY29uc3Q7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEYXRlQ29tcG9uZW50
czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcg
KzEyMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmgiCiAjZW5kaWYKQEAgLTE2NCw3ICsxNjQsNyBAQAogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5kaWYKIApA
QCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6
YXQKICAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1l
ZGlhRWxlbWVudFNlc3Npb246Ok92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5D
b250ZW50KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoIWRvY3VtZW50LnNldHRpbmdzKCkudmlkZW9QbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmUoKSAmJiAhZG9jdW1lbnQuc2V0dGluZ3MoKS5hdWRpb1BsYXliYWNrUmVxdWly
ZXNVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgIC8vIFJlbGF4IFJlcXVpcmVVc2VyR2VzdHVyZUZv
ckZ1bGxzY3JlZW4gd2hlbiB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSBhbmQgYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUgaXMgbm90IHNldDoKICAgICAgICAgbV9tZWRp
YVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6
UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CkBAIC03MDYsNyArNzA2LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bQogICAgIGlmIChtX2lzV2FpdGlu
Z1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQuYWRkTWVkaWFDYW5TdGFydExp
c3RlbmVyKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMp
OwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOwogI2VuZGlmCkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp1bnJlZ2lzdGVyV2l0aERvYwogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFD
YW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRo
aXMpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBkb2N1bWVudC51bnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CiAgICAg
ZG9jdW1lbnQudW5yZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNr
cyh0aGlzKTsKICNlbmRpZgpAQCAtMzY3OSw3ICszNjc5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTE1lZGlhRWxlbWVudDo6c2V0VgogICAgIGlmICghKHZvbHVtZSA+PSAwICYmIHZvbHVtZSA8
PSAxKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3Zv
bHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTM4NDYsNyArMzg0Niw3
IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpuZXh0U2NhblJhdGUoKQogICAgIGRvdWJsZSBy
YXRlID0gc3RkOjptaW4oU2Nhbk1heGltdW1SYXRlLCBmYWJzKHBsYXliYWNrUmF0ZSgpICogMikp
OwogICAgIGlmIChtX3NjYW5EaXJlY3Rpb24gPT0gQmFja3dhcmQpCiAgICAgICAgIHJhdGUgKj0g
LTE7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmF0
ZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KHJhdGUsIG1pbkZhc3RSZXZlcnNlUmF0ZSgpKSwgbWF4RmFz
dEZvcndhcmRSYXRlKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIHJhdGU7CkBAIC00NjgzLDcgKzQ2
ODMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAgLy8g
dGhlIG1lZGlhIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgogICAgIGlm
IChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKSB7CiAgICAgICAgIG1fbmV4dENoaWxk
Tm9kZVRvQ29uc2lkZXIgPSAmc291cmNlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFMb2FkaW5nUGVy
bWl0dGVkKCkpCiAjZW5kaWYKICAgICAgICAgICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKQEAg
LTUwNTQsNyArNTA1NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNV
cGQKICAgICAgICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQobV9tZWRpYUtleXMtPmNk
bUluc3RhbmNlKCkpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9wbGF5ZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUpOwpAQCAtNTI4
NCw3ICs1Mjg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogewog
ICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbmx5IHRoZSB1c2VyIGNhbiBjaGFuZ2Ug
YXVkaW8gdm9sdW1lIHNvIHVwZGF0ZSB0aGUgY2FjaGVkIHZvbHVtZSBhbmQgcG9zdCB0aGUgY2hh
bmdlZCBldmVudC4KICAgICBmbG9hdCB2b2x1bWUgPSBtX3BsYXllci0+dm9sdW1lKCk7CiAgICAg
aWYgKG1fdm9sdW1lICE9IHZvbHVtZSkgewpAQCAtNTQ3Myw3ICs1NDczLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUgaU9T
IGFuZCBub24taU9TIGNvZGUgKGJlbG93KS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8
fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuOwogI2Vsc2UK
QEAgLTYxMzEsNyArNjEzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBh
cmVkRm8KICAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCiB7
CkBAIC03MDMyLDcgKzcwMzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsCiAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck5ldHdvcmtJbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gRGVw
cmVjYXRlZEdsb2JhbFNldHRpbmdzOjpuZXR3b3JrSW50ZXJmYWNlTmFtZSgpOwpAQCAtNzUzOSw3
ICs3NTM5LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdAogICAg
ICAgICByZXR1cm4gdGl0bGU7CiAKICAgICB0aXRsZSA9IG1fY3VycmVudFNyYy5ob3N0KCkudG9T
dHJpbmcoKTsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkp
CiAgICAgICAgIHRpdGxlID0gZGVjb2RlSG9zdE5hbWUodGl0bGUpOwogI2VuZGlmCkBAIC03Nzk2
LDcgKzc3OTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZEJ1ZmZlckRhCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHVyZ2VCdWZmZXJlZERhdGFJZlBvc3NpYmxlKCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIU1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkg
JiYgbV9tZWRpYVNlc3Npb24tPmRhdGFCdWZmZXJpbmdQZXJtaXR0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZpZGVv
TGF5ZXJJbmxpbmUoKTsKICAgICB2b2lkIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9J
bmxpbmUoYm9vbCk7CiAgICAgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlciA9IFtdIHsgfSk7CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxheWVyKiB2
aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIuZ2V0KCk7IH0KQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtZWRp
YVBsYXllclNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpOyB9CiAgICAgVmVjdG9yPFN0cmluZz4g
bWVkaWFQbGF5ZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRl
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3Ry
aW5nIG1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8Q29va2ll
PiYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX3RlbXBvcmFyaWx5QWxsb3dpbmdJbmxpbmVQbGF5YmFja0FmdGVyRnVs
bHNjcmVlbiB7IGZhbHNlIH07CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsK
ICAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsKICAgICBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5IHsgTWVkaWFQbGF5ZXI6
OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZv
aWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBlbHNlIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRhcmtNb2RlQ1NTRW5hYmxlZCgpICYmIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
IikpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb250
ZW50VmFsdWUpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgp
LCAiZm9ybWF0LWRldGVjdGlvbiIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NGb3JtYXRE
ZXRlY3Rpb24oY29udGVudFZhbHVlKTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lKCksICJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmgiCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNv
bnN0OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICNlbmRpZgogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hTZWxlY3RJdGUKIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6dXNl
c01lbnVMaXN0KCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuZGVsZWdhdGVzTWVu
dUxpc3RSZW5kZXJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTMzNCw3ICszMzQs
NyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RBbGwoKSBjCiAKIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodXNlc01l
bnVMaXN0KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZW51TGlzdD4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
TGlzdEJveD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29s
IEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0CiB7CiAgICAgaWYgKCFIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxk
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCF1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJu
IGlzPEhUTUxPcHRpb25FbGVtZW50PihjaGlsZCkgfHwgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4o
Y2hpbGQpIHx8IHZhbGlkYXRpb25NZXNzYWdlU2hhZG93VHJlZUNvbnRhaW5zKGNoaWxkKTsKICNl
bmRpZgpAQCAtNTAwLDcgKzUwMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzUmVxdWly
ZWRGb3JtQ28KIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAjZWxzZQogICAgIHJldHVy
biBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVw
ZGF0ZUxpc3RCb3hTZWwKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChyZW5kZXJlcigp
LT5pc0xpc3RCb3goKSB8fCBtX211bHRpcGxlKTsKICNlbHNlCiAgICAgQVNTRVJUKHJlbmRlcmVy
KCktPmlzTWVudUxpc3QoKSB8fCBtX211bHRpcGxlKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaENoYW5nZUV2CiAKIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xs
VG9TZWxlY3Rpbwogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJl
bmRlcmVyKCkKIHsKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
aWYgKGlzPFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpKQogICAgICAgICAgICAgZG93bmNhc3Q8
UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcikuc2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAg
ICAgIGVsc2UKQEAgLTEyMzksNyArMTIzOSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1l
bnVMaXN0RGVmYXVsdEUKIAogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2
ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1cygpOwot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGlzPFJlbmRlck1l
bnVMaXN0PihyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8mIG1lbnVMaXN0ID0gZG93bmNh
c3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcik7CkBAIC0xMjU2LDcgKzEyNTYsNyBAQCB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFCiAgICAgICAgIGV2ZW50LnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVy
RXZlbnQgJiYgIWZvY3VzZWQoKSkgewogICAgICAgICBhdXRvJiBtZW51TGlzdCA9IGRvd25jYXN0
PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChtZW51TGlzdC5wb3B1
cElzVmlzaWJsZSgpKQpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZAogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw3ICs1NTMsNyBAQCBSZW5kZXJTdHlsZSBIVE1M
VGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJCiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUs
IHRleHRCbG9ja1N0eWxlKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlU
eXBlOjpCbG9jayk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBXZSdyZSBhZGRpbmcgdGhyZWUgZXh0cmEgcGl4ZWxzIG9mIHBhZGRpbmcgdG8g
bGluZSB0ZXh0YXJlYXMgdXAgd2l0aCB0ZXh0IGZpZWxkcy4gIAogICAgIHRleHRCbG9ja1N0eWxl
LnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhlZCkpOwogICAgIHRleHRCbG9ja1N0eWxlLnNl
dFBhZGRpbmdSaWdodChMZW5ndGgoMywgRml4ZWQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNlbGVjdCgKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFic3RyYWN0
IHRoZSBzZWxlY3Rpb24gYmVoYXZpb3IgaW50byBhbiBFZGl0aW5nQmVoYXZpb3IgZnVuY3Rpb24g
aW5zdGVhZAogICAgIC8vIG9mIGhhcmRjb2RpbmcgdGhlIGJlaGF2aW9yIHVzaW5nIGEgbWFjcm8g
ZGVmaW5lLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gc2VsZWN0IGFsbCB0aGUgdGV4dCBvbiBpT1MuIEluc3RlYWQg
dXNlIHRoZSBzdGFuZGFyZCB0ZXh0ZmllbGQgYmVoYXZpb3Igb2YgZ29pbmcgdG8gdGhlIGVuZCBv
ZiB0aGUgbGluZS4KICAgICBzZXRTZWxlY3Rpb25SYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNG
b3J3YXJkRGlyZWN0aW9uLCByZXZlYWxNb2RlLCBpbnRlbnQpOwogI2Vsc2UKQEAgLTY2MCw3ICs2
NjAsNyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kCiAgICAgcmV0
dXJuIGluZGV4OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoaWRlUGxhY2Vob2xkZXIoKQog
ewogICAgIGlmIChSZWZQdHI8SFRNTEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJF
bGVtZW50KCkpCkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6YWRqdXN0SQogCiAgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAg
ICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuZGlzYWJs
ZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9y
RmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBwYXJlbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHRleHRCbG9ja1N0
eWxlLnRleHRTZWN1cml0eSgpICE9IFRleHRTZWN1cml0eTo6Tm9uZSAmJiAhdGV4dEJsb2NrU3R5
bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBh
bGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rpb24gdG8gTFRSIHNvIHRoYXQgdGhlIGxhc3Qt
dHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgogICAgICAgICAvLyAod2hpY2ggY2Fubm90IGhhdmUg
UlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhlIG1hc2tl
ZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+LgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dEFzT2ZM
YXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0QXNP
Zkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50ID0gdGV4dDsgfQotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZVBs
YWNlaG9sZGVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93UGxhY2Vob2xkZXJJZk5l
Y2Vzc2FyeSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEhU
TUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgZWxzZSB7CiAgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgICAgCiAKLSNpZiBQ
TEFURk9STShJT1MpICYmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgaWYgKG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIpIHsKICAgICAgICAgICAgIGJvb2wg
ZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0
YWlycGxheUF0dHIpLCAiZGVueSIpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWUKICAgICBpZiAoIXBsYXllcigpLT5zdXBwb3J0c0Z1
bGxzY3JlZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVvRnVsbHNjcmVl
bk1vZGUpOwogICAgIC8vIEZ1bGxzY3JlZW4gaW1wbGVtZW50ZWQgYnkgcGxheWVyLgogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTg4LDExICsxODgsMTEgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpz
dXBwb3J0c0Z1bGxzY3JlZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4odmlkZW9GdWxsc2Ny
ZWVuTW9kZSk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiB9CiAKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKQogewogICAg
IHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpGdWxsc2NyZWVuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgd2Via2l0RHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdDsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgd2Via2l0UmVx
dWVzdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlRG9jdW1lbgogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIGNsYXNzIEltYWdlRXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudExpc3Rl
bmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEltYWdlRXZlbnRMaXN0ZW5lcj4gY3JlYXRl
KEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRXZl
bnRMaXN0ZW5lcihkb2N1bWVudCkpOyB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW1hZ2VEb2N1bWVu
dDo6SW1hZ2VEb2N1bWVudChGcmFtZSYgZnJhbQogICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwg
dXJsLCBJbWFnZURvY3VtZW50Q2xhc3MpCiAgICAgLCBtX2ltYWdlRWxlbWVudChudWxscHRyKQog
ICAgICwgbV9pbWFnZVNpemVJc0tub3duKGZhbHNlKQotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX2RpZFNocmlua0ltYWdlKGZhbHNlKQogI2Vu
ZGlmCiAgICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKGZyYW1lLnNldHRpbmdzKCkuc2hyaW5rc1N0
YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkpCkBAIC0yNDIsNyAr
MjQyLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdAogICAgIGJv
ZHktPmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgCiAgICAgaWYgKG1fc2hvdWxkU2hy
aW5rSW1hZ2UpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRo
ZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgogICAgICAgICBwcm9jZXNzVmlld3BvcnQoIndp
ZHRoPWRldmljZS13aWR0aCx2aWV3cG9ydC1maXQ9Y292ZXIiX3MsIFZpZXdwb3J0QXJndW1lbnRz
OjpJbWFnZURvY3VtZW50KTsKICNlbHNlCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBJbWFnZURv
Y3VtZW50OjppbWFnZVVwZGF0ZWQoKQogICAgIG1faW1hZ2VTaXplSXNLbm93biA9IHRydWU7CiAK
ICAgICBpZiAobV9zaG91bGRTaHJpbmtJbWFnZSkgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSA9IHBhZ2Uo
KS0+Y2hyb21lKCkuc2NyZWVuU2l6ZSgpOwogICAgICAgICBpZiAoaW1hZ2VTaXplLndpZHRoKCkg
PiBzY3JlZW5TaXplLndpZHRoKCkpCiAgICAgICAgICAgICBwcm9jZXNzVmlld3BvcnQoU3RyaW5n
Ojpmb3JtYXQoIndpZHRoPSV1LHZpZXdwb3J0LWZpdD1jb3ZlciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbWFnZVNpemUud2lkdGgoKS50b0ludCgpKSksIFZpZXdwb3J0QXJndW1lbnRzOjpJbWFn
ZURvY3VtZW50KTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmltYWdl
VXBkYXRlZCgpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGZsb2F0IEltYWdlRG9jdW1lbnQ6OnNjYWxlKCkKIHsKICAgICBpZiAoIW1f
aW1hZ2VFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzY29ubmVj
dEltYWdlRWxlbWVudCgpIHsgbV9pbWFnZUVsZW1lbnQgPSBudWxscHRyOyB9CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgd2luZG93U2l6
ZUNoYW5nZWQoKTsKICAgICB2b2lkIGltYWdlQ2xpY2tlZChpbnQgeCwgaW50IHkpOwogI2VuZGlm
CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUoKTsK
IAogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcmVzaXplSW1hZ2VUb0ZpdCgp
OwogICAgIHZvaWQgcmVzdG9yZUltYWdlU2l6ZSgpOwogICAgIGJvb2wgaW1hZ2VGaXRzSW5XaW5k
b3coKTsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIGVub3VnaCBv
ZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHRvIGRldGVybWluZSBpdHMgc2l6ZS4KICAgICBi
b29sIG1faW1hZ2VTaXplSXNLbm93bjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2hldGhlciB0aGUgaW1hZ2UgaXMgc2hydW5rIHRvIGZp
dCBvciBub3QuCiAgICAgYm9vbCBtX2RpZFNocmlua0ltYWdlOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw3ICs1MzMsNyBAQCBT
dHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBE
YXRlQ29tcG9uZW50czo6VHlwZSBJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gRGF0ZUNvbXBvbmVudHM6OkludmFsaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjZW5kaWYK
IApAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVjZWl2ZURy
b3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpU
eXBlIGRhdGVUeXBlKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5
U3RyaW5nKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFy
c2VyOjpjcmVhdGVEb2N1bWVudAogICAgIGlmIChkb2N1bWVudC5mcmFtZSgpKQogICAgICAgICBk
b2N1bWVudC5mcmFtZSgpLT5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RBdERvY3VtZW50U3RhcnQp
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0
byBoZWFkRWxlbWVudCA9IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBy
b290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZEVsZW1lbnQpOwogCkBAIC0xMTgsNyArMTE4LDcg
QEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudAogICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tb2Rlcm5NZWRpYUNvbnRyb2xz
RW5hYmxlZCgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgZWxlbWVudFN0eWxlOwogICAgICAg
ICBlbGVtZW50U3R5bGUuYXBwZW5kTGl0ZXJhbCgibWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0
OiAxMDAlOyIpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBlbGVtZW50U3R5bGUuYXBwZW5kTGl0ZXJhbCgid2lkdGg6IDEwMCU7IGhlaWdodDog
YXV0bzsiKTsKICNlbmRpZgogICAgICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHls
ZUF0dHIsIGVsZW1lbnRTdHlsZS50b1N0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4K
QEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmNsaWVudERhdGFC
dWZmCiAKICAgICB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jpbmco
KTsKICNlbmRpZgogCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpzaG93UGxheWJhY2tUYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9lbGVtZW50LnJlYWR5
U3RhdGUoKSA8IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSkgewogICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxlbWVu
dCBpcyBub3QgcGxheWFibGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTc5LDcgKzU3OSw3IEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1AKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYXV0byYgbGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gbV9lbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXRhaXJwbGF5QXR0
cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxlZ2FjeUFpcnBsYXlB
dHRyaWJ1dGVWYWx1ZSwgImRlbnkiKSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CkBAIC02MjAs
NyArNjIwLDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFjawogewog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIGhhc0xpc3RlbmVycyk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOwogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9u
aXRvcmluZygpOwogI2Vsc2UKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246OmV4dGVybmFsT3V0cHV0CiAKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6aXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9wbGF5YmFja1RhcmdldCB8
fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCkBAIC03MTYsNyArNzE2LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpyZXF1aXJlc0Z1bGxzYwogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzSUJvb2tzKCkpCiAgICAgICAgIHJl
dHVybiAhbV9lbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKSAmJiAhbV9lbGVtZW50Lmhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpwbGF5c2lubGluZUF0dHIpOwogICAgIGlm
IChkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzEwXzAp
CkBAIC03NjYsNyArNzY2LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQaWN0
dXJlSQogICAgIHJldHVybiBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFsbG93c1Bp
Y3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkgJiYgIW1fZWxlbWVudC53ZWJraXRDdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faGFz
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgJiYgIW1fZWxlbWVudC5lbGVtZW50
SXNIaWRkZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJy
aWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBjb25zdDsK
QEAgLTE5MCw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRQbGF5VG9QbGF5
YmFja1RhcmdldCB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1faGFzUGxheWJhY2tUYXJn
ZXRzIHsgZmFsc2UgfTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3Rl
bmVycyB7IGZhbHNlIH07CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUGx1
Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICBpZiAoZG9jdW1lbnQuZnJhbWUo
KSkKICAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoSW5qZWN0QXRE
b2N1bWVudFN0YXJ0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIFNob3VsZCBub3QgYmUgYWJsZSB0byB6b29tIGludG8gc3RhbmRhbG9uZSBw
bHVnLWluIGRvY3VtZW50cy4KICAgICBkb2N1bWVudC5wcm9jZXNzVmlld3BvcnQoInVzZXItc2Nh
bGFibGU9bm8iX3MsIFZpZXdwb3J0QXJndW1lbnRzOjpQbHVnaW5Eb2N1bWVudCk7CiAjZW5kaWYK
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1l
bgogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAg
ICBib2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbndpZHRoQXR0
ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFyZ2luaGVp
Z2h0QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21pY1N0cmluZygiYmFja2dyb3VuZC1j
b2xvcjogcmdiKDIxNywyMjQsMjMzKSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICNlbHNlCiAgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbWljU3Ry
aW5nKCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsMzgsMzgpIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBSYW5nZUlu
cHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBSYW5nZUlu
cHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiB7CkBAIC0x
NjAsNyArMTYwLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbgog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3Vj
aEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaGFuZGxlVG91
Y2hFdmVudChldmVudCk7CiAjZWxpZiBFTkFCTEUoVE9VQ0hfU0xJREVSKQogICAgIEFTU0VSVChl
bGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1Jl
cXVpcmVkKCkgY29uc3QgZmluYWw7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBm
aW5hbDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYpIGZpbmFsOwogI2VuZGlmCiAg
ICAgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOwpAQCAtODQs
NyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIGZp
bmFsOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykgJiYgRU5B
QkxFKFRPVUNIX1NMSURFUikKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX1NMSURFUikKICAgICBib29sIGhhc1RvdWNoRXZl
bnRIYW5kbGVyKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgU2VhcmNoSW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUoSFRNTElucAogCiB2b2lkIFNl
YXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE5vcm1hbGx5IHdlJ3ZlIGdvdCB0aGUg
Y29ycmVjdCByZW5kZXJlciBieSB0aGUgdGltZSB3ZSBnZXQgaGVyZS4gSG93ZXZlciB3aGVuIHRo
ZSBpbnB1dCB0eXBlIGNoYW5nZXMKICAgICAvLyB3ZSBkb24ndCB1cGRhdGUgdGhlIGFzc29jaWF0
ZWQgcmVuZGVyZXJzIHVudGlsIGFmdGVyIHRoZSBuZXh0IHRyZWUgdXBkYXRlLCBzbyB3ZSBjb3Vs
ZCBhY3R1YWxseSBlbmQgdXAgaGVyZQogICAgIC8vIHdpdGggYSBtaXNtYXRjaGVkIHJlbmRlcmVy
IChlLmcuIHRocm91Z2ggZm9ybSBzdWJtaXNzaW9uKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNyBAQCBUZXh0RmllbGRJbnB1dFR5cGU6On5UZXh0RmllbGRJbnB1dFR5cGUoCiBib29s
IFRleHRGaWVsZElucHV0VHlwZTo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50Kikg
Y29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWxlbWVudCgpLT5pc1JlYWRPbmx5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW4KICAgICBBU1NFUlRfVU5VU0VEKG9sZEZv
Y3VzZWROb2RlLCBvbGRGb2N1c2VkTm9kZSAhPSBlbGVtZW50KCkpOwogICAgIGlmIChSZWZQdHI8
RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhlbGVtZW50KCkpOwotI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChlbGVt
ZW50KCktPmxpc3QoKSAmJiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCiAgICAgICAgICAg
ICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1ZhbHVlQmxvY2sgOiBD
U1NWYWx1ZU5vbmUsIHRydWUpOwogI2VuZGlmCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudAogICAgIElucHV0VHlwZTo6aGFuZGxlQmx1
ckV2ZW50KCk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT5lbmRFZGl0
aW5nKCk7Ci0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAg
ICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwogI2VuZGlmCkBAIC02NTgs
NyArNjU4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVcwogICAg
IGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLmZyYW1lKCkp
CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVu
dCgpKTsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9k
YXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRp
Y2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0
aW9ucygpLnNpemUoKSA/IENTU1ZhbHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOwogI2Vu
ZGlmCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxpc3RBdHRy
aWJ1dGVUYQogICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAgICAgICBy
ZXR1cm47CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpc3BsYXksIGVsZW1lbnQoKS0+bGlzdCgpID8gQ1NTVmFsdWVCbG9jayA6IENT
U1ZhbHVlTm9uZSwgdHJ1ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgogI2VuZGlmCiAKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9u
JiBzZXNzaW9uKQogICAgIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgaWYgKFdlYlRocmVhZFNob3VsZFlpZWxkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJUZWxlcGhvbmVO
dW1iZXJEZXRlY3Rvci5oIgogI2VuZGlmCiAKQEAgLTIxOTEsNyArMjE5MSw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEEKICAgICBwcm9jZXNzQ2hhcmFjdGVyQnVm
ZmVyKGJ1ZmZlcik7CiB9CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBFeHRyYWN0IHRoZSBmb2xsb3dp
bmcgaU9TLXNwZWNpZmljIGNvZGUgaW50byBhIHNlcGFyYXRlIGZpbGUuCiAvLyBGcm9tIHRoZSBz
dHJpbmcgNDA4OTk2MTAxMCwgY3JlYXRlcyBhIGxpbmsgb2YgdGhlIGZvcm0gPGEgaHJlZj0idGVs
OjQwODk5NjEwMTAiPjQwODk5NjEwMTA8L2E+IGFuZCBpbnNlcnRzIGl0LgpAQCAtMjI3NSw3ICsy
Mjc1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFBhcnNlVGVsZXBob25lTgogICAgIHJl
dHVybiB0cnVlOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNU
SU9OKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBi
dWZmZXIpCiB7CkBAIC0yNDMwLDcgKzI0MzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1CiB7CiAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0
dGluZ0VsZW1lbnRzKCk7CiAgICAgU3RyaW5nIGNoYXJhY3RlcnMgPSBidWZmZXIudGFrZVJlbWFp
bmluZygpOwotI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZP
Uk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgbV90cmVlLmlz
VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKSAmJiBzaG91bGRQYXJzZVRlbGVwaG9uZU51
bWJlcnNJbk5vZGUobV90cmVlLmN1cnJlbnROb2RlKCkpICYmIFRlbGVwaG9uZU51bWJlckRldGVj
dG9yOjppc1N1cHBvcnRlZCgpKQogICAgICAgICBsaW5raWZ5UGhvbmVOdW1iZXJzKGNoYXJhY3Rl
cnMpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGlzUGFyc2luZ0ZyYWdtZW50T3JUZW1wbGF0ZUNvbnRlbnRz
KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBM
QVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnNlcnRQaG9uZU51bWJlckxpbmsoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
Niw3ICs4OTYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsCiAg
ICAgICAgIG1fY29udHJvbHMtPnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAg
ICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgTWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50Ojp3aWxsUmUKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRp
bWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZU9wYXF1ZSgpOwogICAgIHZvaWQgbWFrZVRyYW5z
cGFyZW50KCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3Mg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRQogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICNlbmRpZgogCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgTWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250
cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFDb250cm9s
cyopOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAjZW5kaWYKIApAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50IGZpbmEKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC0y
NTAsNyArMjUwLDcgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCBmaQog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMjY3LDcgKzI2Nyw3IEBAIGNsYXNz
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b24KIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC0yODQsNyArMjg0LDcgQEAgY2xhc3MgTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQm
LCBNZWRpYUNvbnRyb2xzKik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMzA3LDcgKzMwNyw3IEBAIGNsYXNz
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmUKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMzIyLDcgKzMyMiw3IEBAIGNsYXNzIE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXMKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFDb250cm9scyopOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKQEAgLTM1MSw3ICszNTEsNyBAQCBjbGFzcyBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQgZmluYWwgCiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhQ29u
dHJvbHMqKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKQEAgLTM3Myw3ICszNzMsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtNDEzLDcg
KzQxMyw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXQKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC00MjksNyArNDI5LDcg
QEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dAogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCYpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpAQCAtODgs
NyArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7
CiAgICAgdmlydHVhbCB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQg
U2xpZGVyVGh1bWJFbGVtZW50OjpkcmFnRnJvbShjb25zdCAKIHsKICAgICBSZWY8U2xpZGVyVGh1
bWJFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZyb21Qb2lu
dChwb2ludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBzdGFydERyYWdnaW5nKCk7CiAjZW5kaWYKIH0KQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lk
IFNsaWRlclRodW1iRWxlbWVudDo6c3RvcERyYWdnaW5nKCkKICAgICAgICAgcmVuZGVyZXIoKS0+
c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFpczxNb3VzZUV2ZW50PihldmVudCkpIHsKQEAg
LTM3OCw3ICszNzgsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
CiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZl
bnRzKCkKIHsKQEAgLTM5OCw3ICszOTgsNyBAQCBib29sIFNsaWRlclRodW1iRWxlbWVudDo6d2ls
bFJlc3BvbmRUb01vCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxE
ZXRhY2hSZW5kZXJlcnMoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xh
c3MoKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8RWxlbWVudD4gZm9jdXNEZWxlZ2F0ZSgpIGZp
bmFsOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKICAgICBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBmaW5hbDsKICAgICBib29sIHdpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlCiAgICAgaWYgKGlucHV0ICYmIGV2ZW50LnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oZXZlbnQp
ICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7
CiAgICAgICAgIGlucHV0LT5mb2N1cygpOwogICAgICAgICBpbnB1dC0+c2VsZWN0KCk7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHNl
YXJjaEZpZWxkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTZWFyY2hGaWVsZD4oKnJlbmRlcmVy
KTsKICAgICAgICAgICAgIGlmIChzZWFyY2hGaWVsZFJlbmRlcmVyLnBvcHVwSXNWaXNpYmxlKCkp
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
OjpkZQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogYm9v
bCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTQsNyArMjU0LDcgQEAgaW5saW5l
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6UwogICAgIDogSFRNTERpdkVsZW1lbnQo
ZGl2VGFnLCBkb2N1bWVudCkKIHsKICAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0
LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgQVhTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvblRleHQoKSk7CiAjZW5kaWYKICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9taWNTdHJpbmcoImJ1dHRvbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lk
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGVmCiAgICAgICAgIEhUTUxEaXZFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBib29sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAgIGNvbnN0IFJl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KHNoYWRvd0hvc3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBvdmVycmlkZTsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIG92
ZXJyaWRlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw3IEBA
IE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVkTm8KIAogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fb3ZlcmxheS0+c2V0
SW5kaWNhdGluZyhpbmRpY2F0aW5nKTsKICNlbHNlCiAgICAgaWYgKGluZGljYXRpbmcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCB1
bnNpZ25lZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omluc3BlY3RpCiAKIFN0cmluZyBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKCkKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuICJtYWMiX3M7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHJldHVybiAid2luZG93cyJf
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCiAjZW5kaWYKIApAQCAtOTAsNyArOTAs
NyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUoCiAKIHZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9TLCBydW5u
aW5nIGFuIEV2ZW50TG9vcCBjYXVzZXMgdXMgdG8gcnVuIGEgbmVzdGVkIFdlYlJ1bkxvb3AuCiAg
ICAgLy8gU2luY2UgdGhlIFdlYlRocmVhZCBpcyBhdXRvcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiBy
dW4gbG9vcCBpdGVyYXRpb25zCiAgICAgLy8gd2UgbmVlZCB0byBncmFjZWZ1bGx5IGhhbmRsZSBy
ZWxlYXNpbmcgYW5kIHJlYWNxdWlyaW5nIHRoZSBsb2NrLgpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJlYWtwb2ludC5oPgogI2luY2x1
ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1
ZGUgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgogI2VuZGlmCkBAIC02OSw3ICs2OSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgQ0ZS
dW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBIHJhY2UgY29uZGl0aW9uIGR1cmluZyBXZWJWaWV3
IGRlYWxsb2NhdGlvbiBjYW4gbGVhZCB0byBhIGNyYXNoIGlmIHRoZSBsYXllciBzeW5jIHJ1biBs
b29wCiAgICAgLy8gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gdGhlIG1haW4gcnVuIGxvb3AgPHJkYXI6
Ly9wcm9ibGVtLzk3OTg1NTA+LiBIb3dldmVyLCBmb3IgcmVzcG9uc2l2ZW5lc3MsCiAgICAgLy8g
d2Ugc3RpbGwgYWxsb3cgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS83NDAzMzI4Pi4gU2luY2Ug
dGhlIHJhY2UgY29uZGl0aW9uIGFuZCBzdWJzZXF1ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjMsNyAr
MTU2Myw3IEBAIFVSTCBEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnRVUkwoKSBjb25zdAogICAgIHJl
dHVybiB1cmw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1zIHRvIHZpb2xhdGUgdGhlIGVuY2Fwc3Vs
YXRpb24gb2YgdGhpcyBjbGFzcy4KIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlc3BvbnNlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiByZXNwb25zZU1pbWVUeXBlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdDsKICAgICBj
b25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiByZXNwb25z
ZU1JTUVUeXBlKCkgY29uc3Q7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1zIHRvIHZpb2xhdGUgdGhlIGVu
Y2Fwc3VsYXRpb24gb2YgdGhpcyBjbGFzcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJl
c3BvbnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQ
SS5oPgogI2VuZGlmCiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bWFrZUNyb3NzCiB7CiAgICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNo
T3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG5lZWRzUHJlZmxpZ2h0UXVpcmsgPSBJT1NBcHBsaWNhdGlv
bjo6aXNNb3ZpU3RhclBsdXMoKSAmJiBhcHBsaWNhdGlvblNES1ZlcnNpb24oKSA8IERZTERfSU9T
X1ZFUlNJT05fMTJfMCAmJiAobV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9PSBQcmVmbGlnaHRQ
b2xpY3k6OkNvbnNpZGVyIHx8IG1fb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPT0gUHJlZmxpZ2h0
UG9saWN5OjpGb3JjZSk7CiAjZWxzZQogICAgIGJvb2wgbmVlZHNQcmVmbGlnaHRRdWlyayA9IGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgUmVmPERvY3VtZW50PiBEb2N1bWVu
dFdyaXRlcjo6Y3JlYXRlRG9jdQogewogICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCkuc3RhdGVN
YWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChtX21pbWVUeXBl
KSkKICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoTUlN
RVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtX21pbWVUeXBlKSAmJiAobV9mcmFtZS0+aXNN
YWluRnJhbWUoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50Rm9yU3Vi
ZnJhbWVQREYoKSkpCiAgICAgICAgIHJldHVybiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1l
LCB1cmwpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopIGZpbmFsIHsgfQogICAgIHZvaWQg
b3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKSBmaW5hbCB7IH0KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc3RhcnREZWxheWluZ0Fu
ZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIGZpbmFsIHsgfQogICAgIHZv
aWQgc3RvcERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkg
ZmluYWwgeyB9CiAgICAgYm9vbCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVu
dCA6IHB1YmxpYyBDaHJvbWVDCiAgICAgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcCkgY29uc3QgZmluYWwgeyByZXR1cm4gcDsgfQogICAgIEludFJlY3Qgcm9vdFZp
ZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdCBmaW5hbCB7IHJldHVybiByOyB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJbnRQb2lu
dCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcDsgfTsKICAgICBJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHI7IH07CiAjZW5k
aWYKQEAgLTE0Myw3ICsxNDMsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBD
aHJvbWVDCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoRWxlbWVudCYpIGZpbmFsIHsgfQogICAg
IHZvaWQgZWxlbWVudERpZEJsdXIoRWxlbWVudCYpIGZpbmFsIHsgfQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEN1cnNvcihjb25z
dCBDdXJzb3ImKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
b3Zlcyhib29sKSBmaW5hbCB7IH0KICNlbmRpZgpAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIEVt
cHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUMKICAgICB2b2lkIGRpZFByZXZlbnREZWZh
dWx0Rm9yRXZlbnQoKSBmaW5hbCB7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRSZWNlaXZlTW9iaWxlRG9jVHlwZShi
b29sKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldE5lZWRzU2Nyb2xsTm90aWZpY2F0aW9ucyhGcmFt
ZSYsIGJvb2wpIGZpbmFsIHsgfQogICAgIHZvaWQgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKEZyYW1l
JikgZmluYWwgeyB9CkBAIC0xODMsMTMgKzE4MywxMyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVu
dCA6IHB1YmxpYyBDaHJvbWVDCiAKICAgICB2b2lkIHdlYkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQo
KSBmaW5hbCB7IH07CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCwgUm91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH07Ci0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUo
T1JJRU5UQVRJT05fRVZFTlRTKQogICAgIGludCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBpc1N0b3BwaW5nKCkgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaQogICAgIGJvb2wg
aGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBh
c3NlcnRpb25zCiAKICAgICB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
IGZpbmFsIHsgfQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCkgZmlu
YWwgeyB9CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVM
b2FkZXJDbGkKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25u
ZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaQogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1E
YXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIGZpbmFsIHsgfQogICAgIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmluYWwgeyB9Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRS
ZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIGZpbmFsIHsgfQogI2VuZGlmCiAg
ICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWwgeyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw3ICsxNDAsNyBAQAogI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb24uaCIKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRG9j
dW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9IG51bGxw
dHI7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21w
bGV0ZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
V2UgbmVlZCB0byB1cGRhdGUgdGhlIGRvY3VtZW50IFVSTCBvZiBhIFBERiBkb2N1bWVudCB0byBi
ZSBub24tZW1wdHkgc28gdGhhdCBib3RoIGJhY2svZm9yd2FyZCBoaXN0b3J5IG5hdmlnYXRpb24K
ICAgICAgICAgLy8gYmV0d2VlbiBQREYgcGFnZXMgYW5kIGZyYWdtZW50IG5hdmlnYXRpb24gd29y
a3MuIFNlZSA8cmRhcjovL3Byb2JsZW0vOTU0NDc2OT4gZm9yIG1vcmUgZGV0YWlscy4KQEAgLTE2
NDgsNyArMTY0OCw3IEBAIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6OmluaXQK
IAogYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1cmwsIE5v
ZGUmIGluaXRpYXRvck5vZGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gTW9iaWxlU3RvcmUgZGVwZW5kcyBvbiB0aGUgaU9TIDQuMCBlcmEg
Y2xpZW50IGRlbGVnYXRlIG1ldGhvZCBiZWNhdXNlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRS
ZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2UKICAgICAvLyBkb2Vzbid0IGxl
dCB0aGVtIHRlbGwgd2hlbiBhIGxvYWQgcmVxdWVzdCBpcyBjb21pbmcgZnJvbSBhIG1lZGlhIGVs
ZW1lbnQuIFNlZSA8cmRhcjovL3Byb2JsZW0vODI2NjkxNj4gZm9yIG1vcmUgZGV0YWlscy4KICAg
ICBpZiAoSU9TQXBwbGljYXRpb246OmlzTW9iaWxlU3RvcmUoKSkKQEAgLTE4MTgsNyArMTgxOCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wKIAogICAgIHN0b3BB
bGxMb2FkZXJzKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBMYXkgb3V0IGltbWVkaWF0ZWx5IHdoZW4gc3RvcHBpbmcgdG8gaW1tZWRpYXRl
bHkgY2xlYXIgdGhlIG9sZCBwYWdlIGlmIHdlIGp1c3QgY29tbWl0dGVkIHRoaXMgb25lCiAgICAg
Ly8gYnV0IGhhdmVuJ3QgbGFpZCBvdXQvcGFpbnRlZCB5ZXQuCiAgICAgLy8gRklYTUU6IElzIHRo
aXMgYmVoYXZpb3Igc3BlY2lmaWMgdG8gaU9TPyBPciBzaG91bGQgd2UgZXhwb3NlIGEgc2V0dGlu
ZyB0byB0b2dnbGUgdGhpcyBiZWhhdmlvcj8KQEAgLTE5NzMsNyArMTk3Myw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgKICAgICAgICAgY2xpZW50UmVkaXJlY3RD
YW5jZWxsZWRPckZpbmlzaGVkKGZhbHNlKTsKICAgICAKICAgICBpZiAoY2FjaGVkUGFnZSAmJiBj
YWNoZWRQYWdlLT5kb2N1bWVudCgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZJWE1FOiBDYWNoZWRQYWdlOjpyZXN0b3JlKCkgd291
bGQgZGlzcGF0Y2ggdmlld3BvcnQgY2hhbmdlIG5vdGlmaWNhdGlvbi4gSG93ZXZlciBVSUtpdCBl
eHBlY3RzIGxvYWQKICAgICAgICAgLy8gY29tbWl0IHRvIGhhcHBlbiBiZWZvcmUgYW55IGNoYW5n
ZXMgdG8gdmlld3BvcnQgYXJndW1lbnRzIGFuZCBkZWFsaW5nIHdpdGggdGhpcyB0aGVyZSBpcyBk
aWZmaWN1bHQuCiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5zZXREaXNwYXRjaFZp
ZXdwb3J0RGF0YURpZENoYW5nZVN1cHByZXNzZWQodHJ1ZSk7CkBAIC0xOTk1LDcgKzE5OTUsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoCiAKICAgICAgICAgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKGhhc0luc2VjdXJlQ29udGVudCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNo
cm9tZSgpLnNldERpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChmYWxzZSk7
CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0RpZENoYW5nZShtX2ZyYW1lLnBhZ2UoKS0+dmlld3BvcnRBcmd1bWVudHMoKSk7CiAjZW5k
aWYKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCgKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5yZXN1bWUoUmVhc29uRm9yU3Vz
cGVuc2lvbjo6UGFnZUNhY2hlKTsKIAogICAgICAgICAvLyBGb3JjZSBhIGxheW91dCB0byB1cGRh
dGUgdmlldyBzaXplIGFuZCB0aGVyZWJ5IHVwZGF0ZSBzY3JvbGxiYXJzLgotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1fY2xpZW50LmZv
cmNlTGF5b3V0T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpKQogICAgICAgICAgICAgbV9mcmFtZS52
aWV3KCktPmZvcmNlTGF5b3V0KCk7CiAjZWxzZQpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbgogCiB2b2lkIEZyYW1lTG9hZGVyOjpk
aWRGaXJzdExheW91dCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gT25seSBzZW5kIGxheW91dC1yZWxhdGVkIGRlbGVnYXRlIGNhbGxiYWNr
cyBzeW5jaHJvbm91c2x5IGZvciB0aGUgbWFpbiBmcmFtZSB0bwogICAgIC8vIGF2b2lkIHJlZW50
ZXJpbmcgbGF5b3V0IGZvciB0aGUgbWFpbiBmcmFtZSB3aGlsZSBkZWxpdmVyaW5nIGEgbGF5b3V0
LXJlbGF0ZWQgZGVsZWdhdGUKICAgICAvLyBjYWxsYmFjayBmb3IgYSBzdWJmcmFtZS4KQEAgLTM3
MzgsNyArMzczOCw3IEBAIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmJsb2NrZWRCeUNvbnQK
IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGcmFtZUxvYWRlcjo6Y29ubmVjdGlvblByb3Bl
cnRpZXMoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKICAgICByZXR1cm4gbV9jbGllbnQuY29u
bmVjdGlvblByb3BlcnRpZXMobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSk7CkBAIC0zOTc1LDcgKzM5NzUsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRv
dyhGcmFtZSYgb3BlbmVyCiAgICAgLy8gZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHdp
bmRvdyBzaXplIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS4KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcmVjb25jaWxlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2aWV3cG9ydCBhcmd1bWVudHMgYmV0
d2VlbiBpT1MgYW5kIG5vbi1JT1MuCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplID0gcGFnZS0+Y2hyb21lKCku
cGFnZVJlY3QoKS5zaXplKCk7CiAgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QgPSBwYWdlLT5jaHJv
bWUoKS53aW5kb3dSZWN0KCk7CiAgICAgaWYgKGZlYXR1cmVzLngpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFyZW50RnJh
bWUoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZFJlcG9ydFJlc291cmNlVGltaW5nVG9QYXJlbnRGcmFt
ZSA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFyZW50
RnJhbWUoKSB7IHJldHVybiBtX3Nob3VsZFJlcG9ydFJlc291cmNlVGltaW5nVG9QYXJlbnRGcmFt
ZTsgfTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNv
dXJjZUxvYWRlciopOwogI2VuZGlmCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIGNsaWVudCBmb3JjZWQgdGhlIGxheW91dC4KICAgICB2aXJ0dWFsIGJv
b2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogI2VuZGlmCkBAIC0x
NTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCkBAIC0yNzUsNyArMjc1LDcg
QEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0
b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpID0gMDsKICNlbmRpZgogICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgPSAwOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVT
Y3JvbGxQb3NpdGkKICAgICBlbHNlCiAgICAgICAgIGl0ZW0tPnNldFNjcm9sbFBvc2l0aW9uKGZy
YW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpdGVtLT5zZXRFeHBvc2VkQ29udGVudFJlY3QoZnJhbWVW
aWV3LT5leHBvc2VkQ29udGVudFJlY3QoKSk7CiAgICAgaXRlbS0+c2V0VW5vYnNjdXJlZENvbnRl
bnRSZWN0KGZyYW1lVmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpOwogI2VuZGlmCkBAIC04
Nyw3ICs4Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3NpdGkKICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIGl0ZW0tPnNldFBhZ2VTY2FsZUZhY3RvcihwYWdlLT5w
YWdlU2NhbGVGYWN0b3IoKSAvIHBhZ2UtPnZpZXdTY2FsZUZhY3RvcigpKTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaXRlbS0+c2V0T2JzY3Vy
ZWRJbnNldHMocGFnZS0+b2JzY3VyZWRJbnNldHMoKSk7CiAjZW5kaWYKICAgICB9CkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvcwogICAg
IC8vIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LnJlc3RvcmVWaWV3U3RhdGUoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gRG9uJ3QgcmVzdG9yZSBzY3JvbGwgcG9pbnQgb24gaU9TIGFz
IEZyYW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKCkgZG9lcyB0aGF0LgogICAgIGlm
ICh2aWV3ICYmICF2aWV3LT53YXNTY3JvbGxlZEJ5VXNlcigpKSB7CiAgICAgICAgIHZpZXctPnNj
cm9sbFRvRm9jdXNlZEVsZW1lbnRJbW1lZGlhdGVseUlmTmVlZGVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw3ICsxMjAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVz
CiAgICAgCiAgICAgbV9sb2FkVGltaW5nLm1hcmtTdGFydFRpbWVBbmRGZXRjaFN0YXJ0KCk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBJZiB0
aGUgZG9jdW1lbnRMb2FkZXIgd2FzIGRldGFjaGVkIHdoaWxlIHRoaXMgUmVzb3VyY2VMb2FkZXIg
d2FzIHdhaXRpbmcgaXRzIHR1cm4KICAgICAvLyBpbiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgcXVl
dWUsIGRvbid0IGNvbnRpbnVlLgogICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSkg
ewpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VS
ZXF1ZXMKIAogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUoY2xpZW50UmVxdWVz
dCksIFJlc291cmNlUmVzcG9uc2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRl
ciB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QsIGJhaWwgb3V0Lgog
ICAgICAgICBpZiAobV9yZWFjaGVkVGVybWluYWxTdGF0ZSkKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZQogICAgICAgICBpZiAoY3JlYXRlZFJlc291cmNl
SWRlbnRpZmllcikKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigp
LCByZXF1ZXN0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICAvLyBJZiB0aGlzIFJlc291cmNlTG9hZGVyIHdhcyBzdG9wcGVkIGFzIGEgcmVz
dWx0IG9mIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0LCBiYWlsIG91dAogICAgICAg
ICBpZiAobV9yZWFjaGVkVGVybWluYWxTdGF0ZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC03NTEsNyArNzUxLDcgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaQogCiAjZW5kaWYKICAgICAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gUmVzb3VyY2VMb2FkZXI6OmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxl
KikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCiAgICAgewogICAgICAgICBzdGFydCgpOwpA
QCAtMjA5LDcgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICNlbmRp
ZgogICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IHJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNoYWxsZW5nZSk7IH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJv
cGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDcgKzM5OSw3IEBAIGJvb2wgU3ViZnJhbWVM
b2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWcKICAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gcm91
bmRlZEludFNpemUoTGF5b3V0U2l6ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCksIHJlbmRlcmVy
LT5jb250ZW50SGVpZ2h0KCkpKTsKICAgICBib29sIGxvYWRNYW51YWxseSA9IGlzPFBsdWdpbkRv
Y3VtZW50Pihkb2N1bWVudCkgJiYgIW1fY29udGFpbnNQbHVnaW5zICYmIGRvd25jYXN0PFBsdWdp
bkRvY3VtZW50Pihkb2N1bWVudCkuc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KCk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1MsIHdl
IG9ubHkgdGVsbCB0aGUgcGx1Z2luIHRvIGJlIGluIGZ1bGwgcGFnZSBtb2RlIGlmIHRoZSBjb250
YWluaW5nIHBsdWdpbiBkb2N1bWVudCBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50LgogICAgIGlm
IChkb2N1bWVudC5vd25lckVsZW1lbnQoKSkKICAgICAgICAgbG9hZE1hbnVhbGx5ID0gZmFsc2U7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdWJyZXNvdXJj
ZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBzdWJsb2FkZXIoYWRvcHRSZWYoKm5ldyBTdWJyZXNv
dXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNX
ZWJQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gT24gaU9TLCBkbyBub3QgaW52b2tlIHN5bmNocm9u
b3VzIHJlc291cmNlIGxvYWQgZGVsZWdhdGVzIHdoaWxlIHJlc291cmNlIGxvYWQgc2NoZWR1bGlu
ZwogICAgICAgICAvLyBpcyBkaXNhYmxlZCB0byBhdm9pZCByZS1lbnRlcmluZyBzdHlsZSBzZWxl
Y3Rpb24gZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8cmRhcjovL3Byb2JsZW0vOTEyMTcx
OT4pLgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShG
cmFtZSYgZnIKICAgICB9KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiB7
CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQuCkBAIC02ODQs
NyArNjg0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZQogCiB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcgdGltZSBvbiBp
T1MgYnV0CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VMb2FkZXIgc3RvcmVzIHJlc291cmNlcyBpbiB0
aGUgbWVtb3J5IGNhY2hlIGltbWVkaWF0ZWx5LAogICAgIC8vIG1fcmVzb3VyY2UgbWlnaHQgYmUg
Y2FjaGVkIGRlc3BpdGUgaXRzIGxvYWRlciBub3QgYmVpbmcgaW5pdGlhbGl6ZWQuCkBAIC02OTcs
NyArNjk3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdAogICAg
IExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIFJlZjxTdWJyZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9zdGF0ZSA9IG1fc3RhdGUgPT0gVW5pbml0aWFs
aXplZCA/IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nIDogRmluaXNoaW5nOwogI2Vsc2UKICAg
ICBtX3N0YXRlID0gRmluaXNoaW5nOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6Om5vdGlmeURvbmUoTG9hZEMKIAogICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9
IHN0ZDo6bnVsbG9wdDsKICAgICBib29sIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMgPSB0
cnVlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChtX3N0YXRlID09IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nKQogICAgICAgICBzaG91bGRQ
ZXJmb3JtUG9zdExvYWRBY3Rpb25zID0gZmFsc2U7CiAjZW5kaWYKQEAgLTc0OCw3ICs3NDgsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lKExvYWRDCiB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIHsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChtX3N0YXRlICE9IFVuaW5pdGlhbGl6ZWQgJiYgbV9zdGF0ZSAhPSBDYW5jZWxs
ZWRXaGlsZUluaXRpYWxpemluZykKICNlbHNlCiAgICAgaWYgKG1fc3RhdGUgIT0gVW5pbml0aWFs
aXplZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgSFRUUEhlYWRlck1hcCogb3JpZ2luYWxIZWFkZXJzKCkgY29uc3Q7CiAK
ICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0K
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0TG9hZGluZygpIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IFdoYXQgaXMgYW4gImlPUyIg
b3JpZ2luYWwgcmVxdWVzdD8gV2h5IGlzIGl0IG5lY2Vzc2FyeT8KQEAgLTEwNyw3ICsxMDcsNyBA
QCBwcml2YXRlOgogICAgICAgICBVbmluaXRpYWxpemVkLAogICAgICAgICBJbml0aWFsaXplZCwK
ICAgICAgICAgRmluaXNoaW5nLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBDYW5jZWxsZWRXaGlsZUluaXRpYWxpemluZwogI2VuZGlmCiAgICAg
fTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDYWNoZWRSZXNv
dXJjZSYgbV9yZXNvdXJjZTsKICAgICB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1faU9TT3JpZ2luYWxSZXF1ZXN0
OwogI2VuZGlmCiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTeXN0ZW1NZW1vcnkuaCIKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAjZW5kaWYKIApAQCAt
OTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJ
QklMSVRZX0ZSQU1FV09SSykKIHN0YXRpYyB2b2lkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkTm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9i
c2VydmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYpCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWNf
Y2FzdDxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRio+KG9ic2VydmVyKS0+Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCgpOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oXnsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIEludFJlY3Qg
Q2hyb21lOjpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEkKICAgICByZXR1cm4gbV9jbGllbnQucm9v
dFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogSW50UG9pbnQgQ2hyb21lOjphY2Nlc3NpYmlsaXR5U2NyZWVu
VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CkBAIC00MjUsNyArNDI1
LDcgQEAgdm9pZCBDaHJvbWU6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxDb2xvckNob29zZXI+IENocm9tZTo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hv
b3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBudWxscHRy
OwogI2VuZGlmCiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CkBAIC00ODIsNyAr
NDgyLDcgQEAgdm9pZCBDaHJvbWU6OmRpc3BhdGNoRGlzYWJsZWRBZGFwdGF0aW9ucwogCiB2b2lk
IENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgVmlld3Bv
cnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9pc0Rpc3BhdGNoVmlld3BvcnREYXRhRGlk
Q2hhbmdlU3VwcHJlc3NlZCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC01NzUsNyArNTc1
LDcgQEAgYm9vbCBDaHJvbWU6OnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUAogCiB2b2lkIENo
cm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyYW1lKQogewotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsK
ICNlbHNlCiAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbChj
b25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
ICAgICBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25z
dCBvdmVycmlkZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xNzcsNyAr
MTc3LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQmKSBjb25zdDsKICAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50JikgY29uc3Q7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogQ2FuIHdlIGNv
bWUgdXAgd2l0aCBhIGJldHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KICAgICB2b2lkIHNldERp
c3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChib29sIGRpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCkgeyBtX2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRD
aGFuZ2VTdXBwcmVzc2VkID0gZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2Vk
OyB9CiAjZW5kaWYKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIENocm9tZUNsaWVu
dCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07CiAg
ICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1cE9wZW5pbmdPYnNlcnZlcnM7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBt
X2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkIHsgZmFsc2UgfTsKICNl
bmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNkZWZpbmUgTlNSZXNwb25kZXIgV0FLUmVz
cG9uZGVyCiAjaWZuZGVmIF9fT0JKQ19fCkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JikgY29uc3QgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdU
b0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKICNlbmRpZiAg
ICAKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNlY29uZHMgZXZl
bnRUaHJvdHRsaW5nRGVsYXkoKSB7IHJldHVybiAwX3M7IH07CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1v
YmlsZURvY1R5cGUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Njcm9sbE5v
dGlmaWNhdGlvbnMoRnJhbWUmLCBib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9ic2VydmVk
Q29udGVudENoYW5nZShGcmFtZSYpID0gMDsKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSB7
IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBhIG1vcmUgZGVzY3JpcHRpdmUgbmFtZSBmb3Ig
dGhpcyBmdW5jdGlvbiBhbmQgbWFrZSBpdCBwbGF0Zm9ybSBpbmRlcGVuZGVudCAoaWYgcG9zc2li
bGUpLgogICAgIHZpcnR1YWwgYm9vbCBpc1N0b3BwaW5nKCkgPSAwOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICNp
bmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKQEAgLTIxOSw3ICsyMTksNyBAQCBpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0
aW9uQ29uCiAgICAgLy8gVGhpcyByZWZlcmVuY2Ugd2lsbCBiZSByZWxlYXNlZCBhdXRvbWF0aWNh
bGx5IHdoZW4gYSBvbmUtc2hvdCB0aW1lciBmaXJlcywgd2hlbiB0aGUgY29udGV4dAogICAgIC8v
IGlzIGRlc3Ryb3llZCwgb3IgaWYgZXhwbGljaXRseSBjYW5jZWxsZWQgYnkgcmVtb3ZlQnlJZC4g
CiAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIFdURk1vdmUoYWN0
aW9uKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAg
ICBib29sIGRpZERlZmVyVGltZW91dCA9IGNvbnRleHQuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCgpOwogICAgICAgICBpZiAoIWRpZERlZmVyVGltZW91dCAmJiB0aW1lb3V0IDw9IDEwMF9t
cyAmJiBzaW5nbGVTaG90KSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBET01UaW1lcjo6Zmly
ZWQoKQogCiAgICAgY29udGV4dC5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc2hvdWxkUmVw
b3J0TGFja09mQ2hhbmdlczsKICAgICBib29sIHNob3VsZEJlZ2luT2JzZXJ2aW5nQ2hhbmdlczsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9p
ZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoc2hv
dWxkQmVnaW5PYnNlcnZpbmdDaGFuZ2VzKSB7CiAgICAgICAgIFdLU3RvcE9ic2VydmluZ0NvbnRl
bnRDaGFuZ2VzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVy
LmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCiAjaW5jbHVkZSAiV0tDb250ZW50
T2JzZXJ2YXRpb25JbnRlcm5hbC5oIgogI2VuZGlmCkBAIC0xMTc2LDcgKzExNzYsNyBAQCBib29s
IERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkgY29uCiAKIGludCBET01XaW5kb3c6Om91
dGVySGVpZ2h0KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICByZXR1cm4gMDsKICNlbHNlCiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgaW50IERPTVdpbmRvdzo6b3V0ZXJIZWlnaHQo
KSBjb25zdAogCiBpbnQgRE9NV2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gMDsKICNlbHNl
CiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpAQCAtMTY1OSw3ICsxNjU5LDcgQEAg
RXhjZXB0aW9uT3I8aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoSgogCiB2b2lkIERPTVdpbmRv
dzo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0SWQpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgaWYgKHRpbWVvdXRJZCA+IDAgJiYgZG9jdW1lbnQpIHsKQEAgLTE4MDcsNyArMTgwNyw3
IEBAIGJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEEKICAgICBlbHNlIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93c0Jl
Zm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRM
aXN0ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYgKChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCkgJiYgZG9jdW1lbnQoKSkgewogICAgICAg
ICBpZiAoaXNTYW1lU2VjdXJpdHlPcmlnaW5Bc01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICBp
ZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50KQpAQCAt
MTgzMSw5ICsxODMxLDkgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QQogICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgp
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCAiQmxvY2tlZCBhdHRlbXB0IGFkZCBkZXZpY2Ugb3JpZW50YXRpb24gbGlzdGVuZXIgZnJv
bSBjaGlsZCBmcmFtZSB0aGF0IHdhc24ndCB0aGUgc2FtZSBzZWN1cml0eSBvcmlnaW4gYXMgdGhl
IG1haW4gcGFnZS4iX3MpOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNlbmRpZiAvLyBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQpCiAgICAgICAgIGlu
Y3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICNlbmRpZgpAQCAtMTg1Myw3ICsx
ODUzLDcgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQQogICAgIHJl
dHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIHZvaWQgRE9NV2luZG93OjppbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50
KCkKIHsKQEAgLTE4NzksOCArMTg3OSw4IEBAIHZvaWQgRE9NV2luZG93OjpkZWNyZW1lbnRTY3Jv
bGxFdmVudExpc3QKIAogdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNz
aW9uKCkKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1n
dWFyZD8KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAgICAvLyBG
SVhNRTogQ2FuIHdlIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQ/CisjaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX25h
dmlnYXRvcikKICAgICAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20obV9uYXZpZ2F0b3Iu
Z2V0KCkpLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOwogI2VuZGlmCkBAIC0xOTAz
LDcgKzE5MDMsNyBAQCBib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zCiAg
ICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAm
JiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIHJlbW92ZUJlZm9y
ZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNl
IGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYmIGRvY3Vt
ZW50KCkpCiAgICAgICAgIGRvY3VtZW50KCktPmRldmljZU1vdGlvbkNvbnRyb2xsZXIoKS0+cmVt
b3ZlRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgZG9jdW1lbnQoKSkKQEAgLTE5
MTYsOSArMTkxNiw5IEBAIGJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnMK
ICAgICAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKCkpKQogICAgICAgICAgICAgY29u
dHJvbGxlci0+cmVtb3ZlRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZW5kaWYg
Ly8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LnNjcm9sbEV2ZW50KQogICAgICAgICBkZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50
KCk7CiAjZW5kaWYKQEAgLTIwMjAsNyArMjAyMCw3IEBAIHZvaWQgRE9NV2luZG93OjpyZW1vdmVB
bGxFdmVudExpc3RlbmVycygKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKTsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCkpIHsKICAgICAgICAgZG9jdW1lbnQtPmRldmljZU1vdGlvbkNvbnRy
b2xsZXIoKS0+cmVtb3ZlQWxsRGV2aWNlRXZlbnRMaXN0ZW5lcnModGhpcyk7CiAgICAgICAgIGRv
Y3VtZW50LT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQWxsRGV2aWNlRXZl
bnRMaXN0ZW5lcnModGhpcyk7CkBAIC0yMDMwLDEwICsyMDMwLDEwIEBAIHZvaWQgRE9NV2luZG93
OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygKICAgICAgICAgY29udHJvbGxlci0+cmVtb3ZlQWxs
RGV2aWNlRXZlbnRMaXN0ZW5lcnModGhpcyk7CiAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlciogY29udHJvbGxlciA9IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlKCkpKQogICAgICAgICBjb250cm9sbGVyLT5yZW1vdmVBbGxEZXZpY2VFdmVudExpc3RlbmVy
cyh0aGlzKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNlbmRpZiAvLyBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fc2Nyb2xsRXZl
bnRMaXN0ZW5lckNvdW50KSB7CiAgICAgICAgIG1fc2Nyb2xsRXZlbnRMaXN0ZW5lckNvdW50ID0g
MTsKICAgICAgICAgZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcgQEAgcHVi
bGljOgogICAgIFBlcmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgaW5jcmVtZW50U2Nyb2xsRXZlbnRM
aXN0ZW5lcnNDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnND
b3VudCgpOwogICAgIHVuc2lnbmVkIHNjcm9sbEV2ZW50TGlzdGVuZXJDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsRXZlbnRMaXN0ZW5lckNvdW50OyB9CkBAIC0zODcsNyArMzg3LDcgQEAg
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFBhZ2VTdGF0dXMgeyBOb25lLCBTaG93biwgSGlkZGVu
IH07CiAgICAgUGFnZVN0YXR1cyBtX2xhc3RQYWdlU3RhdHVzIHsgUGFnZVN0YXR1czo6Tm9uZSB9
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5z
aWduZWQgbV9zY3JvbGxFdmVudExpc3RlbmVyQ291bnQgeyAwIH07CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpnTG93UG93ZXIKIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpnUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVkID0gZmFsc2U7CiBib29s
IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Z0FsbG93c0FueVNTTENlcnRpZmljYXRlID0gZmFs
c2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnTmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxl
ZCA9IGZhbHNlOwogYm9vbCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmdBVktpdEVuYWJsZWQg
PSBmYWxzZTsKIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnU2hvdWxkT3B0T3V0T2ZO
ZXR3b3JrU3RhdGVPYnNlcnZhdGlvbiA9IGZhbHNlOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRSZXNvdXIKICAgICBnUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWRFbmFibGVkID0gZmxhZzsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNl
dEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUodW5zaWduZWQgc2Vzc2lvbkNhdGVnb3J5KQog
ewogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5T3ZlcnJpZGUo
c3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+KHNlc3Npb25DYXRlZ29yeSkp
OwpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnbG9i
YWxDb24KIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgcmV0dXJuICFNYWNBcHBsaWNhdGlvbjo6
aXNJQm9va3MoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcmV0dXJuICFJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKTsKICNlbHNlCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KCkgeyByZXR1cm4gZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkRW5hYmxlZDsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKGJvb2wpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlP
dmVycmlkZSh1bnNpZ25lZCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUoKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgZ1Nob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOwogI2VuZGlmCiAgICAgc3RhdGlj
IGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVyczsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBn
TmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBnQVZLaXRFbmFibGVkOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdT
aG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6cGxhdGZvcm1HZW5lcmljRHJh
Z09wZXJhdGlvbigpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRl
eHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG92
ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RGVsYXlpbmdB
bmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9u
cygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlV2hlZWxFdmVu
dEluQXBwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmICFQTEFURk9STShJT1MpKQorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkR2VzdHVyZXNUcmlnZ2Vy
QWN0aXZlKCkKIHsKICAgICAvLyBJZiB0aGUgcGxhdGZvcm0gd2UncmUgb24gc3VwcG9ydHMgR2Vz
dHVyZVRhcERvd24gYW5kIEdlc3R1cmVUYXBDYW5jZWwgdGhlbiB3ZSdsbApAQCAtNjgzLDcgKzY4
Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICBWaXNp
YmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJp
dHk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBUaGUgdGV4dCBzZWxlY3Rpb24gYXNzaXN0YW50IHdpbGwgaGFuZGxlIHNlbGVjdGlvbiBpbiB0
aGUgY2FzZSB3aGVyZSB3ZSBhcmUgYWxyZWFkeSBlZGl0aW5nIHRoZSBub2RlCiAgICAgaWYgKG5l
d1NlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gdGFyZ2V0Tm9kZS0+cm9vdEVkaXRh
YmxlRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTYsNyArMTA1Niw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKICAgICAgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5oYXNFZGl0
YWJsZVN0eWxlKCkpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gbm9kZS0+
cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIp
OwogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgLy8g
T24gaU9TLCBzZWxlY3Rpb24gY2hhbmdlcyBhcmUgdHJpZ2dlcmVkIHVzaW5nIHBsYXRmb3JtLXNw
ZWNpZmljIHRleHQgaW50ZXJhY3Rpb24gZ2VzdHVyZXMgcmF0aGVyIHRoYW4KICAgICAgICAgICAg
IC8vIGRlZmF1bHQgYmVoYXZpb3Igb24gY2xpY2sgb3IgbW91c2V1cC4gQXMgc3VjaCwgdGhlIG9u
bHkgdGltZSB3ZSBzaG91bGQgYWxsb3cgY2xpY2sgZXZlbnRzIHRvIGNoYW5nZSB0aGUKICAgICAg
ICAgICAgIC8vIHNlbGVjdGlvbiBvbiBpT1MgaXMgd2hlbiB3ZSBmb2N1cyBhIGRpZmZlcmVudCBl
ZGl0YWJsZSBlbGVtZW50LCBpbiB3aGljaCBjYXNlIHRoZSB0ZXh0IGludGVyYWN0aW9uCkBAIC0x
MDkzLDcgKzEwOTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Nyb2xsU3RvcCgpCiAK
IHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdGFydFBhblNjcm9sbGluZygmZG93bmNhc3Q8UmVuZGVy
Qm94PihyZW5kZXJlciksIGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CkBAIC0xOTI2LDcgKzE5
MjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgICAg
IHJldHVybiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCwg
bV9mcmFtZVNldEJlaW5nUmVzaXplZC5nZXQoKSwgZmFsc2UsIDAsIHBsYXRmb3JtTW91c2VFdmVu
dCwgZmFsc2UpOwogCiAgICAgLy8gT24gaU9TLCBvdXIgc2Nyb2xsYmFycyBhcmUgbWFuYWdlZCBi
eSBVSUtpdC4KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIFNlbmQgZXZlbnRzIHJpZ2h0IHRvIGEgc2Nyb2xsYmFyIGlmIHRoZSBtb3VzZSBpcyBw
cmVzc2VkLgogICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICYmIG1fbW91c2VQcmVz
c2VkKQogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91c2VNb3Zl
ZChwbGF0Zm9ybU1vdXNlRXZlbnQpOwpAQCAtMTk2MCw3ICsxOTYwLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KAogICAgICAgICB1cGRhdGVMYXN0U2Nyb2xsYmFy
VW5kZXJNb3VzZShzY3JvbGxiYXIsIG1fbW91c2VQcmVzc2VkID8gU2V0T3JDbGVhckxhc3RTY3Jv
bGxiYXI6OkNsZWFyIDogU2V0T3JDbGVhckxhc3RTY3JvbGxiYXI6OlNldCk7CiAKICAgICAgICAg
Ly8gT24gaU9TLCBvdXIgc2Nyb2xsYmFycyBhcmUgbWFuYWdlZCBieSBVSUtpdC4KLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1fbW91
c2VQcmVzc2VkICYmIHNjcm9sbGJhcikKICAgICAgICAgICAgIHNjcm9sbGJhci0+bW91c2VNb3Zl
ZChwbGF0Zm9ybU1vdXNlRXZlbnQpOyAvLyBIYW5kbGUgaG92ZXIgZWZmZWN0cyBvbiBwbGF0Zm9y
bXMgdGhhdCBzdXBwb3J0IHZpc3VhbCBmZWVkYmFjayBvbiBzY3JvbGxiYXIgaG92ZXJpbmcuCiAj
ZW5kaWYKQEAgLTI2ODcsMjUgKzI2ODcsMjUgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyT3JT
Y2hlZHVsZUNsZWFyaQogICAgIGNsZWFyTGF0Y2hlZFN0YXRlKCk7CiB9CiAgICAgCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKIEludFBvaW50IEV2
ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwo
KSBjb25zdAogewogICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247CiB9CiAgICAg
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQogICAgIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgCiBib29sIEV2ZW50SGFuZGxlcjo6
c2hvdWxkVXBkYXRlQXV0b3Njcm9sbCgpCiB7CiAgICAgcmV0dXJuIG1vdXNlUHJlc3NlZCgpOwog
fQogICAgIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIFdpZGdldCogRXZlbnRIYW5kbGVyOjp3aWRnZXRGb3JFdmVudFRhcmdldChF
bGVtZW50KiBldmVudFRhcmdldCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogT0JKQ19DTEFTUyBOU1ZpZXc7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JK
Q19DTEFTUyBXZWJFdmVudDsKICNlbmRpZgogCkBAIC01NSw3ICs1NSw3IEBAIE9CSkNfQ0xBU1Mg
V2ViRXZlbnQ7CiBPQkpDX0NMQVNTIE5TRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgZGVmaW5lZChfX09CSkNfXykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBkZWZp
bmVkKF9fT0JKQ19fKQogI2luY2x1ZGUgIldBS0FwcEtpdFN0dWJzLmgiCiAjZW5kaWYKIApAQCAt
MjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRlZmF1bHRU
b3VjaEV2ZW50SGFuZGxlcihOb2RlJiwgVG91Y2hFdmVudCYpOwogI2VuZGlmCiAKQEAgLTI4NSw3
ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3aGVlbEV2ZW50KE5T
RXZlbnQgKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VEb3duKFdlYkV2ZW50ICopOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VVcChXZWJFdmVudCAqKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG1vdXNlTW92ZWQoV2ViRXZlbnQgKik7CkBAIC0zMDgsNyArMzA4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBOU0V2ZW50ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVudCgp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBzdGF0aWMgV2ViRXZlbnQgKmN1cnJlbnRFdmVudCgpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlQ2xpY2soKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB0cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbik7CiAjZW5kaWYK
ICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2VsZWN0aW9uQXV0b3Njcm9sbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbkluV2luZG93KTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNhbmNlbFNlbGVjdGlvbkF1dG9zY3JvbGwoKTsKICAgICBJbnRQb2lu
dCBtX3RhcmdldEF1dG9zY3JvbGxQb3NpdGlvbkluV2luZG93OwpAQCAtMzk3LDcgKzM5Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xpY2soKTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsx
MDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2VuZGlmCiAKQEAg
LTExNSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbEZyZXF1ZW5jeSB7IDEwMDBfcyAvIDYwLiB9Owog
I2VuZGlmCiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBGcmFtZTo6RnJhbWUoUGFnZSYgcGFnZSwgSFRN
TEZyYW1lT3duZXJFCiAgICAgLCBtX2VkaXRvcihtYWtlVW5pcXVlUmVmPEVkaXRvcj4oKnRoaXMp
KQogICAgICwgbV9zZWxlY3Rpb24obWFrZVVuaXF1ZVJlZjxGcmFtZVNlbGVjdGlvbj4odGhpcykp
CiAgICAgLCBtX2FuaW1hdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxDU1NBbmltYXRpb25D
b250cm9sbGVyPigqdGhpcykpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLCBtX292ZXJmbG93QXV0b1Njcm9sbFRpbWVyKCp0aGlzLCAmRnJhbWU6Om92
ZXJmbG93QXV0b1Njcm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlbGVjdGlvbkNoYW5nZUNhbGxi
YWNrc0Rpc2FibGVkKGZhbHNlKQogI2VuZGlmCkBAIC01MDMsNyArNTAzLDcgQEAgU3RyaW5nIEZy
YW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KAogICAgIHJldHVybiBtYXRjaExhYmVsc0Fn
YWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGlkQXR0cikpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiB2b2lkIEZyYW1lOjpzY3JvbGxPdmVyZmxvd0xheWVyKFJlbmRlckxheWVyKiBsYXll
ciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGV4cG9zZVJlY3Qp
CiB7CiAgICAgaWYgKCFsYXllcikKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIEZyYW1lOjpzZWxl
Y3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhCiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0aW9uQ2hhbmdl
Q2FsbGJhY2tzRGlzYWJsZWQ7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJp
bnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2lu
YWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90
IHNob3VsZEFkanVzdFZpZXdTaXplKQogewpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgRnJhbWU6
OndpbGxEZXRhY2hQYWdlKCkKICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSAmJiBtX3ZpZXcpCiAgICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKS0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqbV92aWV3KTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9m
T2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzKCkgPiAwICYmIG1fcGFnZSkKICAgICAgICAgbV9wYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5jbGVhckNvbnRlbnRDaGFuZ2VPYnNlcnZlcnMoKnRoaXMpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNpYmxlU2Vs
ZWN0aW9uLmgiCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3Np
dGlvbjsKIGNsYXNzIFdpZGdldDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogZW51bSB7CiAgICAgT3ZlcmZsb3dTY3JvbGxOb25lID0gMCwKICAgICBPdmVy
Zmxvd1Njcm9sbExlZnQgPSAxIDw8IDAsCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdCgpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIENyZWF0ZXMgPGh0bWw+PGJvZHkgc3R5bGU9Ii4uLiI+PC9ib2R5PjwvaHRtbD4g
ZG9pbmcgbWluaW1hbCBhbW91bnQgb2Ygd29yay4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYp
OwogI2VuZGlmCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIE5TQXJyYXkgKmRhdGFE
ZXRlY3Rpb25SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5n
ZXQoKTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJik7CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElz
SW5DZWxsQWJvdmUpOwogICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFNjcm9sbCB0aGUgc2VsZWN0aW9uIGlu
IGFuIG92ZXJmbG93IGxheWVyLgogICAgIHZvaWQgc2Nyb2xsT3ZlcmZsb3dMYXllcihSZW5kZXJM
YXllciosIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBleHBvc2VS
ZWN0KTsKIApAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFfREVU
RUNUSU9OKQogICAgIFJldGFpblB0cjxOU0FycmF5PiBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzOwog
I2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29uc3QgSW50UG9pbnQmIHRlc3RQb2ludCwgY29u
c3QgTm9kZVF1YWxpZmllciYsIE5vZGUqJiBiZXN0LCBOb2RlKiBmYWlsZWROb2RlLCBJbnRQb2lu
dCYgYmVzdFBvaW50LCBJbnRSZWN0JiBiZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgdGVzdFJlY3Qp
OwogICAgIGJvb2wgaGl0VGVzdFJlc3VsdEF0Vmlld3BvcnRMb2NhdGlvbihjb25zdCBGbG9hdFBv
aW50JiB2aWV3cG9ydExvY2F0aW9uLCBIaXRUZXN0UmVzdWx0JiwgSW50UG9pbnQmIGNlbnRlcik7
CiAgICAgTm9kZSogcXVhbGlmeWluZ05vZGVBdFZpZXdwb3J0TG9jYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgdmlld3BvcnRMb2NhdGlvbiwgRmxvYXRQb2ludCYgYWRqdXN0ZWRWaWV3cG9ydExvY2F0
aW9uLCBjb25zdCBOb2RlUXVhbGlmaWVyJiwgYm9vbCBzaG91bGRBcHByb3hpbWF0ZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMs
NyBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRlci5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVDYWNoZS5oIgogI2VuZGlmCkBAIC0xOTMs
NyArMTkzLDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUmIGZyYW1lKQogICAgICwgbV9z
aG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbih0cnVlKQogICAgICwgbV9zcGVjdWxhdGl2ZVRpbGlu
Z0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NwZWN1bGF0aXZlVGlsaW5nRW5hYmxlVGltZXIoKnRo
aXMsICZGcmFtZVZpZXc6OnNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlVGltZXJGaXJlZCkKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdXNlQ3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3QoZmFsc2UpCiAgICAgLCBtX3VzZUN1c3RvbVNpemVGb3JS
ZXNpemVFdmVudChmYWxzZSkKICNlbmRpZgpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpjbGVhcigpCiAKICAgICBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZCh0cnVlKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRvIGF2b2lk
IGZsYXNoZXMgb2Ygd2hpdGUsIGRpc2FibGUgdGlsZSB1cGRhdGVzIGltbWVkaWF0ZWx5IHdoZW4g
dmlldyBpcyBjbGVhcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBwYWdlIGxvYWQuCiAgICAgLy8g
VGlsaW5nIHdpbGwgYmUgcmUtZW5hYmxlZCBmcm9tIFVJS2l0IHZpYSBbV0FLV2luZG93IHNldFRp
bGluZ01vZGU6XSB3aGVuIHdlIGhhdmUgY29udGVudCB0byBkcmF3LgogICAgIGlmIChMZWdhY3lU
aWxlQ2FjaGUqIHRpbGVDYWNoZSA9IGxlZ2FjeVRpbGVDYWNoZSgpKQpAQCAtNDI0LDcgKzQyNCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpjbGVhcigpCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBGcmFtZVZpZXc6OmRpZFJlcGxhY2VN
dWx0aXBhcnRDb250ZW50KCkKIHsKICAgICAvLyBSZS1lbmFibGUgdGlsZSB1cGRhdGVzIHRoYXQg
d2VyZSBkaXNhYmxlZCBpbiBjbGVhcigpLgpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpzZXRNYXJnaW5IZWlnaHQoTGF5b3V0VW4KIAogRnJhbWVGbGF0dGVuaW5nIEZyYW1lVmll
dzo6ZWZmZWN0aXZlRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1Mgd2hlbiBhc3luYyBmcmFt
ZSBzY3JvbGxpbmcgaXMgZW5hYmxlZCwgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB1c2UgZnVs
bCBmcmFtZSBmbGF0dGVuaW5nLgogICAgIC8vIEluIHRoYXQgY2FzZSwgd2UganVzdCBjb25zaWRl
ciB0aGF0IGZyYW1lIGZsYXR0ZW5pbmcgaXMgZGlzYWJsZWQuIFRoaXMgYWxsb3dzIHBlb3BsZSB0
byB0ZXN0CiAgICAgLy8gZnJhbWUgc2Nyb2xsaW5nIG9uIGlPUyBieSBlbmFibGluZyAiQXN5bmMg
RnJhbWUgU2Nyb2xsaW5nIiB2aWEgdGhlIFNhZmFyaSBtZW51LgpAQCAtOTk0LDcgKzk5NCw3IEBA
IGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3IKICAgICBpZiAobmVlZHNM
YXlvdXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKExlZ2FjeVRpbGVDYWNoZSogdGlsZUNhY2hl
ID0gbGVnYWN5VGlsZUNhY2hlKCkpCiAgICAgICAgIHRpbGVDYWNoZS0+ZG9QZW5kaW5nUmVwYWlu
dHMoKTsKICNlbmRpZgpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgTGF5b3V0UmVjdCBGcmFtZVZpZXc6
OmZpeGVkU2Nyb2xsYWJsZUFyZQogCiBMYXlvdXRQb2ludCBGcmFtZVZpZXc6OnNjcm9sbFBvc2l0
aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRpb24oKSBjb25zdAogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZnJhbWUoKS5zZXR0aW5n
cygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdXNlQ3VzdG9tRml4
ZWRQb3NpdGlvbkxheW91dFJlY3QoKSA/IGN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KCku
bG9jYXRpb24oKSA6IHNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKQEAgLTE3OTIsNyArMTc5Miw3
IEBAIExheW91dFJlY3QgRnJhbWVWaWV3Ojp2aWV3cG9ydENvbnN0cmFpbmUKIHsKICAgICBBU1NF
UlQoIWZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodXNlQ3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSkKICAgICAgICAgcmV0dXJuIGN1c3RvbUZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0KCk7CiAjZW5kaWYKQEAgLTE4ODMsNyArMTg4Myw3IEBAIEZsb2F0UG9p
bnQgRnJhbWVWaWV3Ojpwb3NpdGlvbkZvclJvb3RDb24KICAgICByZXR1cm4gcG9zaXRpb25Gb3JS
b290Q29udGVudExheWVyKHNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9yaWdpbigpLCB0b3BDb250
ZW50SW5zZXQoKSwgaGVhZGVySGVpZ2h0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBMYXlvdXRSZWN0IEZyYW1lVmlldzo6cmVjdEZvclZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzKGNvbnN0IExheW91dFJlY3QmIHZpc2libGVDb250ZW50UmVj
dCwgY29uc3QgTGF5b3V0U2l6ZSYgdG90YWxDb250ZW50c1NpemUsIGZsb2F0IGZyYW1lU2NhbGVG
YWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgU2Nyb2xsQmVo
YXZpb3JGb3JGaXhlZEVsZW1lbnRzIHNjcm9sbEJlaGF2aW9yKQogewogICAgIGlmIChmaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQpAQCAtMjY2NCw3ICsyNjY0LDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCiAgICAgaWYgKCFmcmFtZSgpLnZpZXcoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKSkgewogICAgICAgICBpZiAodXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSAm
JiBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKSB7CiAgICAgICAgICAgICBzZXRWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKQEAgLTI3MDcsNyArMjcwNyw3IEBA
IFRpbGVkQmFja2luZzo6U2Nyb2xsYWJpbGl0eSBGcmFtZVZpZXc6OmMKICAgICBib29sIHZlcnRp
Y2FsbHlTY3JvbGxhYmxlOwogICAgIGJvb2wgY2xpcHBlZEJ5QW5jZXN0b3JWaWV3ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4obV92aWV3RXhwb3NlZFJlY3QpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHBhZ2UpCiAgICAgICAgIGNsaXBwZWRCeUFu
Y2VzdG9yVmlldyB8PSBwYWdlLT5lbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldygpOwog
I2VuZGlmCkBAIC0yNzQyLDcgKzI3NDIsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlVGlsZWRC
YWNraW5nQWRhcHRpCiAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxhYmlsaXR5KGNvbXB1dGVT
Y3JvbGxhYmlsaXR5KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIHZvaWQgRnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2Vk
KCkKIHsKQEAgLTI4MTQsNyArMjgxNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RUaWxlZEJh
Y2tpbmdDb3ZlcmEKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmll
dygpOwogICAgIGlmIChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPmxheWVyKCkgJiYgcmVuZGVy
Vmlldy0+bGF5ZXIoKS0+YmFja2luZygpKQogICAgICAgICByZW5kZXJWaWV3LT5sYXllcigpLT5i
YWNraW5nKCktPmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKExlZ2FjeVRpbGVDYWNoZSogdGls
ZUNhY2hlID0gbGVnYWN5VGlsZUNhY2hlKCkpCiAgICAgICAgIHRpbGVDYWNoZS0+c2V0U3BlY3Vs
YXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkKG1fc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVkKTsKICNl
bmRpZgpAQCAtMjk3Myw3ICsyOTczLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUV4dGVuZEJh
Y2tncm91bmRJZgogCiBGcmFtZVZpZXc6OkV4dGVuZGVkQmFja2dyb3VuZE1vZGUgRnJhbWVWaWV3
OjpjYWxjdWxhdGVFeHRlbmRlZEJhY2tncm91bmRNb2RlKCkgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyA8cmRhcjovL3Byb2JsZW0v
MTYyMDEzNzM+CiAgICAgcmV0dXJuIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lOwogI2Vsc2UK
QEAgLTMyNDAsNyArMzI0MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRh
c2tzKCkKICAgICBpZiAoIWxheW91dENvbnRleHQoKS5pc0xheW91dE5lc3RlZCgpICYmIGZyYW1l
KCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIGZpcmVMYXlvdXRSZWxh
dGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbmx5IHNlbmQgbGF5b3V0LXJlbGF0ZWQgZGVsZWdhdGUg
Y2FsbGJhY2tzIHN5bmNocm9ub3VzbHkgZm9yIHRoZSBtYWluIGZyYW1lIHRvCiAgICAgLy8gYXZv
aWQgcmUtZW50ZXJpbmcgbGF5b3V0IGZvciB0aGUgbWFpbiBmcmFtZSB3aGlsZSBkZWxpdmVyaW5n
IGEgbGF5b3V0LXJlbGF0ZWQgZGVsZWdhdGUKICAgICAvLyBjYWxsYmFjayBmb3IgYSBzdWJmcmFt
ZS4KQEAgLTMyODYsNyArMzI4Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91
dFRhc2tzKCkKIAogSW50U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JSZXNpemVFdmVudCgpIGNvbnN0
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KG1fdXNlQ3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50KQogICAgICAgICByZXR1cm4gbV9jdXN0b21T
aXplRm9yUmVzaXplRXZlbnQ7CiAjZW5kaWYKQEAgLTMzMTksNyArMzMxOSw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgKICAgICBpZiAoIWxheW91dENvbnRleHQo
KS5kaWRGaXJzdExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBEb24ndCBzZW5kIHRoZSByZXNpemUg
ZXZlbnQgaWYgdGhlIGRvY3VtZW50IGlzIGxvYWRpbmcuIFNvbWUgcGFnZXMgYXV0b21hdGljYWxs
eSByZWxvYWQKICAgICAvLyB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZDsgU2FmYXJpIG9uIGlP
UyBvZnRlbiByZXNpemVzIHRoZSB3aW5kb3cgd2hpbGUgc2V0dGluZyB1cCBpdHMKICAgICAvLyB2
aWV3cG9ydC4gVGhpcyBvYnZpb3VzbHkgY2FuIGNhdXNlIHByb2JsZW1zLgpAQCAtNDg5Myw3ICs0
ODkzLDcgQEAgQVhPYmplY3RDYWNoZSogRnJhbWVWaWV3OjpheE9iamVjdENhY2hlKAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBib29sIEZyYW1lVmlldzo6dXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Qo
KSBjb25zdAogewogICAgIHJldHVybiAhZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0
RW5hYmxlZCgpICYmIG1fdXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q7CkBAIC00OTM4
LDcgKzQ5MzgsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsVmVsb2NpdHkoZG91YmxlCiAg
ICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gdGhpcy0+dGlsZWRCYWNraW5nKCkp
CiAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0VmVsb2NpdHkoVmVsb2NpdHlEYXRhKGhvcml6b250
YWxWZWxvY2l0eSwgdmVydGljYWxWZWxvY2l0eSwgc2NhbGVDaGFuZ2VSYXRlLCB0aW1lc3RhbXAp
KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoYm9vbCBmbGFnKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZVNlbGVj
dGlvblVwZGF0ZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYm9vbCB1c2VDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpIGNvbnN0Owog
ICAgIEludFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2N1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdChjb25zdCBJbnRSZWN0Jik7CkBA
IC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCB5UG9zaXRpb25Gb3JI
ZWFkZXJMYXllcihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgdG9wQ29u
dGVudEluc2V0KTsKICAgICBzdGF0aWMgZmxvYXQgeVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGZsb2F0IHRvcENvbnRlbnRJbnNldCwgZmxv
YXQgdG90YWxDb250ZW50c0hlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0KTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIExh
eW91dFJlY3Qgdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNSZWN0KCkgY29uc3Q7CiAgICAgLy8g
U3RhdGljIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgTGF5b3V0UmVjdCByZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBMYXlv
dXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZSwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBm
aXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lLCBTY3JvbGxCZWhhdmlvckZvckZpeGVk
RWxlbWVudHMpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQYWlu
dENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFp
bnRpbmdTdGF0ZSYpOwogICAgIHZvaWQgZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3RhdGUmKTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKICNlbmRpZgogCkBAIC03MjcsNyArNzI3
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgY29udGVudHNSZXNpemVkKCkgZmluYWw7
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBmaW5hbDsKICNlbmRpZgogCkBAIC04ODAs
NyArODgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVk
OwogICAgIFRpbWVyIG1fc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1lcjsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV91c2VDdXN0b21G
aXhlZFBvc2l0aW9uTGF5b3V0UmVjdDsKICAgICBJbnRSZWN0IG1fY3VzdG9tRml4ZWRQb3NpdGlv
bkxheW91dFJlY3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdM
YXlvdXRDb250ZXh0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0KCkKICAgICBpZiAobV9m
aXJzdExheW91dCAmJiAhZnJhbWUoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgTE9HKExheW91
dCwgIkZyYW1lVmlldyAlcCBlbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJS4zZnMi
LCB0aGlzLCBkb2N1bWVudCgpLT50aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCkudmFsdWUoKSk7
CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAodmlldygpLnVwZGF0ZUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KCkgJiYgc3VidHJlZUxh
eW91dFJvb3QoKSkKICAgICAgICAgY29udmVydFN1YnRyZWVMYXlvdXRUb0Z1bGxMYXlvdXQoKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2Fs
TWVtb3J5KFN5bmNocgogICAgIGlmIChzeW5jaHJvbm91cyA9PSBTeW5jaHJvbm91czo6WWVzKSB7
CiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsK
ICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0Tm93SWZO
b3REb25lUmVjZW50bHkoKTsKICNlbHNlCiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9u
KCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCByZWxlYXNl
TWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeQogICAgIGlmIChzeW5jaHJvbm91cyA9PSBTeW5j
aHJvbm91czo6WWVzKSB7CiAgICAgICAgIC8vIEZhc3RNYWxsb2MgaGFzIGxvY2stZnJlZSB0aHJl
YWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJlZCBmcm9tIHRoZSB0aHJl
YWQgaXRzZWxmLgogICAgICAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeUluQWxsVGhyZWFkcygpOwotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmICFQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goV1RGOjpyZWxlYXNlRmFz
dE1hbGxvY0ZyZWVNZW1vcnkpOwogI2VuZGlmCiAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxs
b2NGcmVlTWVtb3J5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIE5hdmlnYXRvcjo6amF2YUVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIGJvb2wgTmF2aWdhdG9yOjpzdGFuZGFsb25lKCkgY29uc3QKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNoYXJl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZURhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgc3RhbmRhbG9uZSgpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEy
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEZXZpY2UuaCIKICNl
bmRpZgogCiAjaWZuZGVmIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9S
X1BMQVRGT1JNIGRldmljZU5hbWUoKQogI2VsaWYgT1MoTUFDX09TX1gpICYmIChDUFUoUFBDKSB8
fCBDUFUoUFBDNjQpKQogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSAiTWFjUFBD
Il9zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjUsNyArMTcyNSw3IEBA
IHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1YKICAgICAgICAgbV9pc1By
ZXJlbmRlciA9IGZhbHNlOwogCiAgICAgICAgIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXN1
bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKICNlbmRpZgogCkBAIC0xNzY1
LDcgKzE3NjUsNyBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWCiAK
ICAgICAgICAgc2V0U1ZHQW5pbWF0aW9uc1N0YXRlKCp0aGlzLCBTVkdBbmltYXRpb25zU3RhdGU6
OlBhdXNlZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgc3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwogI2Vu
ZGlmCiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUGFnZTo6cmVtb3ZlUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGkKIAogdm9pZCBQYWdlOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIodWludDY0
X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sIGJvb2wgaXNW
aWRlbywgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
JiByb3V0aW5nQ29udGV4dFVJRCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogcmVmYWN0b3IgaU9TIGltcGxlbWVudGF0aW9uLgog
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0SWQpOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgRmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cygpIGNvbnN0
IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoY29uc3QgRmxvYXRCb3hFeHRlbnQm
KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJv
b2wgZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Vu
Y2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3OyB9CiAgICAgdm9pZCBzZXRFbmNsb3NlZElu
U2Nyb2xsYWJsZUFuY2VzdG9yVmlldyhib29sIGYpIHsgbV9lbmNsb3NlZEluU2Nyb2xsYWJsZUFu
Y2VzdG9yVmlldyA9IGY7IH0KICNlbmRpZgpAQCAtNzg0LDcgKzc4NCw3IEBAIHByaXZhdGU6CiAg
ICAgRmxvYXRCb3hFeHRlbnQgbV9mdWxsc2NyZWVuSW5zZXRzOwogICAgIFNlY29uZHMgbV9mdWxs
c2NyZWVuQXV0b0hpZGVEdXJhdGlvbiB7IDBfcyB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2VuY2xvc2VkSW5TY3JvbGxhYmxlQW5j
ZXN0b3JWaWV3IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1lbW9yeVVzYWdlTWVhc3VyZW0KIHN0
YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5QmVmb3JlUHJvY2Vzc01heUJlY29tZUluYWN0aXZlIHsg
OF9taW4gfTsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBwb3N0UGFnZUxvYWRDUFVVc2FnZURvbWFp
blJlcG9ydGluZ1RocmVzaG9sZCB7IDIwLjAgfTsgLy8gUmVwb3J0aW5nIHBhZ2VzIHVzaW5nIG92
ZXIgMjAlIENQVSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcmVwb3J0aW5nIHRoZSAxMCUgd29y
c3QgcGFnZXMuCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBwb3N0UGFnZUxvYWRNZW1vcnlVc2FnZURvbWFpblJlcG9y
dGluZ1RocmVzaG9sZCB7IDIwNDggKiBNQiB9OwogI2VuZGlmCiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkCiAgICAgbV9wYWdlLmRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRNZW1vcnlVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6Om1lbW9yeVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luZ0tleShtZW1vcnlVc2FnZS52YWx1
ZSgpKSwgU2hvdWxkU2FtcGxlOjpObyk7CiAKICAgICAvLyBPbiBpT1MsIHdlIHJlcG9ydCBhY3R1
YWwgSmV0c2FtcyBpbnN0ZWFkLgotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKG1lbW9yeVVzYWdlLnZhbHVlKCkgPiBwb3N0UGFnZUxvYWRNZW1v
cnlVc2FnZURvbWFpblJlcG9ydGluZ1RocmVzaG9sZCkKICAgICAgICAgcmVwb3J0UGFnZU92ZXJQ
b3N0TG9hZFJlc291cmNlVGhyZXNob2xkKG1fcGFnZSwgUmVwb3J0aW5nUmVhc29uOjpIaWdoTWVt
b3J5VXNhZ2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNh
Z2VPdmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNl
VXNhZ2VPdmVybGF5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6aW5pdGlhbGl6ZSgpCiAKICAgICBJbnRSZWN0
IGluaXRpYWxSZWN0KGZyYW1lVmlldy53aWR0aCgpIC8gMiAtIG5vcm1hbFdpZHRoIC8gMiwgZnJh
bWVWaWV3LmhlaWdodCgpIC0gbm9ybWFsSGVpZ2h0IC0gMjAsIG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gRklYTUU6IFRoZSBvdmVybGF5IHNob3VsZCBiZSBzdHVjayB0byB0aGUgdmlld3BvcnQg
aW5zdGVhZCBvZiBtb3ZpbmcgYWxvbmcgd2l0aCB0aGUgcGFnZS4KICAgICBpbml0aWFsUmVjdC5z
ZXRZKDIwKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBTZWN1cml0eU9y
aWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUgogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtX2RhdGEucHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xv
Y2FsRmlsZSgpICYmICFGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgs
IHVybC5maWxlU3lzdGVtUGF0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgZmxvYXQgU2V0dGluZ3NCYXNlOjpkZWZhdWx0TWluaW11bVpvb21Gbwog
I2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogYm9vbCBTZXR0aW5nc0Jhc2U6OmRlZmF1bHRUZXh0QXV0b3NpemluZ0VuYWJsZWQoKQogewog
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBlbnVtIFBERkltYWdlQ2FjaGluZ1BvbGljeSB7
CiAgICAgUERGSW1hZ2VDYWNoaW5nQmVsb3dNZW1vcnlMaW1pdCwKICAgICBQREZJbWFnZUNhY2hp
bmdEaXNhYmxlZCwKICAgICBQREZJbWFnZUNhY2hpbmdDbGlwQm91bmRzT25seSwKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQREZJbWFnZUNhY2hpbmdE
ZWZhdWx0ID0gUERGSW1hZ2VDYWNoaW5nQmVsb3dNZW1vcnlMaW1pdAogI2Vsc2UKICAgICBQREZJ
bWFnZUNhY2hpbmdEZWZhdWx0ID0gUERGSW1hZ2VDYWNoaW5nRW5hYmxlZApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIDk5KSBNYWNF
ZGl0aW5nQmVoYXZpb3IgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLgogaW5saW5lIEVkaXRpbmdCZWhh
dmlvclR5cGUgZWRpdGluZ0JlaGF2aW9yVHlwZUZvclBsYXRmb3JtKCkKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gRWRpdGluZ0lPU0Jl
aGF2aW9yOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHJldHVybiBFZGl0aW5nTWFjQmVoYXZpb3I7
CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRZb3VUdWJlRmxhc2hQ
bHUKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRZb3VUdWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVu
dEVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Rml4ZWRCYWNrZ3JvdW5k
c1BhaW50UmVsYXRpdmVUb0RvY3VtZW50ID0gdHJ1ZTsKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1
bHRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQgPSB0cnVlOwog
c3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBmYWxz
ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFi
bGVkID0gCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVkID0gZmFsc2U7CiAj
ZW5kaWYKICAgICAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogc3RhdGljIGNvbnN0IGJvb2wg
ZGVmYXVsdENvbmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIGRl
ZmF1bHRDb25pY0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiU2VsZWN0aW9u
UmVjdC5oIgogI2VuZGlmCiAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmUHRyPFRleHRJbmRpY2F0b3I+
IFRleHRJbmRpY2F0b3I6OmNyZQogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24g
PSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgT3B0aW9uU2V0PFRlbXBvcmFy
eVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uczsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0ZW1wb3JhcnlTZWxlY3Rpb25P
cHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFuZ2Vz
KTsKICAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25P
cHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKQEAgLTE4MSw3ICsxODEsNyBA
QCBzdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JECiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
c3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uUmVjdHNGb3JSYW5nZShWZWN0b3I8RmxvYXRSZWN0PiYg
cmVzdWx0aW5nUmVjdHMsIGNvbnN0IFJhbmdlJiByYW5nZSkKIHsKQEAgLTMwNCw3ICszMDQsNyBA
QCBzdGF0aWMgYm9vbCBpbml0aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpCiAKICAgICBpZiAoKGRh
dGEub3B0aW9ucyAmIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFs
bENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzKSAmJiAoaGFzTm9uSW5saW5lT3JSZXBsYWNlZEVsZW1l
bnRzKHJhbmdlKSB8fCB0cmVhdFJhbmdlQXNDb21wbGV4RHVlVG9JbGxlZ2libGVUZXh0Q29sb3Jz
KSkKICAgICAgICAgZGF0YS5vcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEFsbENv
bnRlbnQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ZWxzZSBpZiAoZGF0YS5vcHRpb25zICYgVGV4dEluZGljYXRvck9wdGlvblVzZVNlbGVjdGlvblJl
Y3RGb3JTaXppbmcpCiAgICAgICAgIGdldFNlbGVjdGlvblJlY3RzRm9yUmFuZ2UodGV4dFJlY3Rz
LCByYW5nZSk7CiAjZW5kaWYKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFs
aXplSW5kaWNhdG9yKFRleHRJbmRpCiAKICAgICAvLyBVc2UgdGhlIGV4cG9zZWRDb250ZW50UmVj
dC92aWV3RXhwb3NlZFJlY3QgaW5zdGVhZCBvZiB2aXNpYmxlQ29udGVudFJlY3QgdG8gYXZvaWQg
Y3JlYXRpbmcgYSBodWdlIGluZGljYXRvciBmb3IgYSBsYXJnZSB2aWV3IGluc2lkZSBhIHNjcm9s
bCB2aWV3LgogICAgIEludFJlY3QgY29udGVudHNDbGlwUmVjdDsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0NsaXBSZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChmcmFtZVZpZXctPmV4cG9zZWRDb250ZW50UmVjdCgpKTsKICNlbHNlCiAgICAg
aWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gZnJhbWVWaWV3LT52aWV3RXhwb3NlZFJlY3QoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJQbGF0
Zm9ybVNjcmVlbi5oIgogI2VuZGlmCiAKQEAgLTMyMiw3ICszMjIsNyBAQCBWaWV3cG9ydENvbmZp
Z3VyYXRpb246OlBhcmFtZXRlcnMgVmlld3BvCiB7CiAgICAgUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFy
YW1ldGVycy53aWR0aCA9IHN0YXRpY19jYXN0PGludD4oc2NyZWVuU2l6ZSgpLndpZHRoKCkpOwog
I2Vsc2UKICAgICAvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSB1bmlmaWVkIHdpdGggVmlld3Bv
cnRBcmd1bWVudHMgb24gYWxsIHBvcnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9NZW1vcnlSZWxlYXNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0IDxub3RpZnkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
aW9zL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hlLmgiCiAjaW1wb3J0ICJU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIKICNlbmRpZgpAQCAtNDcsNyArNDcsNyBA
QCB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkKICAgICBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2xlYXIoKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKElPU01BQykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1J
TFkpICYmICFQTEFURk9STShJT1NNQUMpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNhbGwg
dG8gR1NGb250SW5pdGlhbGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMyODg2NzE1PiBpcyBm
aXhlZC4KICAgICBHU0ZvbnRJbml0aWFsaXplKCk7CiAgICAgR1NGb250UHVyZ2VGb250Q2FjaGUo
KTsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwp
CiAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29sOjphbGxMYXllclBvb2xzKCkpCiAgICAg
ICAgIHBvb2wtPmRyYWluKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBMZWdhY3lUaWxlQ2FjaGU6OmRyYWluTGF5ZXJQb29sKCk7CiAgICAgdGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCkudHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KDAp
OwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENy
aXRpY2FsKQogCiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0c09uVG9wTGV2ZWxOYXZpZ2F0
aW9uKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBQcm90ZWN0IGFnYWluc3QgZG9pbmcgZXhjZXNzaXZlIGpldHRpc29uaW5nIGR1cmluZyBy
ZXBlYXRlZCBuYXZpZ2F0aW9ucy4KICAgICBjb25zdCBhdXRvIG1pbmltdW1UaW1lU2luY2VOYXZp
Z2F0aW9uID0gMl9zOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgdm9pZCBzaG93VGV4dChDR0Nv
bnRleHRSZWYgY29udGV4CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRl
eHQsIGNvbG9yKTsKIAogICAgIGF1dG8gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoMSwgLTEpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gQ0ZTVFIoIkNvdXJpZXIiKTsKICAgICBDR0Zsb2F0
IGZvbnRTaXplID0gMTA7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9S
ZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c2l6ZV90IHZtUGFnZVNpemUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHJldHVybiB2bV9rZXJuZWxfcGFnZV9zaXplOwogI2Vsc2UKICAgICBz
dGF0aWMgc2l6ZV90IGNhY2hlZCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIkRldmljZS5oIgogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1VJS2l0U1BJ
Lmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtp
dCkKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkV2ZW50SGFuZGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbXBvcnQgIkF1dG9zY3JvbGxD
b250cm9sbGVyLmgiCkBAIC02OTEsNCArNjkxLDQgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRyeVRv
QmVnaW5EYXRhSW50ZXJhYwogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJGcmFtZS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IkNvbW1vblZNLmgiCkBAIC03NTEsNCArNzUxLDQgQEAgdm9pZCBGcmFtZTo6cmVzZXRBbGxHZW9s
b2NhdGlvblBlcm1pc3NpbwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9DaHJvbWVNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0Nocm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogI2ltcG9ydCAiQ2hyb21lQ2xpZW50LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCiAjaW5jbHVkZSAiV0FLVmlldy5oIgogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAKICNpbXBvcnQgIlNWR0RvY3VtZW50LmgiCiAjaW1wb3J0IDxwYWwvTG9nZ2lu
Zy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNlbmRpZgogCkBAIC00Nyw3ICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkZFNj
aGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKSk7CiAjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVs
ZVBhaXI6OmNyZWF0ZShbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gZ2V0Q0ZSdW5Mb29wXSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
V2ViQ29yZUZyYW1lVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgIlNjcm9sbFR5cGVzLmgiCiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0uaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV0FL
QXBwS2l0U3R1YnMuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNyBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29uY2lsCiAgICAgICAgICAgICBsYXlv
dXRWaWV3cG9ydFJlY3QgPSBvdmVycmlkZVJlY3Q7CiAgICAgICAgICAgICBpZiAodmlzdWFsVmll
d3BvcnRFbmFibGVkICYmIHZpZXdwb3J0UmVjdFN0YWJpbGl0eSAhPSBWaWV3cG9ydFJlY3RTdGFi
aWxpdHk6OkNoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5KQogICAgICAgICAgICAg
ICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChMYXlvdXRSZWN0KG92
ZXJyaWRlUmVjdC52YWx1ZSgpKSwgdmlld3BvcnRSZWN0U3RhYmlsaXR5ID09IFZpZXdwb3J0UmVj
dFN0YWJpbGl0eTo6U3RhYmxlID8gRnJhbWVWaWV3OjpUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcyA6
IEZyYW1lVmlldzo6VHJpZ2dlckxheW91dE9yTm90OjpObyk7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBlbHNlIGlmICh2aWV3cG9ydFJl
Y3RTdGFiaWxpdHkgPT0gVmlld3BvcnRSZWN0U3RhYmlsaXR5OjpTdGFibGUpCiAgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3Qob3ZlcnJpZGVSZWN0LnZhbHVlKCkpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgbWFp
bkZyYW1lU2Nyb2xsUG9zaXRpb24oKTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVj
dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRQYW5H
ZXN0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0
U2Nyb2xsKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJTY3JvbGxp
bmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOwogCiBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9k
ZSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZnJp
ZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAj
aW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgogCkBAIC02Niw0ICs2Niw0IEBA
IGNvbnN0IEludFBvaW50JiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm8KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw0ICs1NSw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3Jv
bGxpbmdDb29yZGluYXRvcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbmNsdWRlICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAKQEAgLTU5LDQgKzU5
LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9ySU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNjcm9sbGluZ0Nvb3JkaW5hdG9y
SU9TLmgiCiAKQEAgLTEwMCw0ICsxMDAsNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9T
Ojpjb21taXRUcmVlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtNzIsNCArNzIsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmgiCiAKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQ
TEFURk9STShJT1MpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdDb29y
ZGluYXRvci5oIgpAQCAtMjAxLDQgKzIwMSw0IEBAIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm8KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZUlPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlSU9TLmgiCiAKLSNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAg
LTEyMSw0ICsxMjEsNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJ
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZVRyZWUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCkBAIC02Miw0ICs2Miw0
IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX1RSRUUoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUlPUywgaXNTY3JvbGxpbmdUcmVlSU9TKCkpCiAKLSNlbmRpZiAv
LyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
CiBPQkpDX0NMQVNTIE5TQ29kZXI7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwogI2VuZGlmCiAKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
KCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcihTdHJpbmcgdW5ibG9ja1VSTEhvc3QsIFVuYmxvY2tSZXF1ZXN0ZXJGdW5jdGlvbik7Ci0j
aWYgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEhBVkUoUEFS
RU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyKFN0cmluZyB1bmJsb2NrVVJMSG9zdCwgUmV0YWluUHRyPFdlYkZpbHRl
ckV2YWx1YXRvcj4pOwogI2VuZGlmCiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV91bmJsb2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKICAgICBV
bmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24gbV91bmJsb2NrUmVxdWVzdGVyOwotI2lmIEhBVkUoUEFS
RU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRS
T0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxXZWJGaWx0ZXJFdmFs
dWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9yOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJzb3IuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC00NTEsNSArNDUxLDUgQEAgY29uc3QgQ3Vyc29yJiBncmFiYmlu
Z0N1cnNvcigpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
IAogICAgIEN1cnNvcigpID0gZGVmYXVsdDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgQ3Vy
c29yJiBmcm9tVHlwZShDdXJzb3I6OlR5cGUpOwogCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0N1cnNvcj4gbV9wbGF0Zm9ybUN1cnNvcjsKICNl
bmRpZgogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIH07CiAKIEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqLCBjb25zdCBJ
bnRQb2ludCYgc3BlY2lmaWVkSG90U3BvdCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgY29uc3QgQ3Vy
c29yJiBub25lQ3Vyc29yKCk7CiBjb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKTsKIGNvbnN0IEN1
cnNvciYgZ3JhYmJpbmdDdXJzb3IoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIGlubGluZSBDdXJzb3I6OlR5cGUgQ3Vyc29yOjp0eXBlKCkgY29u
c3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0
YXRlIHsKICAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dD4gc2Vs
ZWN0aW9uOwogfTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYgZnJhbWUs
IFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwogI2VsaWYgUExB
VEZPUk0oTUFDKQpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmFuZ2U7CiBj
bGFzcyBVUkw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRG
T1JNKE1BQykKIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0
IFZlY3QKICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0
aW9uIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gRmlsZUNob29zZXI6OmNob29zZUZpbGVzKCkuIFdl
IHNob3VsZCBtZXJnZSB0aGlzIGZ1bmN0aW9uCi0vLyB3aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VG
aWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisvLyB3aXRo
IEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JN
KElPU19GQU1JTFkpLWd1YXJkLgogdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlTWVkaWFGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJp
bmcsIEljb24qIGljb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBz
aG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUNob29zZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsOSArODgsOSBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocyk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlkZW50aWNh
bCB0byBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4gV2Ugc2hvdWxkIG1lcmdlIHRoaXMKLSAg
ICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSBy
ZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisgICAgLy8gZnVuY3Rpb24gd2l0aCBGaWxl
Q2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKSBhbmQgaGVuY2UgcmVtb3ZlIHRoZSBQTEFURk9STShJT1Nf
RkFNSUxZKS1ndWFyZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZU1lZGlhRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcs
IEljb24qKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2lu
ZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIE1ldGhv
ZHMgZm9yIGRvaW5nIGNvb3JkaW5hdGUgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gc2NyZWVuIGNv
b3JkaW5hdGVzLgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRS
ZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9
IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgKIAogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCiB7CkBA
IC00MjUsNyArNDI1LDcgQEAgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4
dAogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDbGVhciBSZWNlbnQgU2VhcmNoZXMiLCAibWVu
dSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVu
dHMiKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIFN0cmluZyBBWFdlYkFyZWFUZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4
dCgpOwogICAgIFN0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCk7CiAgICAgU3Ry
aW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwpAQCAtMjQwLDcgKzI0MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcga2V5Z2Vu
S2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgaHRtbFNlbGVj
dE11bHRpcGxlSXRlbXMoc2l6ZV90IG51bSk7CiAgICAgU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VN
ZWRpYUZpbGVMYWJlbCgpOwogICAgIFN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVNZWRp
YUZpbGVzTGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9k
ZU5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQ
b3dlck1vZGVOb3RpZmllci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAm
JiAhVVNFKEdMSUIpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFVU0UoR0xJQikKIAog
TG93UG93ZXJNb2RlTm90aWZpZXI6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyKExvd1Bvd2VyTW9kZUNo
YW5nZUNhbGxiYWNrJiYpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dl
ck1vZGVOb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
d1Bvd2VyTW9kZU5vdGlmaWVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
T0JKQ19DTEFTUyBXZWJMb3dQb3dlck1vZGVPYnNlcnZlcjsKICNlbmRpZgpAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2b2lkIG5vdGlmeUxvd1Bvd2VyTW9kZUNoYW5nZWQoYm9vbCk7CiAg
ICAgZnJpZW5kIHZvaWQgbm90aWZ5TG93UG93ZXJNb2RlQ2hhbmdlZChMb3dQb3dlck1vZGVOb3Rp
ZmllciYsIGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAgICAgc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UvcGpwZWciKTsKICAgICBzdXBwb3J0ZWRJbWFnZVJl
c291cmNlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1p
bWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1l
ZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0CiAgICAgLy8gVGhlc2Ugd2VyZSByZW1vdmVkIGZvciA8
cmRhcjovL3Byb2JsZW0vNjU2NDUzOD4gUmUtZW5hYmxlIFVUSSBjb2RlIGluIFdlYkNvcmUgbm93
IHRoYXQgTW9iaWxlQ29yZVNlcnZpY2VzIGV4aXN0cwogICAgIC8vIEJ1dCBNYWlsIHJlbGllcyBv
biBhdCBsZWFzdCBpbWFnZS90aWYgcmVwb3J0ZWQgYXMgYmVpbmcgc3VwcG9ydGVkIChzaG91bGQg
YmUgaW1hZ2UvdGlmZikuCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVN1cHBvcnRlZE5vbkltYWdlTQogICAgICAgICAidGV4dC8iLAogICAgICAgICAiYXBwbGljYXRp
b24veG1sIiwKICAgICAgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCIsCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgImFwcGxpY2F0aW9uL3Zu
ZC53YXAueGh0bWwreG1sIiwKICAgICAgICAgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLAogICAgICAg
ICAiYXBwbGljYXRpb24vYXRvbSt4bWwiLApAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU0KICAgICAgICAgInRleHQveC1xaWYiX3MsCiAg
ICAgICAgICJ0ZXh0L3gtY3N2Il9zLAogICAgICAgICAidGV4dC94LXZjZiJfcywKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAidGV4dC9ydGYi
X3MsCiAjZWxzZQogICAgICAgICAidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3IiX3Ms
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIApAQCAtMjQ4LDcgKzI0OCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0
ZUZvckdsb2JhbFNlbGVjdGlvbigpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGxvbmcgY2hhbmdl
Q291bnQpOwogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHJl
c3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwogICAgIHZvaWQgcmVhZFJlc3BlY3RpbmdVVElG
aWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kpOwogCkBAIC0zMzEsNyArMzMxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogZXh0ZXJuIE5TU3RyaW5n
ICpXZWJBcmNoaXZlUGJvYXJkVHlwZTsKIGV4dGVybiBOU1N0cmluZyAqVUlDb2xvclBib2FyZFR5
cGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiAKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneSB7CiBw
dWJsaWM6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZv
ckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQAogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRXZlbnQ7CiAj
ZW5kaWYKIApAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wm
IGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBOU0V2ZW50KiBtYWNFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjRXZlbnQuZ2V0KCk7
IH0KICNlbHNlCiAgICAgICAgIDo6V2ViRXZlbnQgKmV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9F
dmVudC5nZXQoKTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgUmV0YWluUHRy
PE5TRXZlbnQ+IG1fbWFjRXZlbnQ7CiAjZWxzZQogICAgICAgICBSZXRhaW5QdHI8OjpXZWJFdmVu
dD4gbV9FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogT0JK
Q19DTEFTUyBOU1Bhc3RlYm9hcmQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiAjZW5kaWYKIApA
QCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBQbGF0
Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFBs
YXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKFdQRSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQ
TEFURk9STShXUEUpCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KTsKQEAgLTEwNywxNCArMTA3LDE0IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGJvb2wgYWxsb3dSZWFkaW5nVVJMQXRJbmRleChjb25zdCBVUkwm
LCBpbnQgaW5kZXgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0
YWluUHRyPE5TUGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPGlkPiBtX3Bhc3Rl
Ym9hcmQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKICNlbmRpZgogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1Mg
VUlTY3JlZW47CiAjZW5kaWYKIApAQCAtMTEyLDcgKzExMiw3IEBAIElPUmVnaXN0cnlHUFVJRCBn
cHVJREZvckRpc3BsYXlNYXNrKHVpbnQKIAogI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogZmxvYXQgc2NyZWVu
UFBJRmFjdG9yKCk7CiBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVD
b21tYW5kTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICghUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oTUFD
KSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQorI2lmICghUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKE1BQykpIHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzSUFkUHJvZHVjZXIoKTsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2UgSU9TQXBw
bGljYXRpb24gewogCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgaXNNb3ZpU3RhclBsdXMoKTsKIAog
fSAvLyBJT1NBcHBsaWNhdGlvbgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRG
T1JNKE1BQykKKyNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9y
PiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJs
ZUFyZWEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXREZWxl
Z2F0ZXNTY3JvbGxpbmcoYgogCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojpjb250ZW50c1Njcm9sbFBv
c2l0aW9uKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIGFjdHVhbFNj
cm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKQEAgLTIwOCwxNCArMjA4LDE0IEBAIEludFBvaW50IFNj
cm9sbFZpZXc6OmNvbnRlbnRzU2Nyb2xsUG9zaXQKIAogdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250
ZW50c1Njcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGxhdGZvcm1XaWRn
ZXQoKSkKICAgICAgICAgc2V0QWN0dWFsU2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwogI2VuZGlm
CiAgICAgc2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwogfQogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEludFJlY3QgU2Nyb2xsVmlldzo6dW5vYnNj
dXJlZENvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3Jv
bGxiYXJJbmNsdXNpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHVub2JzY3VyZWRDb250ZW50UmVj
dEludGVybmFsKHNjcm9sbGJhckluY2x1c2lvbik7CkBAIC0yNjQsNyArMjY0LDcgQEAgSW50U2l6
ZSBTY3JvbGxWaWV3OjpzaXplRm9yVW5vYnNjdXJlZENvbgogCiBJbnRSZWN0IFNjcm9sbFZpZXc6
OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Ny
b2xsYmFycyBzY3JvbGxiYXJJbmNsdXNpb24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yIHZp
c2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RCZWhhdmlv
ciA9PSBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0KSB7CiAgICAgICAgIGlmIChwbGF0Zm9ybVdp
ZGdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KHNj
cm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogT0JKQ19DTEFTUyBX
QUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwpAQCAtNDgsNyArNDgsNyBAQCBPQkpD
X0NMQVNTIFdBS1ZpZXc7CiAjZGVmaW5lIE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQgX19PQkpDX18KIEBjbGFzcyBOU1Njcm9sbFZpZXc7
CkBAIC0xNzcsMTMgKzE3NywxMyBAQCBwdWJsaWM6CiAgICAgLy8gY29udHJpYnV0ZSB0byBwYWlu
dGluZyBidXQgbm90IHRvIHRoZSBzY3JvbGxhYmxlIGFyZWEuCiAgICAgLy8gVGhlIHVub2JzY3Vy
ZWRDb250ZW50UmVjdCBpcyB0aGUgYXJlYSB0aGF0IGlzIG5vdCBjb3ZlcmVkIGJ5IFVJIGVsZW1l
bnRzLgogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KFZp
c2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBj
b25zdDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJ
bnRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKSBjb25zdCB7
IHJldHVybiB1bm9ic2N1cmVkQ29udGVudFJlY3QoSW5jbHVkZVNjcm9sbGJhcnMpOyB9CiAjZWxz
ZQogICAgIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygp
IGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsg
fQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBUaGlzIGlzIHRoZSBhcmVhIHRoYXQgaXMgcGFydGlhbGx5IG9yIGZ1bGx5IGV4cG9z
ZWQsIGFuZCBtYXkgZXh0ZW5kIHVuZGVyIG92ZXJsYXBwaW5nIFVJIGVsZW1lbnRzLgogICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdDsKIApAQCAt
MjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCBjb250ZW50c1Njcm9sbFBvc2l0
aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50c1Njcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFBvaW50Jik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpbnQgYWN0dWFsU2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHVub2JzY3VyZWRDb250ZW50
UmVjdCgpLngoKTsgfQogICAgIGludCBhY3R1YWxTY3JvbGxZKCkgY29uc3QgeyByZXR1cm4gdW5v
YnNjdXJlZENvbnRlbnRSZWN0KCkueSgpOyB9CiAgICAgLy8gRklYTUU6IG1heWJlIGZpeCBzY3Jv
bGxQb3NpdGlvbigpIG9uIGlPUyB0byByZXR1cm4gdGhlIGFjdHVhbCBzY3JvbGwgcG9zaXRpb24u
CkBAIC00MTcsNyArNDE3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9s
bE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0Jiwg
Y29uc3QgU2Nyb2xsT2Zmc2V0JikgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNo
YW5nZWQoKSA9IDA7CiAjZW5kaWYKIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHByaXZhdGU6CiAgICAg
U2Nyb2xsYmFyTW9kZSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFyQXV0byB9
OwogICAgIFNjcm9sbGJhck1vZGUgbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGUgeyBTY3JvbGxiYXJB
dXRvIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBGSVhNRTogZXhwb3NlZENvbnRlbnRSZWN0IGlzIGEgdmVyeSBzaW1pbGFyIGNvbmNlcHQg
dG8gZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgZXhjZXB0IGl0IGRvZXMgbm90IGRpZmZlcmVudGlh
dGUKICAgICAvLyBiZXR3ZWVuIGV4cG9zZWQgYW5kIHVub2JzY3VyZWQgYXJlYXMuIFRoZSB0d28g
YXR0cmlidXRlcyBzaG91bGQgZXZlbnR1YWxseSBiZSBtZXJnZWQuCiAgICAgRmxvYXRSZWN0IG1f
ZXhwb3NlZENvbnRlbnRSZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAg
dm9pZCBTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9sbEFuaW1hdAogICAgICAgICBzY3JvbGxB
bmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBTY3JvbGxhYmxlQXJlYTo6aXNQaW5u
ZWRJbkJvdGhEaXJlY3Rpb25zKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSBjb25zdAogewog
ICAgIHJldHVybiBpc1Bpbm5lZEhvcml6b250YWxseUluRGlyZWN0aW9uKHNjcm9sbERlbHRhLndp
ZHRoKCkpICYmIGlzUGlubmVkVmVydGljYWxseUluRGlyZWN0aW9uKHNjcm9sbERlbHRhLmhlaWdo
dCgpKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBib29sIFNjcm9sbGFibGVBcmVhOjppc1Bpbm5lZFZl
cnRpY2FsbHlJCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
aW50IFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU2Nyb2xsYmFySW50cnVzaW9uKCkgY29uc3QK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFNjcm9sbCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRTY3JvbGwo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU2Nyb2xsKCkgeyB9CkBAIC0yMjUsNyAr
MjI1LDcgQEAgcHVibGljOgogICAgIGVudW0gVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3Jv
bGxiYXJzIHsgRXhjbHVkZVNjcm9sbGJhcnMsIEluY2x1ZGVTY3JvbGxiYXJzIH07CiAgICAgZW51
bSBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB7CiAgICAgICAgIENvbnRlbnRzVmlzaWJsZVJl
Y3QsCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IExlZ2FjeUlPU0RvY3VtZW50Vmlld1JlY3QsCiAgICAgICAgIExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QgPSBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0CiAjZWxzZQpAQCAtMjg0LDcgKzI4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgaXNIb3Jp
em9udGFsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuICFo
b3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgc2Nyb2xsT2Zmc2V0KEhvcml6b250YWxTY3JvbGxiYXIp
IDw9IDA7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9NYXhpbXVtUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiAhaG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbE9m
ZnNldChIb3Jpem9udGFsU2Nyb2xsYmFyKSA+PSBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgpOyB9
CiAgICAgYm9vbCBpc1ZlcnRpY2FsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuICF2ZXJ0aWNhbFNjcm9sbGJhcigpIHx8IHNjcm9sbE9mZnNldChWZXJ0aWNh
bFNjcm9sbGJhcikgPD0gMDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTY3JvbGxiYXI6
OnNldFByZXNzZWRQYXJ0KFNjcm9sbGJhcgogICAgICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0
KCp0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBib29sIFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAobV9wcmVzc2VkUGFydCA9PSBUaHVtYlBh
cnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNl
ZCBmb3IgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBnaXZlIDpob3ZlciBmZWVkYmFjay4gIFRoZXkg
d2lsbCBub3QgZ2V0IGNhbGxlZAogICAgIC8vIHdoZW4gdGhlIG1vdXNlIHdlbnQgZG93biBpbiBh
IHNjcm9sbGJhciwgc2luY2UgaXQgaXMgYXNzdW1lZCB0aGUgc2Nyb2xsYmFyIHdpbGwgc3RhcnQK
ICAgICAvLyBncmFiYmluZyBhbGwgZXZlbnRzIGluIHRoYXQgY2FzZSBhbnl3YXkuCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlRW50ZXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiV2ViQ29yZVRocmVhZC5oIgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFD
KQogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNlbmRpZgogCkBAIC0xOTEs
NyArMTkxLDcgQEAgaW5saW5lIGJvb2wgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6bwogCiBz
dGF0aWMgYm9vbCBzaG91bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gV2ViVGhyZWFk
SXNFbmFibGVkKCkgfHwgYXBwbGljYXRpb25TREtWZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9O
XzEyXzA7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgcmV0dXJuICFpc0luV2ViUHJvY2Vzcygp
ICYmIGFwcGxpY2F0aW9uU0RLVmVyc2lvbigpIDwgRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xNDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJX
ZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKIApAQCAtMTM2LDEyICsxMzYsMTIgQEAgcHJpdmF0ZToK
IAogaW5saW5lIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklY
TUU6IFdyaXRlIHRoaXMgaW4gdGVybXMgb2YgVVNFKFdFQl9USFJFQUQpIGluc3RlYWQgb2YgUExB
VEZPUk0oSU9TKS4KLSNpZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlz
IGluIHRlcm1zIG9mIFVTRShXRUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPU19GQU1J
TFkpLgorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX3RocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQucHRyKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRp
bWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsaWRhdGlvbkJ1YmJs
ZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWxpZGF0
aW9uQnViYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNQb3BvdmVyOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2Vs
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIE9C
SkNfQ0xBU1MgV2ViVmFsaWRhdGlvbkJ1YmJsZURlbGVnYXRlOwogT0JKQ19DTEFTUyBXZWJWYWxp
ZGF0aW9uQnViYmxlVGFwUmVjb2duaXplcjsKQEAgLTQ0LDcgKzQ0LDcgQEAgT0JKQ19DTEFTUyBX
ZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2duaQogI2lmIFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xB
U1MgTlNWaWV3OwogdXNpbmcgUGxhdGZvcm1WaWV3ID0gTlNWaWV3OwotI2VsaWYgUExBVEZPUk0o
SU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlWaWV3OwogdXNp
bmcgUGxhdGZvcm1WaWV3ID0gVUlWaWV3OwogI2Vsc2UKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsg
fQogICAgIGRvdWJsZSBmb250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemU7IH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QW5jaG9yUmVjdChjb25zdCBJbnRSZWN0JiBhbmNob3JSZWN0LCBVSVZp
ZXdDb250cm9sbGVyKiBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBudWxscHRyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKTsKICNlbHNlCkBAIC04NCw3ICs4NCw3IEBAIHByaXZh
dGU6CiAgICAgZG91YmxlIG1fZm9udFNpemUgeyAwIH07CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IFJldGFpblB0cjxOU1BvcG92ZXI+IG1fcG9wb3ZlcjsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNl
bGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+
IG1fcG9wb3ZlckNvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFdlYlZhbGlkYXRpb25CdWJibGVU
YXBSZWNvZ25pemVyPiBtX3RhcFJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFdlYlZhbGlkYXRp
b25CdWJibGVEZWxlZ2F0ZT4gbV9wb3BvdmVyRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZm5kZWYg
TlNWaWV3CiAjZGVmaW5lIE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUZyb21TdXBlcnZpZXcoKTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkVG9T
dXBlcnZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJl
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZUxpc3QKICAgICAsIG1fYWN0aXZpdHkoQXVkaW9IYXJk
d2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bikKICAgICAsIG1fb3V0cHV0RGV2aWNlU3VwcG9ydHNM
b3dQb3dlck1vZGUoZmFsc2UpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgbV9vdXRwdXREZXZpY2VTdXBwb3J0c0xvd1Bvd2VyTW9kZSA9IHRydWU7
CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNQ
bGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9u
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25p
dG9yaW5nKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJs
ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQQUw6OlN5c3RlbVNsZWVwTGlzdGVuZXI+IG1fc3lzdGVt
U2xlZXBMaXN0ZW5lcjsKICAgICBSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlv
SGFyZHdhcmVMaXN0ZW5lcjsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IG1fcGxheWJhY2tUYXJnZXQ7CiAgICAgYm9vbCBtX2NhblBsYXlUb1RhcmdldCB7IGZhbHNlIH07
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
LSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdFQl9B
VURJTykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRp
b25JT1MuaCIKIApAQCAtMjc0LDUgKzI3NCw1IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6
ZnJhbWVTaXplQ2hhbmcKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCkBAIC03
Niw0ICs3Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmls
ZVJlYWRlcklPUy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVh
ZGVySU9TLmgiCiAKLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1MpCisjaWYg
RU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCkBAIC0yNDUsNCArMjQ1LDQg
QEAgUmVmUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdQogCiB9IC8vIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFk
ZXJJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9GaWxlLmg+CiAjaW5jbHVk
ZSA8QXVkaW9Ub29sYm94L0V4dGVuZGVkQXVkaW9GaWxlLmg+CkBAIC02OCw0ICs2OCw0IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04p
ICYmIFBMQVRGT1JNKElPUykKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
QXVkaW9TZXNzaW9uLmg+CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNl
dENhdGVnb3J5KENhdGVnb3J5VAogCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgW1tB
VkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0Q2F0ZWdvcnk6Y2F0ZWdvcnlTdHJpbmcg
bW9kZTpjYXRlZ29yeU1vZGUgcm91dGVTaGFyaW5nUG9saWN5OnBvbGljeSBvcHRpb25zOm9wdGlv
bnMgZXJyb3I6JmVycm9yXTsKLSNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgJiYgIVBMQVRG
T1JNKElPU01BQykKKyNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpICYmICFQTEFU
Rk9STShJT1NNQUMpCiAgICAgQVNTRVJUKCFlcnJvcik7CiAjZW5kaWYKIH0KQEAgLTE3Nyw3ICsx
NzcsNyBAQCBSb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9TZXNzaW9uOjpyb3V0ZVNoCiAKIFN0cmlu
ZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYgIVBMQVRGT1JNKFdBVENI
T1MpCisjaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9T
TUFDKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBz
aGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwogI2Vsc2UKICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKQEAgLTIzNSw0ICsyMzUsNCBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJl
ZmVycmVkQnVmZmVyU2l6CiAKIH0KIAotI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTYyLDQgKzYyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVy
LmgiCkBAIC00MTIsNCArNDEyLDQgQEAgLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZDooTgogfQogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNp
bXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNlbmRpZgpAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKTsKIAogc3RhdGljIGNvbnN0IENGVGltZUludGVy
dmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPENG
VGltZUludGVydmFsPjo6bWF4KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRp
Y3Rpb25hcnlSZWYpCiB7CiAgICAgV2ViVGhyZWFkUnVuKF57CkBAIC01OCw3ICs1OCw3IEBAIHN0
YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIq
IHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQogICAgICAgICBwb3dlck9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGlt
ZXIpLnJlbGVhc2UoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0
aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRp
b24pIHsKICAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1
ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0Rmly
ZUludGVyCiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGltZUdldEN1
cnJlbnQoKSArIGludGVydmFsLnZhbHVlKCk7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikgewogICAg
ICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZpcmVEYXRl
LCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBudWxscHRy
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
Q0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKICNlbHNlCiAgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKIAog
I2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpCkBAIC02Myw3ICs2Myw3IEBAIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjo6Q29udGVudEZpbHQKICAgICBMT0coQ29udGVudEZpbHRlcmluZywg
IkNyZWF0aW5nIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aXRoIGFuIHVuYmxvY2sgcmVx
dWVzdGVyIGFuZCB1bmJsb2NrIFVSTCBob3N0IDwlcz4uXG4iLCBtX3VuYmxvY2tVUkxIb3N0LmFz
Y2lpKCkuZGF0YSgpKTsKIH0KIAotI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRG
T1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIoU3RyaW5nIHVuYmxvY2tVUkxIb3N0LCBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9y
PiBldmFsdWF0b3IpCiAgICAgOiBtX3VuYmxvY2tVUkxIb3N0IHsgV1RGTW92ZSh1bmJsb2NrVVJM
SG9zdCkgfQogICAgICwgbV93ZWJGaWx0ZXJFdmFsdWF0b3IgeyBXVEZNb3ZlKGV2YWx1YXRvcikg
fQpAQCAtODEsNyArODEsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6d3Jh
cFdpCiAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgfSk7
CiAgICAgfX07Ci0jaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
bV93ZWJGaWx0ZXJFdmFsdWF0b3IgPSBudWxscHRyOwogI2VuZGlmCiAgICAgc3RkOjpzd2FwKG1f
dW5ibG9ja1JlcXVlc3Rlciwgd3JhcHBlZFJlcXVlc3Rlcik7CkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjp3cmFwV2kKIAogYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6Om5lZWRzVUlQcm9jZXNzKCkgY29uc3QKIHsKLSNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShQQVJFTlRBTF9DT05U
Uk9MUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gbV93ZWJGaWx0ZXJFdmFs
dWF0b3I7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrVVJMSG9zdCBm
b3JLZXk6dW5ibG9ja1VSTEhvc3RLZXldOwogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6KE5TVVJM
ICopbV91bnJlYWNoYWJsZVVSTCBmb3JLZXk6dW5yZWFjaGFibGVVUkxLZXldOwotI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NP
TlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6
bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07
CiAjZW5kaWYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTE0LDcgKzExNCw3
IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrVVJMSG9z
dCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1N0cmluZyBjbGFzc10gZm9yS2V5OnVu
YmxvY2tVUkxIb3N0S2V5XTsKICAgICB1bmJsb2NrSGFuZGxlci5tX3VucmVhY2hhYmxlVVJMID0g
W2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMIGNsYXNzXSBmb3JLZXk6dW5yZWFjaGFi
bGVVUkxLZXldOwotI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZh
bHVhdG9yS2V5XTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI1LDcgKzEyNSw3IEBA
IGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKIGJvb2wgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgewotI2lm
IEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1fd2Vi
RmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKQEAgLTE0
NCw3ICsxNDQsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiBz
dGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQodm9pZCAoXmJsb2NrKSgpKQog
ewogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdlYlRocmVh
ZFJ1bihibG9jayk7CiAjZWxzZQogICAgICAgICBibG9jaygpOwpAQCAtMTU0LDcgKzE1NCw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZCgKIAogdm9pZCBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMoRGVjaXNpb25IYW5kbGVy
RnVuY3Rpb24gZGVjaXNpb25IYW5kbGVyKSBjb25zdAogewotI2lmIEhBVkUoUEFSRU5UQUxfQ09O
VFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3dlYkZpbHRlckV2YWx1YXRvcikgewogICAg
ICAgICBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgdW5ibG9ja1dpdGhDb21wbGV0aW9uOltkZWNpc2lv
bkhhbmRsZXJdKEJPT0wgdW5ibG9ja2VkLCBOU0Vycm9yICopIHsKICAgICAgICAgICAgIGRpc3Bh
dGNoVG9NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewpAQCAtMTc3LDQg
KzE3Nyw0IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRGF0YURldGVjdG9yc0Nv
cmVTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8
cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYkNvcmUsIERhdGFEZXRlY3RvcnNDb3Jl
LCBERFNjYW5uZXJSZXN1bHQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3Jl
LCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyQ3JlYXRlLCBERFNjYW5uZXJSZWYsIChERFNj
YW5uZXJUeXBlIHR5cGUsIEREU2Nhbm5lck9wdGlvbnMgb3B0aW9ucywgQ0ZFcnJvclJlZiAqIGVy
cm9yUmVmKSwgKHR5cGUsIG9wdGlvbnMsIGVycm9yUmVmKSkKQEAgLTY2LDYgKzY2LDYgQEAgU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgRAogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihXZWJDb3JlLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyRW5hYmxl
T3B0aW9uYWxTb3VyY2UsIHZvaWQsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FubmVyU291
cmNlIHNvdXJjZSwgQm9vbGVhbiBlbmFibGUpLCAoc2Nhbm5lciwgc291cmNlLCBlbmFibGUpKQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRGF0YURldGVj
dG9yc0NvcmVTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5r
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIgogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktf
T1BUSU9OQUwoRGF0YURldGVjdG9yc0NvcmUpCiAKQEAgLTY0LDQgKzY0LDQgQEAgU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgRAogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyRW5hYmxlT3B0aW9u
YWxTb3VyY2UsIHZvaWQsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FubmVyU291cmNlIHNv
dXJjZSwgQm9vbGVhbiBlbmFibGUpLCAoc2Nhbm5lciwgc291cmNlLCBlbmFibGUpKQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDx3dGYvQVNDSUlD
VHlwZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIktleUV2ZW50Q29kZXNJT1Mu
aCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOU1N0cmlu
ZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBk
aXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KICAgICAvLyBT
ZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4K
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIFN0cmluZyBr
ZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmkKICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4g
a2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IGNvdW50KQogewogICAgIHN3
aXRjaCAoY291bnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0CiAgICAgbV9xdWV1ZSA9IGFkb3B0
T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJLaXQgTmV0d29ya0V4dGVuc2lvbiBG
aWx0ZXJpbmciLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKICAgICBBU1NFUlRfVU5VU0VEKHVy
bCwgIXVybCk7CiAgICAgbV9uZUZpbHRlclNvdXJjZSA9IGFkb3B0TlMoW2FsbG9jTkVGaWx0ZXJT
b3VyY2VJbnN0YW5jZSgpIGluaXRXaXRoRGVjaXNpb25RdWV1ZTptX3F1ZXVlLmdldCgpXSk7Ci0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBbbV9uZUZpbHRlclNv
dXJjZSBzZXRTb3VyY2VBcHBJZGVudGlmaWVyOmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigp
XTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVjayBv
bmNlIC1zZXRTb3VyY2VBcHBQaWQ6IGlzIGRlZmluZWQgaW4gYW4gU0RLIHVzZWQgYnkgdGhlIGJ1
aWxkZXJzLgogICAgIGlmIChbbV9uZUZpbHRlclNvdXJjZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldFNvdXJjZUFwcFBpZDopXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtOTksNyAr
OTksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVuCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjp1bmJsb2NrSGFuZGxlcigpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB7ICJ1bmJsb2NrIl9zLCBtX3dlYkZpbHRlckV2YWx1YXRv
ciB9OwogI2Vsc2UKICAgICByZXR1cm4geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBQYXN0ZWJvYXJk
OjpGaWxlQ29udGVudFN0YXRlIFBhc3RlYm9hcmQ6CiB7CiAgICAgYm9vbCBtYXlDb250YWluRmls
ZVBhdGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRO
dW1iZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1heUNvbnRhaW5GaWxlUGF0aHMpIHsKICAg
ICAgICAgLy8gT24gaU9TLCBmaWxlcyBhcmUgbm90IHdyaXR0ZW4gdG8gdGhlIHBhc3RlYm9hcmQg
dXNpbmcgZmlsZSBVUkxzLCBzbyB3ZSBuZWVkIGEgaGV1cmlzdGljIHRvIGRldGVybWluZQogICAg
ICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0aGUgcGFzdGVib2FyZCBjb250YWlucyBpdGVtcyB0aGF0
IHJlcHJlc2VudCBmaWxlcy4gQW4gZXhhbXBsZSBvZiB3aGVuIHRoaXMgZ2V0cyB0cmlja3kKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtVmlldy5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNf
Q0xBU1MgVUlWaWV3OwogdHlwZWRlZiBVSVZpZXcgUGxhdGZvcm1WaWV3OwogI2Vsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC00MSw1ICs0MSw1IEBAIHB1YmxpYzoKIAogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWwuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tT
ZXNzaW9uTW9kZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0xMTMsNCArMTEzLDQg
QEAgcHVibGljOgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
CiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRF
bnVtcy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50LmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2ltcG9y
dCAiQXVkaW9UcmFja0xpc3QuaCIKICNpbXBvcnQgIkV2ZW50LmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIE1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVO
ZXR3b3JrCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVN
YWlsKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNp
b24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVt
VmVyc2lvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU3lzdGVtVmVyc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlCiB7CiAgICAgLy8gQ2FuJ3Qg
dXNlIC1bTlNQcm9jZXNzSW5mbyBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nXSBiZWNhdXNl
IGl0IGhhcyB0b28gbXVjaCBzdHVmZiB3ZSBkb24ndCB3YW50LgogICAgIE5TU3RyaW5nICpzeXN0
ZW1MaWJyYXJ5UGF0aCA9IFtOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xp
YnJhcnlEaXJlY3RvcnksIE5TU3lzdGVtRG9tYWluTWFzaywgWUVTKSBvYmplY3RBdEluZGV4OjBd
OwotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRP
Ul9GQU1JTFkpCiAgICAgaWYgKGNoYXIgKnNpbXVsYXRvclJvb3QgPSBnZXRlbnYoIlNJTVVMQVRP
Ul9ST09UIikpCiAgICAgICAgIHN5c3RlbUxpYnJhcnlQYXRoID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlcy8lQCIsIHNpbXVsYXRvclJvb3QsIHN5c3RlbUxpYnJhcnlQYXRoXTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxNCArMjYsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNp
bmNsdWRlICJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7
CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgPSAwOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCBVSVZp
ZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBudWxscHRy
OyB9CiAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAK
ICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICNpbXBvcnQg
IlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCiAKICNpbXBvcnQgIkRPTVdpbmRv
dy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJ
T1MpKQorI2lmIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkpCiAKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC02Niw0ICs2Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChf
X0xQNjRfXykgfHwgUExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYg
KGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
R2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCiAKLSNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmlu
ZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPUykpCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIChk
ZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKICNpbmNsdWRlICJHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUgPEdhbWVDb250cm9sbGVyL0dh
bWVDb250cm9sbGVyLmg+CiAKQEAgLTIwNiw0ICsyMDYsNCBAQCB2b2lkIEdhbWVDb250cm9sbGVy
R2FtZXBhZDo6c2V0dXBBc0dhbWVwCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9T
KSkKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdBTUVQ
QUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJMRShH
QU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAK
ICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtODUsNCArODUsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JN
KElPUykpCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgogCi0jaWYgRU5BQkxFKEdBTUVQQUQp
ICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJMRShHQU1F
UEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAKICNp
bXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVy
Q2xpZW50LmgiCkBAIC0xNzYsNCArMTc2LDQgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlcjo6aW5wdQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPUykpCisjZW5k
aWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkIHsgZmFsc2UgfTsKIAog
ICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIG9mIG1fYWxsb3dTdWJzYW1wbGluZyBzaG91bGQgYmUg
dGhlIHNhbWUgYXMgZGVmYXVsdEltYWdlU3Vic2FtcGxpbmdFbmFibGVkIGluIFNldHRpbmdzLmNw
cAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wg
bV9hbGxvd1N1YnNhbXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxsb3dTdWJz
YW1wbGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKICAgICBzdGF0aWMg
Y29uc3QgUkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGNvbXBvc2l0
aW9uRmlsbCA9IDB4M0NBRkMwRTM7CiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgY29t
cG9zaXRpb25GaWxsID0gMHhGRkUxREQ1NTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
IgogI2VsaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIgpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNw
bGF5UmVmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OmNyZWF0ZShkaXNwbGF5SUQpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uzo6Y3JlYXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIEZvbnQ6OkZvbnQoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGYKICAgICAsIG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxs
YmFjayhmYWxzZSkKICAgICAsIG1faGFzVmVydGljYWxHbHlwaHMoZmFsc2UpCiAgICAgLCBtX2lz
VXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZShmYWxzZSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKGZh
bHNlKQogI2VuZGlmCiB7CkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBjb2RlUG9pbnRTdQogCiBzdGF0aWMgUmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5k
RmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVtYmVyLCBjb25zdCBGb250JiBmb250KQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1F
OiBUaW1lcyBOZXcgUm9tYW4gY29udGFpbnMgQXJhYmljIGdseXBocywgYnV0IENvcmUgVGV4dCBk
b2Vzbid0IGtub3cgaG93IHRvIHNoYXBlIHRoZW0uIFNlZSA8cmRhcjovL3Byb2JsZW0vOTgyMzk3
NT4uCiAgICAgLy8gT25jZSB3ZSBoYXZlIHRoZSBmaXggZm9yIDxyZGFyOi8vcHJvYmxlbS85ODIz
OTc1PiB0aGVuIHJlbW92ZSB0aGlzIGNvZGUgdG9nZXRoZXIgd2l0aCBGb250OjpzaG91bGROb3RC
ZVVzZWRGb3JBcmFiaWMoKQogICAgIC8vIGluIDxyZGFyOi8vcHJvYmxlbS8xMjA5NjgzNT4uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OSw3ICsxODksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9u
KCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGJvb2wgc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGROb3RCZVVzZWRGb3JBcmFiaWM7IH07CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTMxNCwxMiArMzE0LDEyIEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2lz
VXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSA6IDE7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCBtX3Nob3VsZE5vdEJlVXNlZEZvckFy
YWJpYyA6IDE7CiAjZW5kaWYKIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGJvb2wgZm9udEZhbWlseVNob3VsZE5vdEJlVXNlZEZvckFyYWJpYyhDRlN0
cmluZ1JlZik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwx
MyArNTAsMTMgQEAKICNpbmNsdWRlIDxkd3JpdGUuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KIAogc3RhdGljIFJlY3Vyc2l2ZUxv
Y2sgZm9udExvY2s7CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDYsNyArMjA2LDcg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBGb250Q2FjaGU6OmFsdGVybmF0ZQogRm9udFBsYXRmb3Jt
RGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3NlZEZhbWls
eU5hbWUsCiAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZm9udEZhY2VGZWF0dXJlcywg
Y29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGluZ3MsIEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VDYXBhYmlsaXRpZXMsIGJvb2wg
Y2hlY2tpbmdBbHRlcm5hdGVOYW1lKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZm9udExvY2spOwogI2Vu
ZGlmCiAgICAgCkBAIC0zMDksNyArMzA5LDcgQEAgUmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRh
PiBGb250Q2FjaGU6OgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIGNvbnN0IHVuc2lnbmVkIGNNYXhJbmFjdGl2ZUZvbnREYXRhID0gMTIw
OwogY29uc3QgdW5zaWduZWQgY1RhcmdldEluYWN0aXZlRm9udERhdGEgPSAxMDA7CiAjZWxzZQpA
QCAtMzMzLDcgKzMzMyw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGb3JGYW1pbHko
Y28KIAogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmb250TG9jayk7
CiAjZW5kaWYKICAgICAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhKHVuCiAgICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJvbUZvbnRD
YXNjYWRlQ2FjaGUoKTsKICAgICBwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZm9udExvY2spOwogI2VuZGlmCiAKQEAgLTQxOCw3ICs0MTgsNyBAQCBzaXplX3Qg
Rm9udENhY2hlOjpmb250Q291bnQoKQogCiBzaXplX3QgRm9udENhY2hlOjppbmFjdGl2ZUZvbnRD
b3VudCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmb250TG9jayk7CiAjZW5kaWYKICAgICB1bnNpZ25l
ZCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcg
Kzk4LDcgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRQbGF0ZgogICAgICwg
bV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpKQogewogICAgIG1fZm9u
dERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoZm9udFNtb290aGluZ01vZGUpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fZm9udERlc2NyaXB0
aW9uLnNldFNwZWNpZmllZFNpemUoQ1RGb250R2V0U2l6ZShmb250RGF0YS5mb250KCkpKTsKICAg
ICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoQ1RGb250R2V0U2l6ZShmb250RGF0
YS5mb250KCkpKTsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhDVEZvbnRHZXRT
eW1ib2xpY1RyYWl0cyhmb250RGF0YS5mb250KCkpICYga0NURm9udFRyYWl0SXRhbGljKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUZvbnRzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
IldlYkNvcmVUaHJlYWQuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi0jZGVmaW5lIFVTRV9QTEFURk9STV9T
WVNURU1fRkFMTEJBQ0tfTElTVCAoKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkpCisjZGVmaW5lIFVTRV9QTEFURk9STV9T
WVNURU1fRkFMTEJBQ0tfTElTVCAoKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg4LDcgKzE4OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbW9qaSgpIGNvbnN0CiAgICAg
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBy
ZXR1cm4gbV9pc0Vtb2ppOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYwLDcg
KzI2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1ZhcmlhdGlvbnMgeyBmYWxzZSB9Owog
ICAgIC8vIFRoZSB2YWx1ZXMgYWJvdmUgYXJlIGNvbW1vbiB0byBhbGwgcG9ydHMKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9pc0Vtb2pp
IHsgZmFsc2UgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMjcsNyArMTMyNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFk
UmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIGludCBwaXhlbHNTaXplKTsK
ICAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscyk7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldFJl
bmRlcmJ1ZmZlclN0b3JhZ2VGcm9tRHJhd2FibGUoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwMiw3ICs3MDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hCiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9h
dFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgpKTsKICNlbHNlCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NjYsNyArNDY2LDcgQEAgcHVibGljOgogICAgIC8vIExheWVyIGNv
bnRlbnRzCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1lZGlh
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJO
YXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNl
bGlmIFBMQVRGT1JNKE1BQykKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNv
bihoSWNvbikpOyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTog
TWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0o
SU9TKS1ndWFyZC4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIEZJWE1FOiBNYWtl
IHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJT1Nf
RkFNSUxZKS1ndWFyZC4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNy
ZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogI2VuZGlmCiAKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSWNvbihjb25zdCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4mKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYg
UExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogCiAgICAgQVNTRVJUKCFpc0JpdG1h
cEltYWdlKCkgfHwgbm90U29saWRDb2xvcigpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IG9y
aWdpbmFsU2l6ZSgpOwogI2Vsc2UKICAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBz
aXplKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpYwogICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0
J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2UgdGhhbiB0byB0aWxlIGl0LgogICAgIGlmIChj
dHh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKHNpemUoKS53aWR0aCgp
ID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkuaGVpZ2h0KCkgPT0g
ZGVzdFJlY3QuaGVpZ2h0KCkpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBJbWFnZURyYXdSZXN1bHQg
SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgLy8gdGlsZSBzaXplIGlzIGxhcmdlICg8cmRh
cjovL3Byb2JsZW0vNDY5MTg1OT4sIDxyZGFyOi8vcHJvYmxlbS82MjM5NTA1PikuCiAgICAgLy8g
TWVtb3J5IGNvbnN1bXB0aW9uIGRlcGVuZHMgb24gdGhlIHRyYW5zZm9ybWVkIHRpbGUgc2l6ZSB3
aGljaCBjYW4gZ2V0CiAgICAgLy8gbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIHRpbGUgaWYgdXNl
ciB6b29tcyBpbiBlbm91Z2guCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgY29uc3QgZmxvYXQgbWF4UGF0dGVyblRpbGVQaXhlbHMgPSA1MTIgKiA1MTI7
CiAjZWxzZQogICAgIGNvbnN0IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIw
NDg7CkBAIC0zMzcsNyArMzM3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQo
R3JhcGhpYwogCiB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgm
IGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRy
aW5zaWNSYXRpbykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpbnRyaW5zaWNSYXRpbyA9IG9yaWdpbmFsU2l6ZSgpOwogI2Vsc2UKICAgICBpbnRy
aW5zaWNSYXRpbyA9IHNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBzaXplKCkuaGVpZ2h0KCk7IH0K
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFsU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHNpemUoKTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IENHUG9pbnQ7CiAjZW5kaWYKIAogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBPUyhEQVJXSU4p
CiAjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIHR5cGVk
ZWYgc3RydWN0IENHUG9pbnQgTlNQb2ludDsKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dQb2ludCBOU1BvaW50OwogdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKICNl
bmRpZgogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IHRhZ1BP
SU5UIFBPSU5UOwpAQCAtMTMxLDEyICsxMzEsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIG9wZXJhdG9yIENHUG9pbnQoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBPUyhEQVJXSU4pICYmICFkZWZpbmVk
KE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IE5TUG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhp
cyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRv
ciBOU1BvaW50KCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIElu
dFBvaW50KGNvbnN0IFBPSU5UJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgX05TUmVjdCBOU1JlY3Q7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWZuZGVmIE5TUmVjdAogI2Rl
ZmluZSBOU1JlY3QgQ0dSZWN0CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNTaXplIE5TU2l6ZTsKICNlbmRpZgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZm5kZWYgTlNTaXpl
CiAjZGVmaW5lIE5TU2l6ZSBDR1NpemUKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODgsNyArNjg4LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXI6
OnBsYXRmb3JtTGF5ZQogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtTGF5ZXIoKTsKIH0K
ICAgICAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogdm9pZCBNZWRp
YVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtNzIyLDcgKzcy
Miw3IEBAIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIE1lZGlhUGwKIAogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNBcnJh
eSogTWVkaWFQbGF5ZXI6OnRpbWVkTWV0YWRhdGEoKSBjb25zdAogewpAQCAtOTI0LDcgKzkyNCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2gKIAogYm9vbCBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgpAQCAtMTE3NSw3
ICsxMTc1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogCiB2b2lk
IE1lZGlhUGxheWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG5l
d1ZvbHVtZSk7CiAgICAgbV92b2x1bWUgPSBtX3ByaXZhdGUtPnZvbHVtZSgpOwogI2Vsc2UKQEAg
LTE0ODUsNyArMTQ4NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmRvZXNIYXZlQXR0cmlidXRlKGNv
bnMKICAgICByZXR1cm4gY2xpZW50KCkuZG9lc0hhdmVBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1
ZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFN0
cmluZyBNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBvdXRPZkJh
bmRUcmFja1NvdXJjZXMoKSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQ
bGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKQEAgLTI2OSw3ICsy
NjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmLCBBdG9taWNTdHJpbmcqIHZhbHVlID0gbnVsbHB0cikgY29uc3Q7CiAgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7
IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2
b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7CkBAIC0yNzksNyArMjc5LDcg
QEAgcHVibGljOgogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25z
dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NM
b2coKSBjb25zdDsKICAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdDsKQEAgLTUyMSw3ICs1MjEs
NyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91dE9m
QmFuZFRyYWNrU291cmNlcygpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8
Q29va2llPiYpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgeyB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9G
dWxsc2NyZWVuTW9kZSkgeyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NMb2coKSBjb25zdCB7
IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZXJyb3JMb2coKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFZvbHVtZURvdWJsZShkb3VibGUgdm9sdW1lKSB7IHJldHVybiBzZXRWb2x1bWUodm9s
dW1lKTsgfQotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKEdTVFJFQU1FUikKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gMTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lCiAKIElt
YWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewotI2lmIFVT
RShORVdfVEhFTUUpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVP
cCwgYmxlbmRNb2RlKTsKICAgICBjb250ZXh0LmNsaXAoZHN0UmVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0
cmluZ1RydW5jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgc3RhdGlj
IHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoYwogICAgIHVuc2lnbmVkIG9taXRFbmQg
PSBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvbWl0U3RhcnQgKyAobGVuZ3RoIC0ga2Vl
cENvdW50KSAtIDEsIGxlbmd0aCk7CiAgICAgb21pdFN0YXJ0ID0gdGV4dEJyZWFrQXRPclByZWNl
ZGluZyhpdCwgb21pdFN0YXJ0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGd1YXJkIHRoaXMgY29kZSBiZWhpbmQgYW4gZWRpdGluZyBiZWhhdmlvci4gVGhl
biB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBndWFyZCB0aGlzIGNvZGUgYmVoaW5k
IGFuIGVkaXRpbmcgYmVoYXZpb3IuIFRoZW4gd2UgY2FuIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9T
X0ZBTUlMWSktZ3VhcmQuCiAgICAgLy8gT3IganVzdCB0dXJuIGl0IG9uIGZvciBhbGwgcGxhdGZv
cm1zLiBJdCBzZWVtcyBsaWtlIGdvb2QgYmVoYXZpb3IgZXZlcnl3aGVyZS4gTWlnaHQgYmUgYmV0
dGVyIHRvIGdlbmVyYWxpemUKICAgICAvLyBpdCB0byBoYW5kbGUgYWxsIHdoaXRlc3BhY2UsIG5v
dCBqdXN0ICJzcGFjZSIuCiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBzdGF0aWMgdW5zaWduZWQgcmln
aHRUcnVuY2F0ZVRvQnVmZmVyKGNvCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBhbiBlZGl0
aW5nIGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQu
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGd1YXJk
IHRoaXMgY29kZSBiZWhpbmQgYW4gZWRpdGluZyBiZWhhdmlvci4gVGhlbiB3ZSBjYW4gcmVtb3Zl
IHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAvLyBPciBqdXN0IHR1cm4gaXQg
b24gZm9yIGFsbCBwbGF0Zm9ybXMuIEl0IHNlZW1zIGxpa2UgZ29vZCBiZWhhdmlvciBldmVyeXdo
ZXJlLiBNaWdodCBiZSBiZXR0ZXIgdG8gZ2VuZXJhbGl6ZQogICAgIC8vIGl0IHRvIGhhbmRsZSBh
bGwgd2hpdGVzcGFjZSwgbm90IGp1c3QgInNwYWNlIi4KIApAQCAtMTUxLDggKzE1MSw4IEBAIHN0
YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY28KICAgICB1bnNpZ25lZCBrZWVw
TGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50KTsKICAgICBTdHJp
bmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGJ1ZmZlcik7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCBndWFyZCB0aGlzIGNvZGUgYmVoaW5kIGFuIGVkaXRpbmcgYmVoYXZpb3IuIFRoZW4g
d2UgY2FuIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBh
biBlZGl0aW5nIGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19G
QU1JTFkpLWd1YXJkLgogICAgIC8vIE9yIGp1c3QgdHVybiBpdCBvbiBmb3IgYWxsIHBsYXRmb3Jt
cy4gSXQgc2VlbXMgbGlrZSBnb29kIGJlaGF2aW9yIGV2ZXJ5d2hlcmUuIE1pZ2h0IGJlIGJldHRl
ciB0byBnZW5lcmFsaXplCiAgICAgLy8gaXQgdG8gaGFuZGxlIGFsbCB3aGl0ZXNwYWNlLCBub3Qg
anVzdCAic3BhY2UiLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIEludFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9
CiB9OwogCi0jaWYgIShQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpKQorI2lmICEoUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50
YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCIKIAotI2lmIEVO
QUJMRShWSURFTykgJiYgRU5BQkxFKERBVEFDVUVfVkFMVUUpICYmIChVU0UoQVZGT1VOREFUSU9O
KSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKERBVEFDVUVf
VkFMVUUpICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC0xMDQsNCArMTA0LDQgQEAgdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQorI2VuZGlmIC8v
IEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPU19GQU1J
TFkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNF
KEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYmIChV
U0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogI2luY2x1ZGUgIklT
T1ZUVEN1ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKQEAg
LTU4NCw0ICs1ODQsNCBAQCBib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlYWROYXRp
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYg
KFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCiAjZGVmaW5lIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAoVVNFKEFW
Rk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0Uo
QVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50LmgiCkBAIC0xMTQsNiArMTE0LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8
IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5E
QVRJT04pIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQogCiAjZW5kaWYgLy8gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldE1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTWVk
aWFQbGF5YmFja1RhcmdldE1hYy5oIgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaD4KQEAgLTg0LDQgKzg0LDQg
QEAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1hYyogdG9NZWRpYVBsYQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzAs
NyArNDcwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN1cAogICAg
IHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2luZQotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjptZXQKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpyYXRlQ2hhbmdlZCgp
CiB7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiBQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpICYmIHBs
YXllckl0ZW1TdGF0dXMoKSA+PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c1BsYXliYWNr
QnVmZmVyRnVsbCkgewogICAgICAgICBkb3VibGUgcmF0ZSA9IHRoaXMtPnJhdGUoKTsKICAgICAg
ICAgaWYgKHJhdGUgIT0gcmVxdWVzdGVkUmF0ZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgi
CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
KQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTYsNCArNTYsNCBAQCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlck1hY19oCiAjZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWNfaAogCi0jaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1By
aXZhdGVMZWdhY3lBVkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oIgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWQ0ZfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRl9o
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZFKEFWRk9V
TkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VOREFUSU9OX0xF
R0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNG
L0FWQ0ZQbGF5ZXJJdGVtVHJhY2suaD4KQEAgLTY3LDYgKzY3LDYgQEAgcHJvdGVjdGVkOgogCiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZF
KEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZG
T1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
CiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKIFNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVN5c3Rl
bUZhaXJQbGF5U3RyZWFtaW5nLCBOU1N0cmluZyopCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdCk7CiAjZW5kaWYKIApAQCAtODUsNyAr
ODUsNyBAQCAtICh2b2lkKWNvbnRlbnRLZXlTZXNzaW9uOihBVkNvbnRlbnRLZXlTCiAgICAgICAg
IF9wYXJlbnQtPmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qoa2V5UmVxdWVzdCk7CiB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpY29udGVu
dEtleVNlc3Npb246KEFWQ29udGVudEtleVNlc3Npb24gKilzZXNzaW9uIGRpZFByb3ZpZGVQZXJz
aXN0YWJsZUNvbnRlbnRLZXlSZXF1ZXN0OihBVlBlcnNpc3RhYmxlQ29udGVudEtleVJlcXVlc3Qg
KilrZXlSZXF1ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb24pOwpAQCAtMTUxLDcgKzE1
MSw3IEBAIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMKIAogYm9vbCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0ZW50S2V5
cygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIGdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZGT2JqQ19oCiAjZGVmaW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDX2gK
IAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtNjgsNiArNjgsNiBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVf
T1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9O
KSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRG
T1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZF
KEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNYWMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWNfaAogI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjX2gKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgiCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNYWMuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1QYXVzZSgpIG92
ZXJyaWRlOwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKICAgICB2b2lkIHNldE11dGVkKGJv
b2wpIG92ZXJyaWRlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOU0FycmF5ICp0aW1lZE1ldGFkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBlcnJv
ckxvZygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzEwLDcgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
KSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXll
ci5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVicy5oIgog
I2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlEZXZpY2Uu
aD4KQEAgLTI4NCw3ICsyODQsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
Vk1ldGFkCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRCb3Vu
ZE5ldHdvcmtJbnRlcmZhY2VOYW1lLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXks
IE5TU3RyaW5nICopCkBAIC0zMDEsNyArMzAxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKEFWRm91bmRhdGlvbgogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gpCiBTT0ZU
X0xJTktfT1BUSU9OQUwoTWVkaWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3Is
IEJvb2xlYW4sICgpLCAoKSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaWYgSEFWRShDRUxFU1RJQUwpCiAKQEAgLTMxOSw3ICszMTksNyBAQCBTT0ZU
X0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSURldmljZSkK
ICNkZWZpbmUgVUlEZXZpY2UgZ2V0VUlEZXZpY2VDbGFzcygpCiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0
VmlkZW9MYXllcihtX3ZpZGVvTGF5ZXIuZ2V0KCksIGRlZmF1bHRTaXplKTsKIAotI2lmIFBMQVRG
T1JNKElPUykgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlkZW9M
YXllciBzZXRQSVBNb2RlRW5hYmxlZDoocGxheWVyKCktPmZ1bGxzY3JlZW5Nb2RlKCkgJiBNZWRp
YVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKICNlbmRpZgpA
QCAtODQxLDcgKzg0MSw3IEBAIHN0YXRpYyBOU1VSTCAqY2Fub25pY2FsVVJMKGNvbnN0IFVSTCYg
dXIKICAgICByZXR1cm4gW2Nhbm9uaWNhbFJlcXVlc3QgVVJMXTsKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TSFRUUENvb2tpZSogdG9O
U0hUVFBDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOwpAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldFVzZUNsaWVu
dFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKQogICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6QFlF
UyBmb3JLZXk6QVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseV07Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoY2Fu
TG9hZEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkoKSkKICAgICAgICAgW29w
dGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OkFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExv
YWRpbmdLZXldOwogICAgIC8vIEZJWE1FOiByZGFyOi8vcHJvYmxlbS8yMDM1NDY4OApAQCAtOTM0
LDEzICs5MzQsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
ICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgU3RyaW5nIG5ldHdvcmtJbnRlcmZhY2VOYW1lID0gcGxheWVyKCktPm1lZGlhUGxh
eWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKTsKICAgICBpZiAoIW5ldHdvcmtJbnRlcmZhY2VOYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0Om5ldHdvcmtJbnRlcmZhY2VO
YW1lIGZvcktleTpBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZV07CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFZlY3Rv
cjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKHBsYXllcigpLT5nZXRSYXdDb29raWVzKHVybCwg
Y29va2llcykpIHsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBuc0Nvb2tpZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29va2ll
cy5zaXplKCldKTsKQEAgLTk2NSw3ICs5NjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRl
ciA9IG1fYXZBc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlcjsKICAgICBbcmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxMb2FkZXJEZWxl
Z2F0ZVF1ZXVlKCldOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID4gMTAxMTAwCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTEwMAogICAgIGlmIChEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCiAgICAgICAg
ICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTFNl
c3Npb246KV0KICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgW21fYXZQbGF5ZXIu
Z2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazptX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5
YmFja107CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQpIHsKICAgICAgICAgLy8gQ2xlYXIgbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCBzbyBk
b2Vzbid0IHJldHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgogICAgICAgICBtX3Nob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0ID0gZmFsc2U7CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgfQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oSU9T
TUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9S
X0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU01BQykKICAgICBzZXRTaG91bGREaXNhYmxlU2xlZXAo
cGxheWVyKCktPnNob3VsZERpc2FibGVTbGVlcCgpKTsKICNlbmRpZgogCkBAIC0xMjIwLDcgKzEy
MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotI2lmIFBMQVRGT1JN
KElPUykgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlkZW9MYXll
ciBzZXRQSVBNb2RlRW5hYmxlZDoobW9kZSAmIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSldOwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNr
KCk7CkBAIC0xMjI5LDcgKzEyMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogTlNBcnJheSAqTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dGltZWRNZXRhZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fY3VycmVudE1ldGFEYXRhKQpAQCAt
MTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZvbHVtZShm
bG9hdCB2b2x1bWUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgVU5VU0VEX1BBUkFNKHZvbHVtZSk7CiAgICAgcmV0dXJuOwogI2Vsc2UKQEAgLTE0
MTcsNyArMTQxNyw3IEBAIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmoK
IAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAogewotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCiAgICAgcmV0dXJuIFttX2F2UGxheWVySXRlbSBzZWVrYWJsZVRp
bWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lXTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC0xNDI2
LDcgKzE0MjYsNyBAQCBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqCiAK
IGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsaXZlVXBkYXRlSW50
ZXJ2YWwoKSBjb25zdAogewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CiAgICAgcmV0dXJuIFttX2F2UGxheWVySXRlbSBsaXZlVXBkYXRlSW50ZXJ2YWxdOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKQEAgLTE4NTAsNyArMTg1MCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24KIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdAogewotI2lm
IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwCiAgICAgcmV0dXJuIDA7CiAjZWxzZQogICAgIHJldHVybiA1OwpAQCAtMjIw
Myw3ICsyMjAzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNj
ZXNzQ2hlY2soKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+IDEwMTEwMAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDAKICAgICBBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNlTG9hZGVy
OwogICAgIGlmICghRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbk5TVVJM
U2Vzc2lvbkVuYWJsZWQoKQogICAgICAgICB8fCAhW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbildKQpAQCAtMjIxOCw3ICsyMjE4LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiBzdGQ6Om9wdGlvbmFsPGJv
b2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Mp
IHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTAxMTAw
CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZBc3NldC5n
ZXQoKS5yZXNvdXJjZUxvYWRlcjsKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6
aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKICAgICAgICAgfHwgIVtyZXNvdXJj
ZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkKQEAgLTI3
NjgsNyArMjc2OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
IHsKICAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gZmFsc2U7CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7
CiAgICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKQogICAgICAgICAgICAgd2lyZWxlc3NUYXJnZXQgPSBt
X2F2UGxheWVyICYmIG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZTsKQEAg
LTI3ODksNyArMjc4OSw3IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlw
ZSAKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFy
Z2V0VHlwZU5vbmU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoIUFWRm91bmRhdGlvbkxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKIApAQCAtMjgxMCw3ICsyODEwLDcgQEAgTWVkaWFQbGF5
ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIAogI2VuZGlmCiB9CiAgICAgCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJpbmcgKmV4
ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllclR5cGUgKnBsYXllcikKIHsK
ICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTI4OTMsNyArMjg5Myw3IEBAIFN0cmluZyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmoKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBTdHJpbmcgd2lyZWxlc3NUYXJnZXROYW1lOwotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCiAgICAg
ICAgIHdpcmVsZXNzVGFyZ2V0TmFtZSA9IG1fcGxheWJhY2tUYXJnZXQtPmRldmljZU5hbWUoKTsK
ICNlbHNlCkBAIC0yOTI2LDcgKzI5MjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6CiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKQEAgLTI5ODEsMTEgKzI5ODEsMTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIHNldERlbGF5Q2Fs
bGJhY2tzKGZhbHNlKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKQogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9hdlBsYXllcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMjQ5LDcgKzMyNDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZmxhZykKIHsKLSNpZiBQTEFURk9S
TShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oSU9TTUFDKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKElPU01BQykKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgIFttX2F2UGxheWVyIF9zZXRQcmV2ZW50c1NsZWVwRHVyaW5nVmlkZW9QbGF5
YmFjazpmbGFnXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtODg3LDcgKzg4Nyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzUGljdHVyZUluUGljdHVy
ZSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja01hcC52YWx1ZXMoKSkg
ewogICAgICAgICBpZiAodHJhY2stPnN0cmVhbVRyYWNrKCkuaXNDYXB0dXJlVHJhY2soKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091
dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKICNkZWZpbmUgT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIChVU0Uo
QVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQor
I2lmIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPU19G
QU1JTFkpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTeXN0ZW1NZW1v
cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKQEAgLTgwLDcgKzgwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIHRocmVzaG9sZCB3aWR0aCBvciBoZWlnaHQg
YWJvdmUgd2hpY2ggYSB0aWxlZCBsYXllciB3aWxsIGJlIHVzZWQuIFRoaXMgc2hvdWxkIGJlCiAv
LyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgdGlsZWQgbGF5ZXJzIGZvciBtb3N0IEdyYXBoaWNzTGF5
ZXJzLCBidXQgbGVzcyB0aGFuIHRoZSBPcGVuR0wKIC8vIHRleHR1cmUgc2l6ZSBsaW1pdCBvbiBh
bGwgc3VwcG9ydGVkIGhhcmR3YXJlLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAxMjgwOwog
c3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgPSAxMDI0Owogc3Rh
dGljIGNvbnN0IGludCBjTWVtb3J5TGV2ZWxUb1VzZVNtYWxsZXJQaXhlbERpbWVuc2lvbiA9IDM1
OwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRz
VG9QbGF0ZgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5
ZXJDaGFuZ2VkKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVk
aWEoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENvbnRl
bnRzTGF5ZXJQdXJwb3NlOjpNZWRpYSA/IG1fY29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigp
IDogbnVsbHB0cjsKQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpm
bHVzaENvbXBvc2l0aW5nU3QKICAgICBjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMgPSB2
aXNpYmxlUmVjdCAhPSBtX3ByZXZpb3VzQ29tbWl0dGVkVmlzaWJsZVJlY3Q7CiAgICAgbV9wcmV2
aW91c0NvbW1pdHRlZFZpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBJbiBXSzEsIFVJS2l0IG1heSBi
ZSBjaGFuZ2luZyBsYXllciBib3VuZHMgYmVoaW5kIG91ciBiYWNrIGluIG92ZXJmbG93LXNjcm9s
bCBsYXllcnMsIHNvIGRpc2FibGUgdGhlIG9wdGltaXphdGlvbi4KICAgICAvLyBTZWUgdGhlIHNp
bWlsYXIgdGVzdCBpbiBjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCgpLgogICAgIGlmICht
X2xheWVyLT5pc1BsYXRmb3JtQ0FMYXllckNvY29hKCkpCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBH
cmFwaGljc0xheWVyQ0E6OlZpc2libGVBbmRDb3ZlcmFnZVJlY3RzCiAgICAgYm9vbCBtYXBXYXND
bGFtcGVkOwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdEZvckNoaWxkcmVuID0gc3RhdGUubWFwcGVk
UXVhZCgmbWFwV2FzQ2xhbXBlZCkuYm91bmRpbmdCb3goKTsKICAgICBGbG9hdFBvaW50IGJvdW5k
c09yaWdpbiA9IG1fYm91bmRzT3JpZ2luOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIC8vIEluIFdLMSwgVUlLaXQgbWF5IGJlIGNoYW5naW5nIGxheWVy
IGJvdW5kcyBiZWhpbmQgb3VyIGJhY2sgaW4gb3ZlcmZsb3ctc2Nyb2xsIGxheWVycywgc28gdXNl
IHRoZSBsYXllcidzIG9yaWdpbi4KICAgICBpZiAobV9sYXllci0+aXNQbGF0Zm9ybUNBTGF5ZXJD
b2NvYSgpKQogICAgICAgICBib3VuZHNPcmlnaW4gPSBtX2xheWVyLT5ib3VuZHMoKS5sb2NhdGlv
bigpOwpAQCAtMzc0OCw3ICszNzQ4LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcXVpcmVz
VGlsZWRMYXllcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRTogY2F0Y2gg
emVyby1zaXplIGhlaWdodCBvciB3aWR0aCBoZXJlIChvciBlYXJsaWVyKT8KLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpbnQgbWF4UGl4ZWxEaW1lbnNp
b24gPSBzeXN0ZW1NZW1vcnlMZXZlbCgpIDwgY01lbW9yeUxldmVsVG9Vc2VTbWFsbGVyUGl4ZWxE
aW1lbnNpb24gPyBjTWF4UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgOiBjTWF4UGl4ZWxEaW1lbnNp
b247CiAgICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpICogcGFnZVNjYWxlRmFjdG9yID4gbWF4UGl4
ZWxEaW1lbnNpb24gfHwgbV9zaXplLmhlaWdodCgpICogcGFnZVNjYWxlRmFjdG9yID4gbWF4UGl4
ZWxEaW1lbnNpb247CiAjZWxzZQpAQCAtMzgyNyw3ICszODI3LDcgQEAgR3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29u
dGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiB7CiAgICAgLy8gVHVy
biBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0xheWVyLT5z
ZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBjb250ZW50
c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRl
bnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBsYXllclRyZWVBc1N0cmluZygpIGNvbnN0ID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBib29sIGlzV2ViTGF5ZXIoKTsKICAgICB2b2lkIHNldEJvdW5kc09uTWFpblRocmVhZChD
R1JlY3QpOwogICAgIHZvaWQgc2V0UG9zaXRpb25Pbk1haW5UaHJlYWQoQ0dQb2ludCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVySU9TLmgiCiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
PgogI2VuZGlmCkBAIC03NSw3ICs3NSw3IEBAIFRpbGVDb250cm9sbGVyOjp+VGlsZUNvbnRyb2xs
ZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXIoKS5yZW1vdmVUaWxlQ29udHJvbGxlcih0aGlzKTsKICNlbmRpZgogfQpAQCAtMzU5LDcgKzM1
OSw3IEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OmJvdW5kc0F0TGFzdFJldmEKICAgICByZXR1
cm4gYm91bmRzV2l0aG91dE1hcmdpbjsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAvLyBSZXR1cm4gJ3JlY3QnIHBhZGRlZCBldmVubHkgb24gYWxs
IHNpZGVzIHRvIGFjaGlldmUgJ25ld1NpemUnLCBidXQgbWFrZSB0aGUgcGFkZGluZyB1bmV2ZW4g
dG8gY29udGFpbiB3aXRoaW4gY29uc3RyYWluaW5nUmVjdC4KIHN0YXRpYyBGbG9hdFJlY3QgZXhw
YW5kUmVjdFdpdGhpblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IG5ld1NpemUsIGNvbnN0IEZsb2F0UmVjdCYgY29uc3RyYWluaW5nUmVjdCkKIHsKQEAgLTM5Myw3
ICszOTMsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhlIGlPUyBhbmQgTWFjIGNvZGUuCiAgICAg
VU5VU0VEX1BBUkFNKHByZXZpb3VzVmlzaWJsZVJlY3QpOwogICAgIApAQCAtNzU5LDcgKzc1OSw3
IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gVGlsZUNvbnQKICAgICByZXR1cm4g
bGF5ZXJMaXN0OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiB1bnNpZ25lZCBUaWxlQ29udHJvbGxlcjo6bnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBj
b25zdAogewogICAgIHVuc2lnbmVkIGNvdW50ID0gdGlsZUdyaWQoKS5udW1iZXJPZlVucGFyZW50
ZWRUaWxlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQo
KSBjb25zdDsKICAgICBzdGF0aWMgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50Rm9yVGlsZXMoY29u
c3QgUGxhdGZvcm1MYXllckxpc3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRQb2ludCYp
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZVVu
cGFyZW50ZWRUaWxlc05vdygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVySU9TLmgiCiAjZW5kaWYKIApAQCAtNTA1LDcgKzUwNSw3IEBAIFRpbGVHcmlkOjpUaWxlQ29o
b3J0IFRpbGVHcmlkOjpuZXh0VGlsZUMKIHZvaWQgVGlsZUdyaWQ6OnN0YXJ0ZWROZXdDb2hvcnQo
VGlsZUNvaG9ydCBjb2hvcnQpCiB7CiAgICAgbV9jb2hvcnRMaXN0LmFwcGVuZChUaWxlQ29ob3J0
SW5mbyhjb2hvcnQsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFtX2NvbnRyb2xsZXIuaXNJbldpbmRv
dygpKQogICAgICAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKS50aWxlQ29udHJvbGxl
ckdhaW5lZFVucGFyZW50ZWRUaWxlcygmbV9jb250cm9sbGVyKTsKICNlbmRpZgpAQCAtNzE0LDcg
KzcxNCw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb24KIAogdm9p
ZCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXllclBhaW50QmVoYXZpb3IpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHB0aHJl
YWRfbWFpbl9ucCgpKQogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKQEAgLTc4OSw3
ICs3ODksNyBAQCBpbnQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlCiAgICAg
cmV0dXJuIHJlcGFpbnRDb3VudDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCkK
IHsKICAgICB3aGlsZSAoIW1fY29ob3J0TGlzdC5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VGls
ZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiwgQ0dSZWN0IGxheWVyQm91bmRzKSBjb25zdDsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NvaG9y
dExpc3Quc2l6ZSgpOyB9CiAgICAgdm9pZCByZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvTGF5
ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oPgpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEEgcmFjZSBj
b25kaXRpb24gZHVyaW5nIFdlYlZpZXcgZGVhbGxvY2F0aW9uIGNhbiBsZWFkIHRvIGEgY3Jhc2gg
aWYgdGhlIGxheWVyIHN5bmMgcnVuIGxvb3AKICAgICAvLyBvYnNlcnZlciBpcyBhZGRlZCB0byB0
aGUgbWFpbiBydW4gbG9vcCA8cmRhcjovL3Byb2JsZW0vOTc5ODU1MD4uIEhvd2V2ZXIsIGZvciBy
ZXNwb25zaXZlbmVzcywKICAgICAvLyB3ZSBzdGlsbCBhbGxvdyB0aGlzLCBzZWUgPHJkYXI6Ly9w
cm9ibGVtLzc0MDMzMjg+LiBTaW5jZSB0aGUgcmFjZSBjb25kaXRpb24gYW5kIHN1YnNlcXVlbnQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiRm9u
dEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9y
dCAiV0tHcmFwaGljcy5oIgpAQCAtMTE0LDcgKzExNCw3IEBAIC0gKHZvaWQpc2V0T3duZXI6KFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXkKIC0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0
aW9uICopYW5pbWF0aW9uCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkTG9jaygp
OwogI2VuZGlmCiAgICAgaWYgKCFtX293bmVyKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIC0gKHZvaWQp
YW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICoKIC0gKHZvaWQpYW5pbWF0aW9uRGlkU3Rv
cDooQ0FBbmltYXRpb24gKilhbmltYXRpb24gZmluaXNoZWQ6KEJPT0wpZmluaXNoZWQKIHsKICAg
ICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0oZmluaXNoZWQpOwpAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
Q29jb2E6OnNldENvbnRlbnRzU2MKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
ICAgICBbbV9sYXllciBzZXRDb250ZW50c1NjYWxlOnZhbHVlXTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9sYXllciBzZXRSYXN0ZXJpemF0aW9u
U2NhbGU6dmFsdWVdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAt
MTAyNiw3ICsxMDI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6dXBkYXRlQ3VzdG9t
QQogCiBzdGF0aWMgTlNTdHJpbmcgKmxheWVyQ29udGVudHNGb3JtYXQoYm9vbCBhY2NlbGVyYXRl
c0RyYXdpbmcsIGJvb2wgd2FudHNEZWVwQ29sb3IsIGJvb2wgc3VwcG9ydHNTdWJwaXhlbEFudGlh
bGlhc2VkRm9udHMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKHdhbnRzRGVlcENvbG9yKQogICAgICAgICByZXR1cm4ga0NBQ29udGVudHNG
b3JtYXRSR0JBMTBYUjsKICNlbHNlCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBUaWxlZEJhY2tpbmcq
IFBsYXRmb3JtQ0FMYXllckNvY29hOjp0aWxlCiAgICAgcmV0dXJuIFt0aWxlZEJhY2tpbmdMYXll
ciB0aWxlZEJhY2tpbmddOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNXZWJMYXllcigpCiB7CiAgICAgQk9P
TCByZXN1bHQgPSBOTzsKQEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRBbmNob3JQb2ludE9uTWEKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
ICAgIH0pOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNB
TGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3Jt
Q0FMYXllciogcGxhdGZvcm1DQUxheWVyKQogewpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKAogICAgIGlmICghbGF5ZXJDb250ZW50
cy0+cGxhdGZvcm1DQUxheWVyUmVwYWludENvdW50KHBsYXRmb3JtQ0FMYXllcikpCiAgICAgICAg
IGxheWVyUGFpbnRCZWhhdmlvciB8PSBHcmFwaGljc0xheWVyUGFpbnRGaXJzdFRpbGVQYWludDsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdLU2V0
Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKICNlbmRpZgogICAgIApAQCAtMTE0OCw3
ICsxMTQ4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKAogICAg
IC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwIG9uIE1hYy4KICAgICBBU1NFUlQobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29u
dGVudHNPcmllbnRhdGlvbigpID09IEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbjo6VG9wRG93bik7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIgZm9udEFu
dGlhbGlhc2luZ1N0YXRlKGNvbnRleHQsIFtwbGF0Zm9ybUNBTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSBpc09wYXF1ZV0pOwogICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5zZXR1cChbV0FLV2luZG93
IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CiAjZWxzZQpAQCAtMTE4NSw3ICsxMTg1LDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKAogICAgICAgICAgICAgbGF5
ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIs
IGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAgICAgICAgfQog
ICAgICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgZm9udEFudGlhbGlhc2luZ1N0YXRlLnJlc3RvcmUoKTsKICNlbHNlCiAgICAgICAgIFRo
ZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChGbG9hdFJlY3QoKSk7CkBAIC0xMjM5LDcgKzEy
MzksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0CiAKIHVuc2ln
bmVkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNraW5nU3RvcmVCeXRlc1BlclBpeGVsKCkgY29u
c3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAod2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoKSkKICAgICAgICAgcmV0dXJuIGlzT3BhcXVl
KCkgPyA0IDogNTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhZGllbnRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVm
IHBsYXRmbwogICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1D
b250ZXh0KTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBDb25pY0RhdGEmIGRhdGEp
IHsKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAp
IHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1f
UElfMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2RlZmluZSBVU0VfRFJB
V19QQVRIX0RJUkVDVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkpCisjZGVmaW5lIFVTRV9EUkFXX1BB
VEhfRElSRUNUIChQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkpCiAKIC8vIEZJWE1FOiBUaGUg
Zm9sbG93aW5nIHVzaW5nIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBpbiA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4uCiB1c2luZyBXVEY6OnBhaXJJbnRIYXNoOwpAQCAtMTI5LDcgKzEyOSw3IEBAIENHQ29s
b3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKICAgICBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID4gMTAxMTAwKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDApCiAgICAgICAgIGRpc3Bs
YXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
RGlzcGxheVAzKTsKICNlbHNlCiAgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBzUkdCQ29s
b3JTcGFjZVJlZigpOwpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY28KICAgICBpZiAoIXNob3VsZFVzZVN1YmltYWdlICYmIGN1cnJIZWln
aHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVp
Z2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0IC8gaW1hZ2VTaXplLmhl
aWdodCgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBDR0NvbnRleHRHZXRTaG91bGRBbnRpYWxpYXMoY29u
dGV4dCk7CiAgICAgLy8gQW50aS1hbGlhc2luZyBpcyBvbiBieSBkZWZhdWx0IG9uIHRoZSBpUGhv
bmUuIE5lZWQgdG8gdHVybiBpdCBvZmYgd2hlbiBkcmF3aW5nIGltYWdlcy4KICAgICBDR0NvbnRl
eHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgZmFsc2UpOwpAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICAKICAgICBpZiAo
IXN0YXRlU2F2ZXIuZGlkU2F2ZSgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldENUTShjb250ZXh0
LCB0cmFuc2Zvcm0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgd2FzQW50aWFs
aWFzZWQpOwogI2VuZGlmCiAgICAgfQpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW4KIHsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gKENH
SW1hZ2VSZWYpaW5mbzsKICAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENH
Q29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgMCwgLWhlaWdodCk7CiAjZW5kaWYKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAgICAgZmxvYXQgaCA9IENHSW1h
Z2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzdWJJbWFnZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uub3JpZ2luYWxTaXplKCk7CiAjZWxzZQog
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CkBAIC00NzEsNyArNDcxLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAgICAgICBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRyaXgsIENHQ29udGV4dEdldENUTShjb250
ZXh0KSk7CiAgICAgICAgIC8vIFRoZSB0b3Agb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBp
cyBkcmF3biBhdCB0aGUgYm90dG9tIG9mIHRoZSB0aWxlLiBNYXAgaXQgdG8gdGhlIHRvcC4KICAg
ICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobWF0cml4LCAwLCBpbWFn
ZS5zaXplKCkuaGVpZ2h0KCkgLSBoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZShtYXRy
aXgsIDEsIC0xKTsKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUo
bWF0cml4LCAwLCAtaCk7CiAjZW5kaWYKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmUoY29uc3QgRmxvCiAgICAgYXV0byBwMiA9IGNlbnRlcmVkUG9pbnRz
WzFdOwogCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZvcmNlIGFudGlhbGlhc2luZyBv
biBmb3IgbGluZSBwYXR0ZXJucyBhcyB0aGV5IGRvbid0IGxvb2sgZ29vZCB3aXRoIGl0IHR1cm5l
ZCBvZmYgKDxyZGFyOi8vcHJvYmxlbS81NDU5NzcyPikuCiAgICAgICAgIENHQ29udGV4dFNldFNo
b3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdHJva2VTdHlsZSA9PSBEb3R0ZWRTdHJva2UgfHwgc3Ry
b2tlU3R5bGUgPT0gRGFzaGVkU3Ryb2tlKTsKICNlbHNlCkBAIC0xMTgyLDcgKzExODIsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNUcmFuc3BhcmVuCiAKIHN0YXRpYyB2b2lkIGFw
cGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQ
TEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJB
TSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CkBAIC0xNjQzLDcgKzE2NDMs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBACiAjZW5kaWYKIAogLy8gQ0EgdXNlcyBBUkdCMzIgZm9yIHRleHR1cmVzIGFuZCBB
UkdCMzIgLT4gQVJHQjMyIHJlc2FtcGxpbmcgaXMgb3B0aW1pemVkLgotI2RlZmluZSBVU0VfQVJH
QjMyIFBMQVRGT1JNKElPUykKKyNkZWZpbmUgVVNFX0FSR0IzMiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEltYWdl
QnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWluCiAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdS
ZWYganBlZ1VUSSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXSU4pCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAgIHN0YXRpYyBjb25zdCBD
RlN0cmluZ1JlZiBrVVRUeXBlSlBFRyA9IENGU1RSKCJwdWJsaWMuanBlZyIpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGtVVFR5cGVKUEVHOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjZW5kaWYKIAog
Ly8gQ0EgdXNlcyBBUkdCMzIgZm9yIHRleHR1cmVzIGFuZCBBUkdCMzIgLT4gQVJHQjMyIHJlc2Ft
cGxpbmcgaXMgb3B0aW1pemVkLgotI2RlZmluZSBVU0VfQVJHQjMyIFBMQVRGT1JNKElPUykKKyNk
ZWZpbmUgVVNFX0FSR0IzMiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE4LDcgKzQxOCw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVh
dGVGcmEKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0
SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRleCwgb3B0aW9ucy5nZXQoKSkpOwogICAg
IH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4gLSBDb3JlR3JhcGhpY3MgY2hhbmdlZCB0aGUg
ZGVmYXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBpT1MgNC4wIHRvIGtDR0ltYWdlQ2FjaGluZ1Ry
YW5zaWVudAogICAgIC8vIHdoaWNoIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9y
IHVzIHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJlIHJlc2FtcGxlZC9yZWNyZWF0ZWQgZXZlcnkg
dGltZSB3ZSBjYWxsZWQKICAgICAvLyBDR0NvbnRleHREcmF3SW1hZ2UuIFdlIG5vdyB0ZWxsIENH
IHRvIGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxlbS8xNDM2
Njc1NT4gLQpAQCAtNDI2LDcgKzQyNiw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNH
OjpjcmVhdGVGcmEKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1hZ2UuZ2V0KCksIGtDR0ltYWdlQ2FjaGluZ1RlbXBv
cmFyeSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgCiAgICAg
U3RyaW5nIHV0aSA9IHRoaXMtPnV0aSgpOwogICAgIGlmICh1dGkuaXNFbXB0eSgpIHx8IHV0aSAh
PSAicHVibGljLnhiaXRtYXAtaW1hZ2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNl
cnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogCiAjaWYgVVNFKENHKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUg
PEltYWdlSU8vSW1hZ2VJTy5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ29sb3I7CiBOU0NvbG9yICpw
bGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogVUlDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBD
b2xvciYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0NvbG9yQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0ICJDb2xvck1hYy5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjZW5k
aWYKQEAgLTQ0LDcgKzQ0LDcgQEAgTlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYg
Y29sbwogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiBVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNkZWZpbmUgSEFTX0NPUkVfVEVY
VF9XSURUSF9BVFRSSUJVVEUgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQotI2RlZmluZSBDQU5fRElTQUxMT1dfVVNF
Ul9JTlNUQUxMRURfRk9OVFMgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApKQorI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJ
RFRIX0FUVFJJQlVURSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2RlZmluZSBDQU5fRElTQUxMT1df
VVNFUl9JTlNUQUxMRURfRk9OVFMgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSkKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NzEsNyArNjcxLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2lt
aWxhckZvbnQoY29ucwogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIFN1YnN0aXR1dGUgdGhlIGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgZm9yIHdlbGwta25v
d24gbW9ub3NwYWNlIGZvbnRzLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShmYW1pbHksICJtb25hY28iKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1p
bHksICJtZW5sbyIpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGNvdXJpZXIoImNvdXJpZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKQEAgLTc2OSw3ICs3NjksNyBAQCBzdGF0aWMgQ1RGb250U3ltYm9saWNUcmFpdHMgY29tcHV0
ZVRyYWl0CiAKIFN5bnRoZXNpc1BhaXIgY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhDVEZvbnRS
ZWYgZm9udCwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgaXNQ
bGF0Zm9ybUZvbnQpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKENURm9udElzQXBwbGVDb2xvckVtb2ppKGZvbnQpKQogICAgICAgICByZXR1
cm4gU3ludGhlc2lzUGFpcihmYWxzZSwgZmFsc2UpOwogI2VuZGlmCkBAIC05MjQsNyArOTI0LDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBhdXRvJiBmb2xkZWQgPSBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uOjpmb2xkZWRGYW1pbHlOYW1lKHBvc3RTY3JpcHROYW1lKTsKICAgICAgICAgcmV0dXJu
IG1fcG9zdFNjcmlwdE5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbnN1cmUoZm9sZGVkLCBbJl0gewog
ICAgICAgICAgICAgYXV0byBwb3N0U2NyaXB0TmFtZVN0cmluZyA9IGZvbGRlZC5jcmVhdGVDRlN0
cmluZygpOwotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAgICAgICAg
ICAgICBDRlN0cmluZ1JlZiBuYW1lQXR0cmlidXRlID0ga0NURm9udFBvc3RTY3JpcHROYW1lQXR0
cmlidXRlOwogI2Vsc2UKICAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVBdHRyaWJ1dGUgPSBr
Q1RGb250TmFtZUF0dHJpYnV0ZTsKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHN0YXRpYyBWYXJpYXRp
b25DYXBhYmlsaXRpZXMgdmFyaWF0aW9uQ2EKICAgICB9CiAKICAgICBib29sIG9wdE91dEZyb21H
WE5vcm1hbGl6YXRpb24gPSBmYWxzZTsKLSNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKSkKICAgICBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gQ1RGb250RGVzY3Jp
cHRvcklzU3lzdGVtVUlGb250KGZvbnREZXNjcmlwdG9yKTsKICNlbmRpZgogCkBAIC0xMzA1LDcg
KzEzMDUsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9uCiAgICAg
ICAgIGZhbGxiYWNrRGVkdXBTZXQoKS5yZW1vdmUoZm9udCk7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FyYWJp
Y0NoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlciA+PSAw
eDA2MDAgJiYgY2hhcmFjdGVyIDw9IDB4MDZGRjsKQEAgLTEzMTcsNyArMTMxNyw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxsYmEKICAgICBBU1NFUlQobGVuZ3RoID4g
MCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsZVN0cmluZzsKLSNpZiAoUExB
VEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoIWxvY2FsZS5pc051bGwoKSkKICAgICAgICAgbG9jYWxlU3RyaW5nID0gbG9jYWxlLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAjZWxzZQpAQCAtMTMyNiwxMyArMTMyNiwxMyBAQCBzdGF0
aWMgUmV0YWluUHRyPENURm9udFJlZj4gbG9va3VwRmFsbGJhCiAKICAgICBDRkluZGV4IGNvdmVy
ZWRMZW5ndGggPSAwOwogICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHJlc3VsdDsKLSNpZiAhVVNF
X1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUICYmIChQTEFURk9STShNQUMpIHx8IChQTEFU
Rk9STShJT1MpICYmIFRBUkdFVF9PU19JT1MpKQorI2lmICFVU0VfUExBVEZPUk1fU1lTVEVNX0ZB
TExCQUNLX0xJU1QgJiYgKFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IFRBUkdFVF9PU19JT1MpKQogICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlUGh5c2lj
YWxGb250Rm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgs
IGxvY2FsZVN0cmluZy5nZXQoKSwgJmNvdmVyZWRMZW5ndGgpKTsKICNlbHNlCiAgICAgcmVzdWx0
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVGb3JDaGFyYWN0ZXJzV2l0aExhbmd1YWdlKGZvbnQsIGNo
YXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlU3RyaW5nLmdldCgpLCAmY292ZXJlZExlbmd0aCkpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBDYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gd29uJ3QgaW5jbHVkZSBtdWx0aXBsZSBjb2Rl
IHBvaW50cy4gIkxlbmd0aCIgaXMgdG8ga25vdyBob3cgbWFueSBjb2RlIHVuaXRzCiAgICAgLy8g
YXJlIGluIHRoZSBjb2RlIHBvaW50LgogICAgIFVDaGFyIGZpcnN0Q2hhcmFjdGVyID0gY2hhcmFj
dGVyc1swXTsKQEAgLTEzNTYsNyArMTM1Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVm
PiBsb29rdXBGYWxsYmEKIAogUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEZv
bnQqIG9yaWdpbmFsRm9udERhdGEsIGJvb2wgaXNQbGF0Zm9ybUZvbnQsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGxlbmd0aCAmJiByZXF1aXJlc0N1c3RvbUZhbGxi
YWNrRm9udCgqY2hhcmFjdGVycykpIHsKICAgICAgICAgYXV0byogZmFsbGJhY2sgPSBnZXRDdXN0
b21GYWxsYmFja0ZvbnQoKmNoYXJhY3RlcnMsIGRlc2NyaXB0aW9uKTsKICAgICAgICAgaWYgKCFm
YWxsYmFjaykKQEAgLTE1MTEsNyArMTUxMSw3IEBAIFJlZjxGb250PiBGb250Q2FjaGU6Omxhc3RS
ZXNvcnRGYWxsYmFja0YKICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAKICAgICAvLyBMYXN0UmVz
b3J0IGlzIGd1YXJhbnRlZWQgdG8gYmUgbm9uLW51bGwuCi0jaWYgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKKyNpZiAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpKTsKICAgICBhdXRvIGZvbnQgPSBhZG9wdENG
KENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29uCiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgIH0KIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBvcmln
aW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBmYWxzZTsKICAgICBpZiAoY2hhbmdlRm9udFNt
b290aGluZykgewogICAgICAgICBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBDR0Nv
bnRleHRHZXRTaG91bGRTbW9vdGhGb250cyhjZ0NvbnRleHQpOwpAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICBpZiAoaGFzU2lt
cGxlU2hhZG93KQogICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKGNoYW5nZUZvbnRTbW9vdGhpbmcpCiAgICAgICAgIENHQ29u
dGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNnQ29udGV4dCwgb3JpZ2luYWxTaG91bGRVc2VGb250
U21vb3RoaW5nKTsKICNlbmRpZgpAQCAtNTExLDcgKzUxMSw3IEBAIGNvbnN0IEZvbnQqIEZvbnRD
YXNjYWRlOjpmb250Rm9yQ29tYmluaW4KICAgICAgICAgY29uc3QgRm9udCogZm9udCA9IGZhbGxi
YWNrUmFuZ2VzQXQoaSkuZm9udEZvckNoYXJhY3RlcihiYXNlQ2hhcmFjdGVyKTsKICAgICAgICAg
aWYgKCFmb250KQogICAgICAgICAgICAgY29udGludWU7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChiYXNlQ2hhcmFjdGVyID49IDB4MDYw
MCAmJiBiYXNlQ2hhcmFjdGVyIDw9IDB4MDZmZiAmJiBmb250LT5zaG91bGROb3RCZVVzZWRGb3JB
cmFiaWMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGJvb2wg
Zm9udEhhc1ZlcnRpY2FsR2x5cGhzKENURm9udAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBmb250RmFtaWx5
U2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKENGU3RyaW5nUmVmIGZvbnRGYW1pbHlOYW1lKQogewog
ICAgIGlmICghZm9udEZhbWlseU5hbWUpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGJvb2wg
bmVlZHNBc2NlbnRBZGp1c3RtZW50KENGU3RyaQogCiB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9z
eW50aGV0aWNCb2xkT2Zmc2V0ID0gbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpID8gY2Vp
bGYobV9wbGF0Zm9ybURhdGEuc2l6ZSgpIC8gMjQuMGYpIDogMC5mOwogI2Vsc2UKICAgICBtX3N5
bnRoZXRpY0JvbGRPZmZzZXQgPSBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCkgPyAxLjBm
IDogMC5mOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0KCkKICAg
ICBpZiAocGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBGb250T3JpZW50YXRpb246OlZl
cnRpY2FsICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkpCiAgICAgICAgIG1faGFzVmVy
dGljYWxHbHlwaHMgPSBmb250SGFzVmVydGljYWxHbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250
KCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Q0dGbG9hdCBhZGp1c3RtZW50ID0gc2hvdWxkVXNlQWRqdXN0bWVudChtX3BsYXRmb3JtRGF0YS5m
b250KCkpID8gY2VpbCgoYXNjZW50ICsgZGVzY2VudCkgKiBrTGluZUhlaWdodEFkanVzdG1lbnQp
IDogMDsKIAogICAgIGxpbmVHYXAgPSBjZWlsZihsaW5lR2FwKTsKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIEZvbnQ6OnBsYXRmb3JtRGVzdHJveSgpCiAKIGJvb2wgRm9udDo6dmFyaWFudENhcHNT
dXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMgZm9udFZhcmlhbnRD
YXBzLCBVQ2hhcjMyIGNoYXJhY3RlcikgY29uc3QKIHsKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBU
QVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRGT1JNKE1BQykKICAgICBHbHlwaCBnbHlwaCA9IGds
eXBoRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CiAgICAgaWYgKCFnbHlwaCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGJvb2wgRm9udDo6dmFyaWFudENhcHNTdXBw
b3J0c0NoYXJhY3RlckYKICNlbmRpZgogfQogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgVEFSR0VU
X09TX0lPUykgfHwgUExBVEZPUk0oTUFDKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBU
QVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gc21hbGxDYXBzT3BlblR5cGVEaWN0aW9uYXJ5KENGU3RyaW5nUmVmIGtleSwgaW50
IHJhd1ZhbHVlKQogewogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdmFsdWUgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZy
YXdWYWx1ZSkpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgRm9udDo6ZGV0ZXJtaW5lUGl0Y2go
KQogCiAgICAgaW50IGZpeGVkUGl0Y2ggPSBleHRyYWN0TnVtYmVyKGFkb3B0Q0Yoc3RhdGljX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KENURm9udENvcHlBdHRyaWJ1dGUobV9wbGF0Zm9ybURhdGEuZm9udCgp
LCBrQ1RGb250Rml4ZWRBZHZhbmNlQXR0cmlidXRlKSkpLmdldCgpKTsKICAgICBtX3RyZWF0QXNG
aXhlZFBpdGNoID0gKENURm9udEdldFN5bWJvbGljVHJhaXRzKGN0Rm9udCkgJiBrQ1RGb250TW9u
b1NwYWNlVHJhaXQpIHx8IGZpeGVkUGl0Y2ggfHwgKGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoZnVs
bE5hbWUuZ2V0KCksIENGU1RSKCJPc2FrYS1Nb25vIikpIHx8IGNhc2VJbnNlbnNpdGl2ZUNvbXBh
cmUoZnVsbE5hbWUuZ2V0KCksIENGU1RSKCJNUy1QR290aGljIikpIHx8IGNhc2VJbnNlbnNpdGl2
ZUNvbXBhcmUoZnVsbE5hbWUuZ2V0KCksIENGU1RSKCJNb25vdHlwZUNvcnNpdmEiKSkpOwotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChmYW1pbHlO
YW1lICYmIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoZmFtaWx5TmFtZS5nZXQoKSwgQ0ZTVFIoIkNv
dXJpZXIgTmV3IikpKSB7CiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBDb3VyaWVyIE5ldyB0byBu
b3QgYmUgdHJlYXRlZCBhcyBmaXhlZCBwaXRjaCwgYXMgdGhpcyB3aWxsIG1ha2UgdXNlIG9mIGEg
aGFja2VkIHNwYWNlIHdpZHRoIHdoaWNoIGlzIHVuZGVzaXJlYWJsZSBmb3IgaVBob25lIChzZWUg
cmRhcjovLzYyNjk3ODMpLgogICAgICAgICBtX3RyZWF0QXNGaXhlZFBpdGNoID0gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRp
b25Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2Nv
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzU3lzdGVtRm9udFN0cmluZyhjbwogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICJzeXN0ZW0tdWkiKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCBzdGQ6OnNpemVfdCBzaXplLCBzdGQ6OnNpemVfdC4uLiBpbmRpY2VzPiBzdGQ6OmFycmF5PFQs
IHNpemU+IGNvbnZlcnRBcnJheShVICgmYXJyYXkpW3NpemVdLCBzdGQ6OmluZGV4X3NlcXVlbmNl
PGluZGljZXMuLi4+KQogewpAQCAtOTQsNyArOTQsNyBAQCB1bnNpZ25lZCBGb250Q2FzY2FkZURl
c2NyaXB0aW9uOjplZmZlY3RpCiAgICAgICAgIGNvbnN0IGF1dG8mIGNzc0ZhbWlseSA9IGZhbWls
eUF0KGkpOwogICAgICAgICBpZiAoaXNTeXN0ZW1Gb250U3RyaW5nKGNzc0ZhbWlseSkpCiAgICAg
ICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHks
IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91
bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0
eWxlKGNzc0ZhbWlseSkpCiAgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVM
aXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRV
c2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkuc2l6ZSgp
OwogI2VuZGlmCkBAIC0xMjEsNyArMTIxLDcgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9u
dENhc2NhZGVEZXNjcgogICAgICAgICAgICAgICAgIHJldHVybiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbihjYXNjYWRlTGlzdFtpbmRleF0uZ2V0KCkpOwogICAgICAgICAgICAgaW5kZXggLT0gY2Fz
Y2FkZUxpc3Quc2l6ZSgpOwogICAgICAgICB9Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0Zh
bWlseSkpIHsKICAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2Fk
ZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNsaWVu
dFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAg
ICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4
dFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPENvcmVUZXh0L0NvcmVUZXh0
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2VuZGlmCkBAIC00
OCw3ICs0OCw3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb24KICAg
ICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q1RGb250Q29weUF0dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwog
ICAgIG1faGFzVmFyaWF0aW9ucyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQo
dmFyaWF0aW9ucy5nZXQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBtX2lzRW1vamkgPSBDVEZvbnRJc0FwcGxlQ29sb3JFbW9qaShtX2ZvbnQu
Z2V0KCkpOwogI2VuZGlmCiB9CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIENGRGljdGlvbmFy
eVJlZiBjYXNjYWRlVG9MYXN0UmVzbwogc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9y
UmVmPiBjYXNjYWRlVG9MYXN0UmVzb3J0QW5kVmFyaWF0aW9uc0ZvbnREZXNjcmlwdG9yKENURm9u
dFJlZiBvcmlnaW5hbEZvbnQpCiB7CiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiA8cmRhcjov
L3Byb2JsZW0vMjg0NDk0NDE+IGlzIGZpeGVkLgotI2RlZmluZSBXT1JLQVJPVU5EX0NPUkVURVhU
X1ZBUklBVElPTlNfV0lUSF9GQUxMQkFDS19MSVNUX0JVRyAoRU5BQkxFKFZBUklBVElPTl9GT05U
UykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgMTEwMDAwKSkpCisjZGVmaW5lIFdPUktBUk9VTkRfQ09SRVRFWFRfVkFSSUFUSU9O
U19XSVRIX0ZBTExCQUNLX0xJU1RfQlVHIChFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKSAmJiAoKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTEwMDAwKSkpCiAKICAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyA9IGNhc2Nh
ZGVUb0xhc3RSZXNvcnRBdHRyaWJ1dGVzRGljdGlvbmFyeSgpOwogI2lmIFdPUktBUk9VTkRfQ09S
RVRFWFRfVkFSSUFUSU9OU19XSVRIX0ZBTExCQUNLX0xJU1RfQlVHCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8z
RCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dDNESU9TLmgi
CiAjZW5kaWYKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmEKICAgICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX3ByaXZhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2F0dHJzLmlz
V2ViR0wyKQogICAgICAgICBtX2NvbXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfRVNTTF9P
VVRQVVQsIFNIX1dFQkdMMl9TUEVDKTsKICAgICBlbHNlCkBAIC01NjUsNyArNTY1LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2VJT1N1cmZhYwogewogI2lmIFVTRShPUEVOR0wp
CiAgICAgcmV0dXJuIGtDR0xOb0Vycm9yID09IENHTFRleEltYWdlSU9TdXJmYWNlMkQocGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCgpLCB0YXJnZXQsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHN1cmZhY2UsIHBsYW5lKTsKLSNlbGlmIFVTRShPUEVOR0xfRVMp
ICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2VsaWYgVVNFKE9QRU5HTF9FUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogICAgIHJldHVybiBbcGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpIHRleEltYWdlSU9TdXJmYWNlOnN1cmZhY2UgdGFyZ2V0OnRhcmdldCBpbnRl
cm5hbEZvcm1hdDppbnRlcm5hbEZvcm1hdCB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0IGZvcm1h
dDpmb3JtYXQgdHlwZTp0eXBlIHBsYW5lOnBsYW5lXTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHRhcmdldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQg
PEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiV0tHcmFwaGljcy5o
IgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zRm9yQmlwbGFuYXJT
CiAgICAgICAgIChpZClrSU9TdXJmYWNlSGVpZ2h0OiBAKGhlaWdodCksCiAgICAgICAgIChpZClr
SU9TdXJmYWNlUGl4ZWxGb3JtYXQ6IEAocGl4ZWxGb3JtYXQpLAogICAgICAgICAoaWQpa0lPU3Vy
ZmFjZUFsbG9jU2l6ZTogQCh0b3RhbEJ5dGVzKSwKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgKGlkKWtJT1N1cmZhY2VDYWNoZU1vZGU6IEAoa0lP
TWFwV3JpdGVDb21iaW5lQ2FjaGUpLAogI2VuZGlmCiAgICAgICAgIChpZClrSU9TdXJmYWNlUGxh
bmVJbmZvOiBwbGFuZUluZm8sCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIE5TRGljdGlvbmFy
eSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVzUGVyRWxl
bWVudDogQChieXRlc1BlckVsZW1lbnQpLAogICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVzUGVy
Um93OiBAKGJ5dGVzUGVyUm93KSwKICAgICAgICAgKGlkKWtJT1N1cmZhY2VBbGxvY1NpemU6IEAo
dG90YWxCeXRlcyksCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIChpZClrSU9TdXJmYWNlQ2FjaGVNb2RlOiBAKGtJT01hcFdyaXRlQ29tYmluZUNh
Y2hlKSwKICNlbmRpZgogICAgICAgICAoaWQpa0lPU3VyZmFjZUVsZW1lbnRIZWlnaHQ6IEAoMSkK
QEAgLTIzNyw3ICsyMzcsNyBAQCBJbnRTaXplIElPU3VyZmFjZTo6bWF4aW11bVNpemUoKQogICAg
IC8vIFByb3RlY3QgYWdhaW5zdCBtYXhTaXplIGJlaW5nIHsgMCwgMCB9LgogICAgIGNvbnN0IGlu
dCBpT1NNYXhTdXJmYWNlRGltZW5zaW9uTG93ZXJCb3VuZCA9IDEwMjQ7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBNYXRjaCBsaW1pdHMgaW1w
b3NlZCBieSBDb3JlIEFuaW1hdGlvbi4gRklYTUU6IHNob3VsZCBoYXZlIEFQSSBmb3IgdGhpcyA8
cmRhcjovL3Byb2JsZW0vMjU0NTQxNDg+CiAgICAgY29uc3QgaW50IGlPU01heFN1cmZhY2VEaW1l
bnNpb24gPSA4ICogMTAyNDsKICNlbHNlCkBAIC0zNzcsNyArMzc3LDcgQEAgSU9TdXJmYWNlOjpG
b3JtYXQgSU9TdXJmYWNlOjpmb3JtYXQoKSBjbwogCiBJT1N1cmZhY2VJRCBJT1N1cmZhY2U6OnN1
cmZhY2VJRCgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiAoIVVTRShBUFBMRV9JTlRF
Uk5BTF9TREspIHx8IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICghVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCiAgICAgcmV0dXJuIDA7
CiAjZWxzZQogICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX3N1cmZhY2UuZ2V0KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWVJT1MuaCIKICNlbmRpZgogCkBAIC01OSw3ICs1OSw3IEBAIFZlY3RvcjxS
ZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFMKICAgICAgICAgICAgIC8vIEZJWE1FOiBV
c2UgYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcigpIGluIGJvdGggY2FzZXMg
b25jZSA8cmRhcjovL3Byb2JsZW0vMzMwNDYwNDE+IGlzIGZpeGVkLgogICAgICAgICAgICAgc3lz
dGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3Ioc3lzdGVtRm9u
dC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBhcmFtZXRlcnMuaXRhbGljLCBwYXJhbWV0ZXJz
LnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgICAgICB9IGVs
c2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7CiAgICAg
ICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxw
dHIpKTsKICAgICAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChwYXJhbWV0
ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQgPyBrQ1RGb250VHJhaXRCb2xkIDog
MCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hX2gKICNkZWZpbmUgVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYV9oCiAKLSNpZiAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKSkgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAj
aW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9D
QUxheWVyLmg+CkBAIC01Nyw2ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIChQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjZW5kaWYgLy8gKFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjUsMTQgKzI1LDE0IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIChQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYgKFBMQVRGT1JNKElPU19GQU1J
TFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
KSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiVGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2VuZGlmCkBAIC04NSw3ICs4NSw3IEBAIC0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcKIHsKICAgICBVTlVTRURfUEFSQU0o
Y2hhbmdlKTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIGlm
IChfcGFyZW50ICYmIFtrZXlQYXRoIGlzRXF1YWw6QCJib3VuZHMiXSAmJiBvYmplY3QgPT0gX3Bh
cmVudC0+cGxhdGZvcm1MYXllcigpKQogICAgICAgICAgICAgX3BhcmVudC0+Y2xpZW50KCkudGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKF9wYXJlbnQtPmJvdW5kcygpKTsKQEAg
LTE0Miw0ICsxNDIsNCBAQCBJbnRSZWN0IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OmJv
CiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KFttX2xheWVyLmdldCgpIGJv
dW5kc10pKTsKIH0KIAotI2VuZGlmIC8vIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJB
Q0spCisjZW5kaWYgLy8gKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViTWV0YWxMYXllci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR1BVRGV2aWNlOwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1JfRkFNSUxZKQogQGludGVyZmFjZSBXZWJNZXRhbExheWVyIDogQ0FNZXRhbExheWVyIHsKICNl
bHNlCiBAaW50ZXJmYWNlIFdlYk1ldGFsTGF5ZXIgOiBDQUxheWVyIHsgLy8gRklYTUU6IFdlYk1l
dGFsIC0gRGlzYWJsZSBXZWJNZXRhbCBvbiBpT1Mgc2ltdWxhdG9yPwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKIHN0YXRpYyBpbmxpbmUg
Q0ZTdHJpbmdSZWYgY3ZQaXhlbEZvcm1hdE9wZW5HTEtleSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShJT1NNQUMpCiAgICAgcmV0dXJuIGtDVlBpeGVsRm9ybWF0T3BlbkdMRVNDb21wYXRpYmls
aXR5OwogI2Vsc2UKICAgICByZXR1cm4ga0NWUGl4ZWxCdWZmZXJPcGVuR0xDb21wYXRpYmlsaXR5
S2V5OwpAQCAtNzEsNyArNzEsNyBAQCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpJbWFnZVRyYW5z
ZmVyU2VzCiAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQogICAgICAgICBSRUxF
QVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OkltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6IFZUU2Vzc2lvblNldFByb3BlcnR5KGtWVFBpeGVsVHJhbnNmZXJQcm9wZXJ0eUtleV9S
ZWFsVGltZSkgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykp
OwogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NNQUMpCiAgICAgc3RhdHVzID0gVlRTZXNzaW9u
U2V0UHJvcGVydHkodHJhbnNmZXJTZXNzaW9uLCBrVlRQaXhlbFRyYW5zZmVyUHJvcGVydHlLZXlf
RW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFRyYW5zZmVyLCBAKFlFUykpOwogICAgIGlmIChzdGF0
dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOiBWVFNlc3Npb25TZXRQ
cm9wZXJ0eShrVlRQaXhlbFRyYW5zZmVyUHJvcGVydHlLZXlfRW5hYmxlSGFyZHdhcmVBY2NlbGVy
YXRlZFRyYW5zZmVyKSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIHN0YXRpY19jYXN0PGludD4oc3Rh
dHVzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFZpZGVvVGV4dHVy
ZUNvcGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckNW
KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0
eXBlZGVmIENWT3BlbkdMRVNUZXh0dXJlUmVmIFRleHR1cmVUeXBlOwogI2Vsc2UKICAgICB0eXBl
ZGVmIENWT3BlbkdMVGV4dHVyZVJlZiBUZXh0dXJlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNpZiBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtNTMsNCArNTMsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRp
ZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCIKIAotI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBRGlzcGxheUxpbmsu
aD4KQEAgLTExNyw0ICsxMTcsNCBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6ZGlz
cGxheUxpCiAKIH0KIAotI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRBbnRpYWxpYXNpbmdT
dGF0ZVNhdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250QW50aWFsaWFzaW5nU3Rh
dGVTYXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEZvbnRB
bnRpYWxpYXNpbmdTdGF0ZVNhdmVyX2gKICNkZWZpbmUgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2
ZXJfaAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAKQEAgLTM1LDEyICszNSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlciB7
CiBwdWJsaWM6CiAgICAgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIGJvb2wgdXNlT3JpZW50YXRpb25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5nKQotI2lm
ICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZB
TUlMWSkKICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAgICAgLCBtX3VzZU9yaWVu
dGF0aW9uRGVwZW5kZW50Rm9udEFudGlhbGlhc2luZyh1c2VPcmllbnRhdGlvbkRlcGVuZGVudEZv
bnRBbnRpYWxpYXNpbmcpCiAjZW5kaWYKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRP
UikKKyNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICAgICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQpOwogICAgICAgICBVTlVTRURfUEFSQU0odXNlT3JpZW50YXRpb25EZXBlbmRl
bnRGb250QW50aWFsaWFzaW5nKTsKICNlbmRpZgpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldHVwKGJvb2wgaXNMYW5kc2NhcGVPcmllbnRhdGlvbikKICAgICB7Ci0jaWYg
IVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFN
SUxZKQogICAgIG1fb2xkQW50aWFsaWFzaW5nU3R5bGUgPSBDR0NvbnRleHRHZXRGb250QW50aWFs
aWFzaW5nU3R5bGUobV9jb250ZXh0KTsKIAogICAgIGlmIChtX3VzZU9yaWVudGF0aW9uRGVwZW5k
ZW50Rm9udEFudGlhbGlhc2luZykKQEAgLTYwLDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlc3RvcmUoKQogICAgIHsKLSNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiAh
UExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpCiAgICAgICAgIGlmIChtX3VzZU9yaWVudGF0
aW9uRGVwZW5kZW50Rm9udEFudGlhbGlhc2luZykKICAgICAgICAgICAgIENHQ29udGV4dFNldEZv
bnRBbnRpYWxpYXNpbmdTdHlsZShtX2NvbnRleHQsIG1fb2xkQW50aWFsaWFzaW5nU3R5bGUpOwog
I2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgotI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICBDR0NvbnRleHRSZWYgbV9j
b250ZXh0OwogICAgIGJvb2wgbV91c2VPcmllbnRhdGlvbkRlcGVuZGVudEZvbnRBbnRpYWxpYXNp
bmc7CiAgICAgQ0dGb250QW50aWFsaWFzaW5nU3R5bGUgbV9vbGRBbnRpYWxpYXNpbmdTdHlsZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Zv
bnRDYWNoZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb250Q2FjaGUuaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJGb250
Q2FzY2FkZS5oIgogI2ltcG9ydCAiUmVuZGVyVGhlbWVJT1MuaCIKQEAgLTE2Nyw0ICsxNjcsNCBA
QCBSZXRhaW5QdHI8Q1RGb250UmVmPiBwbGF0Zm9ybUZvbnRXaXRoRmFtCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0ljb25JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ljb25JT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkljb24uaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJCaXRtYXBJbWFn
ZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC03Myw0ICs3Myw0IEBAIHZvaWQg
SWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsCiAgICAgaWYgKCFtX21heVVzZU5hdHVyYWxX
cml0aW5nRGlyZWN0aW9uIHx8IG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkgewogICAgICAg
ICBjb25zdCBzaG9ydCBsdHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlID0gMDsKICAgICAgICAg
Y29uc3Qgc2hvcnQgcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSA9IDE7Ci0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEy
MDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEyMDAwMCkKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQq
IG9wdGlvbktleXNbXSA9IHsga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVs
LCBrQ1RUeXBlc2V0dGVyT3B0aW9uQWxsb3dVbmJvdW5kZWRMYXlvdXQgfTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3JjZWRFbWJlZGRpbmdM
ZXZlbFZhbHVlKSwga0NGQm9vbGVhblRydWUgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQq
IHJ0bE9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZydGxGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSwga0NG
Qm9vbGVhblRydWUgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9GbG9hdFBvaW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNCArNDYsNCBAQCBGbG9hdFBv
aW50OjpvcGVyYXRvciBOU1BvaW50KCkgY29uc3QKIAogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zs
b2F0UmVjdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwog
CiBGbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDogbV9sb2NhdGlvbihyLm9y
aWdpbiksIG1fc2l6ZShyLnNpemUpCkBAIC00Miw2ICs0Miw2IEBAIEZsb2F0UmVjdDo6b3BlcmF0
b3IgTlNSZWN0KCkgY29uc3QKIH0KIAogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxv
YXRTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAK
IEZsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0IE5TU2l6ZSYgcykgOiBtX3dpZHRoKHMud2lkdGgp
LCBtX2hlaWdodChzLmhlaWdodCkKQEAgLTQyLDYgKzQyLDYgQEAgRmxvYXRTaXplOjpvcGVyYXRv
ciBOU1NpemUoKSBjb25zdAogfQogCiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRl
Q0ZEYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udERlc2Ny
aXB0b3I7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBhdXRv
IGFycmF5ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JzRnJvbURh
dGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxJbWFnZUlPL0ltYWdl
SU8uaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50
UG9pbnRNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUwogCiBJbnRQb2ludDo6SW50UG9pbnQoY29uc3QgTlNQb2ludCYgcCkgOiBt
X3goc3RhdGljX2Nhc3Q8aW50PihwLngpKSwgbV95KHN0YXRpY19jYXN0PGludD4ocC55KSkKQEAg
LTQxLDYgKzQxLDYgQEAgSW50UG9pbnQ6Om9wZXJhdG9yIE5TUG9pbnQoKSBjb25zdAogfQogCiAj
ZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW50UmVjdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW50UmVjdE1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19T
QU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAogSW50UmVjdDo6b3BlcmF0b3IgTlNSZWN0KCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXplTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bnRTaXplTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW50U2l6ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUwogCiBJbnRTaXplOjpJbnRTaXplKGNvbnN0IE5TU2l6ZSYgcykgOiBtX3dp
ZHRoKHN0YXRpY19jYXN0PGludD4ocy53aWR0aCkpLCBtX2hlaWdodChzdGF0aWNfY2FzdDxpbnQ+
KHMuaGVpZ2h0KSkKQEAgLTQxLDYgKzQxLDYgQEAgSW50U2l6ZTo6b3BlcmF0b3IgTlNTaXplKCkg
Y29uc3QKIH0KIAogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2Vi
S2l0TlNJbWFnZUV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4
dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYktp
dE5TSW1hZ2VFeHRyYXMuaCIKIApAQCAtNDUsNCArNDUsNCBAQCAtICh2b2lkKV93ZWJfbG9ja0Zv
Y3VzV2l0aERldmljZVNjYWxlRmFjCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVh
cnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldLR3JhcGhpY3MuaCIK
ICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgpAQCAtNDEs
NyArNDEsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJMYXllcihQcml2YXRl
KQogLSAodm9pZClkcmF3U2NhbGVkQ29udGVudHNJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250
ZXh0OwogQGVuZApAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OihDR1JlY3QpZGkKIAogLSAodm9pZClkaXNwbGF5CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQogICAg
ICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKQEAgLTEyMiw3ICsxMjIsNyBAQCAtICh2b2lk
KWRpc3BsYXkKIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChw
dGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJT1MuaCIKICNlbmRpZgogCkBAIC0xNTcsNyArMTU3
LDcgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKICAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKICAg
ICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZSIpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CkBAIC0xNjksNyArMTY5LDcg
QEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogICAgIH0KIAogICAg
IGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9zUkdCIik7CiAjZWxzZQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOwpAQCAt
MTk1LDcgKzE5NSw3IEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0c0V4dGVuc2kK
ICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBM
QVRGT1JNKEdUSykpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Ci0jZWxpZiBQTEFURk9STShJT1MpCisj
ZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogI2Vsc2UKICAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVy
dGV4X2FycmF5X29iamVjdCIpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgRXh0ZW5zaW9uczNE
T3BlbkdMOjpzdXBwb3J0c0V4dGVuc2kKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CiAKICAg
ICBpZiAobmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKICNlbGlmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
R1RLKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfZHJhd19idWZmZXJzIik7CkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBFeHRlbnNpb25zM0RP
cGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogI2VuZGlmCiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRElPUy5oIgogI2VuZGlmCiAj
aW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZiBFTkFCTEUo
R1JBUEhJQ1NfQ09OVEVYVF8zRCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RJT1MuaCIKICNlbmRpZgogCkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShHQwogICAgIDo6Z2xCdWZmZXJTdWJEYXRh
KHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXUEUpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShXUEUpCiB2b2lkKiBHcmFwaGljc0NvbnRleHQz
RDo6bWFwQnVmZmVyUmFuZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0Mz
RHNpemVpcHRyIGxlbmd0aCwgR0MzRGJpdGZpZWxkIGFjY2VzcykKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoR1JBUEhJ
Q1NfQ09OVEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09O
VEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogCkBAIC00MDQsNCArNDA0LDQgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3ND
b250ZXh0M0Q6OnBsYXRmbwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF8zRCkgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF8zRCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMTYsNyArMTIxNiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBU
cmFuc2Zvcm1hdGlvbk1hdHIKICAgICAgICAgOiBbbGVmdE1hdHJpeF0iK3IiKGxlZnRNYXRyaXgp
LCBbcmlnaHRNYXRyaXhdIityIihyaWdodE1hdHJpeCkKICAgICAgICAgOgogICAgICAgICA6ICJt
ZW1vcnkiLCAicjMiLCAiZDAiLCAiZDEiLCAiZDIiLCAiZDMiLCAiZDQiLCAiZDUiLCAiZDYiLCAi
ZDciLCAiZDE2IiwgImQxNyIsICJkMTgiLCAiZDE5IiwgImQyMCIsICJkMjEiLCAiZDIyIiwgImQy
MyIsICJkMjQiLCAiZDI1IiwgImQyNiIsICJkMjciLCAiZDI4IiwgImQyOSIsICJkMzAiLCAiZDMx
Iik7Ci0jZWxpZiBDUFUoQVJNX1ZGUCkgJiYgUExBVEZPUk0oSU9TKQorI2VsaWYgQ1BVKEFSTV9W
RlApICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNkZWZpbmUgTUFUUklYX01VTFRJUExZX09O
RV9MSU5FIFwKICAgICAidmxkbWlhLjY0ICAlW3JpZ2h0TWF0cml4XSEsIHsgZDAtZDN9XG5cdCIg
XApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKIAotI2lmIChQTEFURk9STShJT1MpICYmIENQVShBUk1fVEhVTUIyKSkgfHwgZGVmaW5l
ZChUUkFOU0ZPUk1BVElPTl9NQVRSSVhfVVNFX1g4Nl82NF9TU0UyKQorI2lmIChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBDUFUoQVJNX1RIVU1CMikpIHx8IGRlZmluZWQoVFJBTlNGT1JNQVRJT05f
TUFUUklYX1VTRV9YODZfNjRfU1NFMikKICNpZiBDT01QSUxFUihNU1ZDKQogICAgIF9fZGVjbHNw
ZWMoYWxpZ24oMTYpKSB0eXBlZGVmIGRvdWJsZSBNYXRyaXg0WzRdWzRdOwogI2Vsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkN1cnNvci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMjYwLDQgKzI2MCw0IEBA
IEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqLCBjb25zdCAKIAogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZXZpY2UuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAt
NzIsNCArNzIsNCBAQCBib29sIGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgRGV2aWNlX2gKICNkZWZp
bmUgRGV2aWNlX2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2lvcy9Nb2Jp
bGVHZXN0YWx0U1BJLmg+CkBAIC00MSw2ICs0MSw2IEBAIGJvb2wgZGV2aWNlSGFzSVBhZENhcGFi
aWxpdHkoKTsKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBEZXZpY2VfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNs
aWVudElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAKICNp
bmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250
cm9sbGVyLmgiCkBAIC01Nyw0ICs1Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlv
bkNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVNb3Rpb25NYW5hZ2VyLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRGV2aWNlTW90aW9uQ2xpZW50
SU9TOjptb3Rpb25DaGFuZ2UKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAgICAgICAgIHJldHVybjsK
IAotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRP
Ul9GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHhBY2NlbGVyYXRpb24pOwogICAgIFVOVVNFRF9Q
QVJBTSh5QWNjZWxlcmF0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oekFjY2VsZXJhdGlvbik7CkBA
IC0xMDUsNyArMTA1LDcgQEAgdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6Om1vdGlvbkNoYW5n
ZQogICAgICAgICBhY2NlbGVyYXRpb24gPSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246
OmNyZWF0ZSh4QWNjZWxlcmF0aW9uLCB5QWNjZWxlcmF0aW9uLCB6QWNjZWxlcmF0aW9uKTsKICAg
ICAgICAgcm90YXRpb25SYXRlID0gRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlOjpjcmVh
dGUoeFJvdGF0aW9uUmF0ZSwgeVJvdGF0aW9uUmF0ZSwgelJvdGF0aW9uUmF0ZSk7CiAgICAgfQot
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X1NJTVVMQVRPUl9GQU1JTFkpCiAKICAgICBtX2N1cnJlbnREZXZpY2VNb3Rpb25EYXRhID0gRGV2
aWNlTW90aW9uRGF0YTo6Y3JlYXRlKFdURk1vdmUoYWNjZWxlcmF0aW9uKSwgV1RGTW92ZShhY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KSwgV1RGTW92ZShyb3RhdGlvblJhdGUpLCBrTW90aW9u
VXBkYXRlSW50ZXJ2YWwpOwogICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9u
KG1fY3VycmVudERldmljZU1vdGlvbkRhdGEuZ2V0KCkpOwpAQCAtMTEzLDQgKzExMyw0IEBAIHZv
aWQgRGV2aWNlTW90aW9uQ2xpZW50SU9TOjptb3Rpb25DaGFuZ2UKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQ
TEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAogI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmgiCkBAIC01Nyw0ICs1Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVNb3Rp
b25NYW5hZ2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJT1M6Om9yaWVudGEKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZP
Uk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKGFscGhhKTsKICAgICBV
TlVTRURfUEFSQU0oYmV0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGdhbW1hKTsKQEAgLTk4LDQgKzk4
LDQgQEAgdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUzo6b3JpZW50YQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
cmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJEb2N1bWVudC5o
IgogI2ltcG9ydCAiRWxlbWVudC5oIgpAQCAtMzAwLDQgKzMwMCw0IEBAIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmEKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRXZlbnRMb29wSU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9FdmVudExvb3BJT1MubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9FdmVudExvb3BJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CiAK
QEAgLTQwLDQgKzQwLDQgQEAgdm9pZCBFdmVudExvb3A6OmN5Y2xlKCkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZlbnRJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2ZW50
SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
S2V5RXZlbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiS2V5RXZlbnRD
b2NvYS5oIgogI2ltcG9ydCAiS2V5RXZlbnRDb2Rlc0lPUy5oIgpAQCAtMzI5LDQgKzMyOSw0IEBA
IHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW8KIAogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgTGVnYWN5VGlsZUNh
Y2hlX2gKICNkZWZpbmUgTGVnYWN5VGlsZUNhY2hlX2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKQEAgLTIyMSw2ICsyMjEsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFRpbGVDYWNoZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJMZWdhY3lUaWxlQ2FjaGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNp
bmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgpAQCAtODIzLDQgKzgyMyw0IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpkdW1wVGlsZXMoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBMZWdhY3lUaWxlR3Jp
ZF9oCiAjZGVmaW5lIExlZ2FjeVRpbGVHcmlkX2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJ
bnRQb2ludEhhc2guaCIKQEAgLTEzMiw1ICsxMzIsNSBAQCBzdGF0aWMgaW5saW5lIEludFBvaW50
IGJvdHRvbVJpZ2h0KGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2VuZGlmIC8v
IFRpbGVHcmlkX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
R3JpZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUdyaWQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkLmgiCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkxlZ2Fj
eVRpbGVHcmlkVGlsZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVMYXllci5oIgpAQCAtNTYzLDQg
KzU2Myw0IEBAIHZvaWQgTGVnYWN5VGlsZUdyaWQ6OmR1bXBUaWxlcygpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVHcmlkVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlR3JpZFRpbGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIExlZ2FjeVRpbGVHcmlkVGlsZV9oCiAjZGVmaW5lIExlZ2FjeVRp
bGVHcmlkVGlsZV9oCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtNjQsNSArNjQsNSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNl
bmRpZiAvLyBMZWdhY3lUaWxlR3JpZFRpbGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGls
ZUNhY2hlLmgiCkBAIC0xMzEsNCArMTMxLDQgQEAgdm9pZCBMZWdhY3lUaWxlR3JpZFRpbGU6OnNo
b3dCb3JkZXIoYm9vbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8UXVhcnR6Q29y
ZS9DQUxheWVyLmg+CiAKQEAgLTQ5LDUgKzQ5LDUgQEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiAt
IChpZClpbml0V2l0aFRpbGVHcmlkOihXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCopdGlsZUdyaWQ7
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUxheWVyLmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkxl
Z2FjeVRpbGVDYWNoZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkLmgiCkBAIC0xMjUsNCAr
MTI1LDQgQEAgLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKgogCiBAZW5k
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllclBvb2wuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkludFNpemVIYXNoLmgi
CkBAIC04NSw0ICs4NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXll
clBvb2wubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUxheWVyUG9vbC5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
ICJMZWdhY3lUaWxlTGF5ZXIuaCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgpAQCAtMTY5
LDQgKzE2OSw0IEBAIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6ZHJhaW4oKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb3dQ
b3dlck1vZGVOb3RpZmllcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTG93UG93ZXJNb2RlTm90aWZpZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb3dQb3dlck1vZGVOb3RpZmllcklPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJM
b3dQb3dlck1vZGVOb3RpZmllci5oIgogCkBAIC0xMDIsNCArMTAyLDQgQEAgdm9pZCBub3RpZnlM
b3dQb3dlck1vZGVDaGFuZ2VkKExvd1Bvd2VyTQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKICNpbXBvcnQgIkltYWdl
LmgiCkBAIC00NDksNCArNDQ5LDQgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZp
bGVQYXRocwogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bUV2ZW50RmFjdG9yeUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCkBAIC01Niw0ICs1
Niw0IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2UKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1FdmVudEZhY3RvcnlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJJbnRQb2ludC5oIgogI2ltcG9ydCAi
S2V5RXZlbnRDb2NvYS5oIgpAQCAtNTI2LDQgKzUyNiw0IEBAIFBsYXRmb3JtVG91Y2hFdmVudCBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQ29s
b3IuaCIKICNpbXBvcnQgIkltYWdlLmgiCkBAIC00Niw3ICs0Niw3IEBACiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2RlZmlu
ZSBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTIChQTEFURk9STShJT1MpICYmICEo
UExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikpKQorI2RlZmluZSBQQVNURUJP
QVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhKFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKSkKICNkZWZpbmUgTlNVUkxfU1VQ
UE9SVFNfVElUTEUgKCFQTEFURk9STShJT1NNQUMpKQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJ
S2l0KQpAQCAtNjk0LDQgKzY5NCw0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVT
dXBwb3J0ZWQKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1TY3JlZW5JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtU2NyZWVuSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4u
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgIkRldmljZS5oIgpAQCAt
MTYwLDQgKzE2MCw0IEBAIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICpzY3JlZW4K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
IgogCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKQEAgLTI3OSw0ICsyNzksNCBAQCB2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAt
MjE0LDQgKzIxNCw0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmludmEK
IH0KIAogI2VuZGlmIC8vIEhBVkUoQVZLSVQpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3Rl
bmVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlJl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKE1FRElB
X1BMQVlFUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKE1FRElBX1BMQVlFUikK
IAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtNTYsNCArNTYsNCBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgJiYgSEFWRShNRURJQV9QTEFZRVIpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgSEFWRShNRURJQV9QTEFZRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIEhBVkUoTUVESUFfUExBWUVSKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhB
VkUoTUVESUFfUExBWUVSKQogCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUFJlbW90ZUNvbW1hbmQu
aD4KICNpbXBvcnQgPE1lZGlhUGxheWVyL01QUmVtb3RlQ29tbWFuZENlbnRlci5oPgpAQCAtMTUx
LDQgKzE1MSw0IEBAIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1cGRhdGVTdXAKIAog
fQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBIQVZFKE1FRElBX1BMQVlFUikKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKE1FRElBX1BMQVlFUikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJT1MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJT1MuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU1NMS2V5
R2VuZXJhdG9ySU9TLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDIsNCArNDIsNCBAQCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRv
ci5oIgogCkBAIC03MCw0ICs3MCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmlt
YXRvcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbEFuaW1hdG9ySU9TLmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJh
bWUuaCIKICNpbXBvcnQgIlJlbmRlckxheWVyLmgiCkBAIC0xODgsNCArMTg4LDQgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvcklPUzo6ZGV0ZXJtaW5lU2Nyb2xsYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9T
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Ny
b2xsVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCiAjaW1wb3J0
ICJJbnRSZWN0LmgiCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9y
bVNldENvbnRlbnRzU2l6ZQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBp
bnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2NvbnRlbnRzU2l6
ZS5oZWlnaHQoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50Vmlldygp
LCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFzc10gY2xhc3NOYW1lXSwgdywgaCk7ICAgICAgICAg
ICAgCiAjZWxzZQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3Vt
ZW50VmlldygpLCBOU1N0cmluZ0Zyb21DbGFzcyhbZG9jdW1lbnRWaWV3KCkgY2xhc3NdKSwgdywg
aCk7CkBAIC0zMTgsNCArMzE4LDQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9s
bE9yaWdpbgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxi
YXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxiYXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKIApA
QCAtNjYsNCArNjYsNCBAQCBwdWJsaWM6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsYmFyVGhlbWVJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgpAQCAtMTIwLDQgKzEyMCw0IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVJT1M6OnBh
aW50KFNjcm9sbGJhciYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU3lzdGVtTWVtb3J5SU9TLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU3lzdGVtTWVtb3J5SU9TLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeUlPUy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTeXN0ZW1NZW1vcnkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
aW50IHN5c3RlbU1lbW9yeUxldmVsKCkKIHsKLSNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogICAgIHJldHVybiAzNTsKICNlbHNl
CiAgICAgc3RhdGljIGludCBtZW1vcnlGcmVlTGV2ZWwgPSAtMTsKQEAgLTU2LDQgKzU2LDQgQEAg
aW50IHN5c3RlbU1lbW9yeUxldmVsKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIlRoZW1lQ29jb2EuaCIKIApAQCAt
MzgsNCArMzgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUlP
Uy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CkBAIC01MSw0ICs1MSw0IEBAIGJvb2wgVGhlbWVJT1M6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlv
bigKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcklPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiVGlsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CkBAIC04OCw0ICs4OCw0IEBAIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciYgdGlsZUNv
bnRyb2wKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtNTQsNCArNTQsNCBAQCBwcml2YXRlOgogV0VCQ09SRV9FWFBPUlQgVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKTsKIH0KIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlVzZXJBZ2VudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiU3lzdGVtVmVyc2lvbi5o
IgpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW5saW5lIE5TU3RyaW5nICpkZXZpY2VOYW1lRm9y
VXNlCiAgICAgfQogCiAgICAgTlNTdHJpbmcgKm5hbWUgPSBkZXZpY2VOYW1lKCk7Ci0jaWYgUExB
VEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkK
ICAgICBOU1VJbnRlZ2VyIGxvY2F0aW9uID0gW25hbWUgcmFuZ2VPZlN0cmluZzpAIiBTaW11bGF0
b3IiIG9wdGlvbnM6TlNCYWNrd2FyZHNTZWFyY2hdLmxvY2F0aW9uOwogICAgIGlmIChsb2NhdGlv
biAhPSBOU05vdEZvdW5kICYmIGxvY2F0aW9uID4gMCkKICAgICAgICAgcmV0dXJuIFtuYW1lIHN1
YnN0cmluZ1RvSW5kZXg6bG9jYXRpb25dOwpAQCAtOTksNCArOTksNCBAQCBTdHJpbmcgc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxlSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnVi
YmxlSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJWYWxpZGF0aW9uQnViYmxlLmgiCiAKQEAgLTE3Nyw0
ICsxNzcsNCBAQCB2b2lkIFZhbGlkYXRpb25CdWJibGU6OnNldEFuY2hvclJlY3QoY29uCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dEVudW1zLmgiCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJNb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgYm9vbCBo
YXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRNb2RlLmhhc01vZGUobW9kZSk7IH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xsZXIg
KnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwogICAgIFVJVmlld0NvbnRyb2xsZXIgKmZ1bGxz
Y3JlZW5WaWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0NvbnRyb2xsZXIuZ2V0
KCk7IH0KICAgICBXZWJBVlBsYXllckxheWVyVmlldyogcGxheWVyTGF5ZXJWaWV3KCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF5ZXJMYXllclZpZXcuZ2V0KCk7IH0KQEAgLTIxOSw1ICsyMTksNSBAQCBw
cm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lt
cG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAKICNpZiBI
QVZFKEFWS0lUKQpAQCAtMTQ1MCwxMSArMTQ1MCwxMSBAQCBib29sIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Ojppc1BsCiAKIGJvb2wgV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpICYmICFQTEFURk9STShX
QVRDSE9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpICYmICFQTEFU
Rk9STShXQVRDSE9TKQogICAgIHJldHVybiBbZ2V0QVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxl
ckNsYXNzKCkgaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkXTsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhB
VkUoQVZLSVQpCiAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9s
bGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxlci5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCkBAIC02MzcsNSArNjM3LDUgQEAgLSAodm9pZClk
ZWFsbG9jCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQmFja2dyb3VuZFRhc2tDb250
cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciA6IE5T
T2JqZWN0CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJCYWNrZ3JvdW5k
VGFza0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gV2ViQmFja2dy
b3VuZFRhc2tDb250cm9sbGVyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlTW90aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlv
bi5oPgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
ICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAogI2ltcG9ydCA8Q29yZU1vdGlvbi9Db3Jl
TW90aW9uLmg+CiAKQEAgLTU2LDQgKzU2LDQgQEAgY29uc3QgZmxvYXQga01vdGlvblVwZGF0ZUlu
dGVydmFsID0gMS4wZgogLSAoQk9PTCloZWFkaW5nQXZhaWxhYmxlOwogQGVuZAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5h
Z2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQ29yZU1vdGlvbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCiAjaW1wb3J0
ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50LmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZpbGUgdG8gV2ViRXZlbnRJT1MubW0gYWZ0ZXIg
d2UgdXBzdHJlYW0gdGhlIGlPUyBwb3J0IGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3Vh
cmQuCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0byBXZWJFdmVudElPUy5tbSBhZnRlciB3
ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlM
WSktZ3VhcmQuCiAjaWZuZGVmIFdlYkV2ZW50SU9TX2gKICNkZWZpbmUgV2ViRXZlbnRJT1NfaAog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBGSVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0byBXZWJFdmVudElPUy5t
bSBhZnRlciB3ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0o
SU9TKS1ndWFyZC4KKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRvIFdlYkV2ZW50SU9TLm1t
IGFmdGVyIHdlIHVwc3RyZWFtIHRoZSBpT1MgcG9ydCBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJ
T1NfRkFNSUxZKS1ndWFyZC4KIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJFdmVu
dC5oIgpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJLZXlFdmVudENvZGVzSU9TLmgiCiAjaW1wb3J0ICJXQUtB
cHBLaXRTdHVicy5oIgpAQCAtNTAzLDQgKzUwMyw0IEBAIC0gKGZsb2F0KWdlc3R1cmVSb3RhdGlv
bgogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8cGFsL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KQEAgLTEzOSw0ICsxMzksNCBAQCArICh2b2lkKWVuZEJhY2tncm91bmRU
YXNrCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCIKIApAQCAtMjIzLDcgKzIy
Myw3IEBAICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQKIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3Qo
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAgICBJbnRSZWN0IGNsaWVu
dFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKQEAgLTIz
OCw3ICsyMzgsNyBAQCAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SW5saW5lUmVjdChjCiAK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcigpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRh
aW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9y
KFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwpAQCAtMjU1LDcgKzI1NSw3IEBAICAgICAg
ICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SGFzVmlkZW8KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChpc1VJVGhy
ZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNj
cmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5M
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpXTsKQEAgLTI3Myw3ICsyNzMsNyBAQCAgICAgICAgICAgICAgICAgbV9pbnRlcmZh
Y2UtPnNldEhhc1ZpZGVvCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpk
aWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAg
ICAgfSk7CkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhp
dEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKICAgICB9
KTsKQEAgLTEwNDksNCArMTA0OSw0IEBAIC0gKHZvaWQpZGlkRmluaXNoRnVsbHNjcmVlbjooVmlk
ZW9GdWxsc2MKIAogI2VuZGlmIC8vICFIQVZFKEFWS0lUKQogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQ3Vyc29y
LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgpAQCAtMjc2LDQgKzI3Niw0IEBAIHZvaWQgV2lkZ2V0
OjpzZXRQbGF0Zm9ybVdpZGdldChOU1ZpZXcgKncKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDcgQEAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBGbG9hdGluZ1BvaW50RQogICAg
IHJldHVybiBmbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ7CiB9CiAKLSNpZiBQTEFURk9STShJT1Mp
ICYmIChDUFUoQVJNKSB8fCBDUFUoQVJNNjQpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IChDUFUoQVJNKSB8fCBDUFUoQVJNNjQpKQogCiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OkZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCkBA
IC03MSw2ICs3MSw2IEBAIHZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpwcm9wYWdhdGUK
ICAgICBmZXNldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOwogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgKENQVShBUk0pIHx8IENQVShBUk02NCkpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgKENQVShBUk0pIHx8IENQVShBUk02NCkpCiAKIGNs
YXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiB9OwogCi0jZWxzZSAvLyBub3Qg
UExBVEZPUk0oSU9TKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKKyNlbHNlIC8vIG5vdCBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKIAogY2xhc3Mg
RmxvYXRpbmdQb2ludEVudmlyb25tZW50IHsKIHB1YmxpYzoKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQm
IHNpbmdsZXRvbigpOwogfTsKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgKENQVShBUk0p
IHx8IENQVShBUk02NCkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgKENQVShB
Uk0pIHx8IENQVShBUk02NCkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtBcHBLaXRTdHVicy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLQXBwS2l0U3R1YnMubQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtBcHBL
aXRTdHVicy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogaWQgTlNBcHAgPSBuaWw7CiAKQEAgLTM3LDQgKzM3
LDQgQEAgKyAodm9pZClzZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6KEJPT0wpZgogfQogQGVuZAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS0NsaXBWaWV3Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtDbGlwVmlldy5t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S0NsaXBWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiV0FLQ2xpcFZpZXcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC03MSw0ICs3MSw0IEBAIC0gKENHUmVjdClkb2N1
bWVudFZpc2libGVSZWN0IAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLUmVzcG9uZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXQUtSZXNwb25k
ZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKQEAg
LTE2OCw0ICsxNjgsNCBAQCAtIChCT09MKXRyeVRvUGVyZm9ybTooU0VMKWFuQWN0aW9uIHdpdGg6
CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtTY3Jv
bGxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJX
QUtBcHBLaXRTdHVicy5oIgogI2ltcG9ydCAiV0FLQ2xpcFZpZXcuaCIKQEAgLTQzNiw0ICs0MzYs
NCBAQCAtICh2b2lkKV9hZGp1c3RTY3JvbGxlcnMKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0FLVmlld0lu
dGVybmFsLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJXQUtDbGlwVmlldy5oIgpA
QCAtNzc5LDQgKzc3OSw0IEBAIC0gKHZvaWQpX2FwcGVuZERlc2NyaXB0aW9uVG9TdHJpbmc6KE5T
TXUKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dp
bmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XQUtXaW5kb3cubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hl
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtNzI4LDQgKzcyOCw0IEBAIC0gKE5T
U3RyaW5nICopcmVjdXJzaXZlRGVzY3JpcHRpb24KIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9u
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKICNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2luY2x1ZGUgIldLQ29udGVu
dE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZVRocmVhZC5oIgpAQCAtMTA4LDQgKzEwOCw0IEBAIHZvaWQgV2ViVGhyZWFkUmVtb3ZlT2Jz
ZXJ2ZWRDb250ZW50TW9kaWYKICAgICBXZWJUaHJlYWRHZXRPYnNlcnZlZENvbnRlbnRNb2RpZmll
cnMoKS0+cmVtb3ZlKGFDb250ZW50TW9kaWZpZXIpOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0dyYXBoaWNzLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tH
cmFwaGljcy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgogI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTcxLDQgKzcxLDQgQEAgQ0dDb250ZXh0UmVmIFdLR2V0
Q3VycmVudEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVybiB0aHJlYWRDb250ZXh0LT5jdXJyZW50
Q0dDb250ZXh0OwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dL
VXRpbGl0aWVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS1V0aWxpdGllcy5jCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dLVXRpbGl0aWVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVdGlsaXRpZXMuaCIKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCkBAIC0xMjYsNCArMTI2LDQgQEAgV0tDbGFzc0luZm8gKldLR2V0Q2xhc3NJ
bmZvIChXS09iamVjdFJlZgogICAgIHJldHVybiBvYmplY3QtPmNsYXNzSW5mbzsKIH0KIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IldLVmlld1ByaXZhdGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldBS1dpbmRv
dy5oIgpAQCAtNzQ1LDQgKzc0NSw0IEBAIHZvaWQgV0tWaWV3U2V0QXV0b3Jlc2l6aW5nTWFzayAo
V0tWaWV3UmUKICAgICB2aWV3LT5hdXRvcmVzaXppbmdNYXNrID0gbWFzazsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDb21tb25WTS5oIgogI2ltcG9y
dCAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCkBAIC04OTAsNCArODkwLDQgQEAgYm9vbCBX
ZWJUaHJlYWROb3RDdXJyZW50KHZvaWQpCiAgICAgcmV0dXJuIHdlYlRocmVhZFN0YXJ0ZWQgJiYg
IXB0aHJlYWRfZXF1YWwod2ViVGhyZWFkLCBwdGhyZWFkX3NlbGYoKSk7CiB9CiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVu
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkUnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRSdW4uaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiV2Vi
Q29yZVRocmVhZEludGVybmFsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC0xODMsNCArMTgzLDQg
QEAgdm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUoKQogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWRSdW4uaCIKQEAgLTUxLDQgKzUxLDQgQEAgdm9pZCBJbml0V2Vi
Q29yZVRocmVhZFN5c3RlbUludGVyZmFjZSh2bwogICAgIGRpZEluaXQgPSB0cnVlOwogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApAQCAtNDUsNyArNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJ0ZlBhc3RlYm9hcmRU
eXBlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICByZXR1cm4gU3RyaW5nKGtVVFR5cGVSVEYpOwogI2Vsc2UKICAgICByZXR1cm4gU3RyaW5nKGxl
Z2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpOwpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgaW5saW5l
IFN0cmluZyBydGZQYXN0ZWJvYXJkVHlwZSgpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJ0ZmRQ
YXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBlRmxhdFJURkQpOwogI2Vsc2UKICAgICBy
ZXR1cm4gU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKTsKQEAgLTYzLDcgKzYzLDcg
QEAgc3RhdGljIGlubGluZSBTdHJpbmcgcnRmZFBhc3RlYm9hcmRUeXBlKAogCiBzdGF0aWMgaW5s
aW5lIFN0cmluZyBzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBlVGV4dCk7
CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSk7
CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1Bhc3RlYm9hcmRU
eXAKIAogc3RhdGljIGlubGluZSBTdHJpbmcgdXJsUGFzdGVib2FyZFR5cGUoKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBTdHJpbmco
a1VUVHlwZVVSTCk7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5VVJMUGFzdGVib2Fy
ZFR5cGUoKSk7CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHVybFBhc3Rl
Ym9hcmRUeXBlKCkKIAogc3RhdGljIGlubGluZSBTdHJpbmcgaHRtbFBhc3RlYm9hcmRUeXBlKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1
cm4gU3RyaW5nKGtVVFR5cGVIVE1MKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZyhsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSk7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgU3Ry
aW5nIGh0bWxQYXN0ZWJvYXJkVHlwZSgKIAogc3RhdGljIGlubGluZSBTdHJpbmcgY29sb3JQYXN0
ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcmV0dXJuIFN0cmluZyB7IFVJQ29sb3JQYm9hcmRUeXBlIH07CiAjZWxzZQogICAg
IHJldHVybiBTdHJpbmcobGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpKTsKQEAgLTk5LDcgKzk5
LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY29sb3JQYXN0ZWJvYXJkVHlwZQogCiBzdGF0aWMg
aW5saW5lIFN0cmluZyBwZGZQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBlUERGKTsK
ICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZyhsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpKTsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBwZGZQYXN0ZWJvYXJkVHlwZSgp
CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhr
VVRUeXBlVElGRik7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9h
cmRUeXBlKCkpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUHJv
bWlzZSgpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0oZmlsZW5hbWVQb2xpY3kp
OwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNv
ZnRMaW5rLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw2
IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIAogI2VuZGlmIC8v
IFVTRShNRURJQVJFTU9URSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1v
dGUsIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMsIENGQXJyYXlSZWYsICgpLCAoKSk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNv
ZnRMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlh
UmVtb3RlU29mdExpbmsuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyAr
NzMsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNCiAKICNlbmRp
ZiAvLyBVU0UoTUVESUFSRU1PVEUpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlh
UmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVmLCAoKSwg
KCkpCiAjZGVmaW5lIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMgc29mdExpbmtfTWVk
aWFSZW1vdGVfTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3VkZGVuVGVy
bWluYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiU3VkZGVuVGVybWluYXRpb24uaCIKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNCArMTA4LDQgQEAgLSAodm9pZCltb3VzZURv
d246KE5TRXZlbnQgKilldmVudAogCiBAZW5kCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZm5kZWYgV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlld19oCiAjZGVmaW5lIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXdf
aApAQCAtNDMsNCArNDMsNCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlICBXZWJDb3JlRnVs
bFNjCiAKICNlbmRpZiAvLyBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gKIAotI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIldl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCIKIApAQCAtMTA2LDQgKzEwNiw0IEBAIC0gKGlk
KWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0aXRsZQogfQogQGVuZAogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRv
dy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvd19oCiAjZGVmaW5lIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93X2gKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElP
UykKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93IDogTlNX
aW5kb3cKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
TlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJp
bmdFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGVudW0gewogICAgIE5TQXR0
YWNobWVudENoYXJhY3RlciA9IDB4ZmZmYyAgICAvKiBUbyBkZW5vdGUgYXR0YWNobWVudHMuICov
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZUZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6
CiB9OwogCiBjbGFzcyBBdWRpb0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgOiBwdWJsaWMgU2luZ2xlU291cmNlRmFjdG9yeQog
I2VuZGlmCiB7CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIH07CiAKIGNsYXNzIFZpZGVv
Q2FwdHVyZUZhY3RvcnkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICA6IHB1YmxpYyBTaW5nbGVTb3VyY2VGYWN0b3J5CiAjZW5kaWYKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBSZWFsdGltZVZpZGVvU291cmNlOjpSZWFsdGltZVZpZGVvU291
cmNlCiAKIFJlYWx0aW1lVmlkZW9Tb3VyY2U6On5SZWFsdGltZVZpZGVvU291cmNlKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFjdGl2ZVNv
dXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZWFsdGltZVZp
ZGVvU291cmNlOjpwcmVwYXJlVG9Qcm9kdQogewogICAgIEFTU0VSVChmcmFtZVJhdGUoKSk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS5zZXRBY3RpdmVT
b3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDQgKzQ3LDQgQEAgcHJpdmF0ZToKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2UuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBM
QVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CiAKQEAgLTQ5
LDQgKzQ5LDQgQEAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlOjpBVkF1ZGlvU2VzcwogCiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjMsNCArNjMsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9B
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2VJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNs
dWRlICJDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgiCiAKQEAgLTQ0LDQgKzQ0LDQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb3Jl
QXVkaW9DYXB0dXJlU291cmNlSU9TLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShJT1MpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVk
aW9TZXNzaW9uLmg+CkBAIC0xNDEsNCArMTQxLDQgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZh
Y3RvcnkmIENvcmVBdWRpbwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWFjcm9zLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNYWNyb3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
CiAjaWYgVVNFKExJQldFQlJUQykKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2RlZmluZSBXRUJSVENfSU9TCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5lIHN0YXRpYyBib29sIGRldmlj
ZUlzQXZhaWxhYmxlKEFWQwogICAgIGlmICghW2RldmljZSBpc0Nvbm5lY3RlZF0pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKFtkZXZpY2UgaXNTdXNwZW5kZWRdIHx8IFtkZXZpY2UgaXNJblVzZUJ5
QW5vdGhlckFwcGxpY2F0aW9uXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVT
b3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYQogI2RlZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFWTWVkaWFU
eXBlTXV4ZWQoKQogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8o
KQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJ
TktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1l
RXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwg
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAq
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIC0odm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnM7CiAt
KHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOwogLSh2b2lkKWNhcHR1cmVPdXRwdXQ6
KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVy
OihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVy
ZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uOwogLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFu
Z2UgY29udGV4dDoodm9pZCopY29udGV4dDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0odm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlv
biopbm90aWZpY2F0aW9uOwogLSh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlm
aWNhdGlvbiopbm90aWZpY2F0aW9uOwogLSh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKQEAgLTE0MCw3ICsxNDAsNyBAQCBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9w
dE5TKFtbV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRo
Q2FsbGJhY2s6dGhpc10pKQogICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3Vu
ZCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29u
VmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9uUmVhc29u
OjpWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRl
cnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBhcyBleHBl
Y3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25S
ZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbklu
dGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdy
b3VuZEFwcHMsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lk
ZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90
QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0lu
VXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVz
ZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBpcyBub3Qg
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3Ro
ZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEFWTWVkaWFD
YXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nCiAgICAgICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5p
bmddOwogCiAgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmU7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9zZXNzaW9u
ID0gbnVsbHB0cjsKICNlbmRpZgogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW8KICAgICB9KTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6
Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yKQogewog
ICAgIGlmICghbV9pc1J1bm5pbmcgfHwgZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9yTWVkaWFT
ZXJ2aWNlc1dlcmVSZXNldCkKQEAgLTM1NSw3ICszNTUsNyBAQCAtICh2b2lkKWRpc2Nvbm5lY3QK
IAogLSAodm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9jYWxsYmFjayk7CiAKICAg
ICBOU05vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdOwpAQCAtMzY5LDcgKzM2OSw3IEBAIC0gKHZvaWQpYWRkTm90aWZpY2F0aW9u
T2JzZXJ2ZXJzCiAKIC0gKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRpZgog
fQpAQCAtNDA3LDcgKzQwNyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQ
YXRoIG8KICAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFu
Z2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5TTm90aWZp
Y2F0aW9uKilub3RpZmljYXRpb24KIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5vdGlmaWNhdGlv
bi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXldOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03OCw3ICs3OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVMKIAogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRl
bywgTlNTdHJpbmcgKikKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVT
ZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BP
SU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0
ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKQEAgLTEwNSw3ICsxMDUsNyBAQCAtKHZvaWQpYWRkTm90aWZpY2F0aW9u
T2JzZXJ2ZXJzOwogLSh2b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyczsKIC0odm9pZClj
YXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1
dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0
aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29ubmVjdGlvbjsKIC0odm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGlj
dGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtKHZvaWQpc2Vzc2lvblJ1bnRpbWVFcnJvcjoo
TlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCliZWdpblNlc3Npb25JbnRlcnJ1
cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCllbmRTZXNzaW9uSW50
ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CkBAIC0xNzEsNyArMTcxLDcg
QEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cgogICAgICwgbV9vYmpj
T2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFs
bG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93
ZWRJbkJhY2tncm91bmQpID09IHN0YXRpY19jYXN0PGludD4oQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kKSwgIkludGVy
cnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kIGlzIG5vdCBBVkNhcHR1
cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tn
cm91bmQgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4o
SW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUpID09IEFWQ2Fw
dHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZVdpdGhN
dWx0aXBsZUZvcmVncm91bmRBcHBzLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93
ZWRJblNpZGVCeVNpZGUgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25W
aWRlb0RldmljZU5vdEF2YWlsYWJsZVdpdGhNdWx0aXBsZUZvcmVncm91bmRBcHBzIGFzIGV4cGVj
dGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJl
YXNvbjo6VmlkZW9JblVzZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZp
ZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVv
SW5Vc2UgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0Rldmlj
ZUluVXNlQnlBbm90aGVyQ2xpZW50IGFzIGV4cGVjdGVkIik7CkBAIC0xODEsNyArMTgxLDcgQEAg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cgogCiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5k
aWYKICAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlzY29ubmVjdF07CkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZwogICAgICAgICBbbV9zZXNz
aW9uIHN0b3BSdW5uaW5nXTsKIAogICAgIG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVh
c29uOjpOb25lOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAjZW5kaWYKIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBBCiAKIGJvb2wgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnByZWZlcnNQcmVzZXQoVmlkZW9QcmVzZXQmIHByZXNldCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gW3N0YXRp
Y19jYXN0PEFWVmlkZW9QcmVzZXQqPigmcHJlc2V0KS0+Zm9ybWF0LmdldCgpIGlzVmlkZW9CaW5u
ZWRdOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJlc2V0KTsKQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5kRnJhCiAKIHN0YXRpYyBpbmxp
bmUgaW50IHNlbnNvck9yaWVudGF0aW9uKEFWQ2FwdHVyZVZpZGVvT3JpZW50YXRpb24gdmlkZW9P
cmllbnRhdGlvbikKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzd2l0Y2ggKHZpZGVvT3JpZW50YXRpb24pIHsKICAgICBjYXNlIEFWQ2FwdHVyZVZp
ZGVvT3JpZW50YXRpb25Qb3J0cmFpdDoKICAgICAgICAgcmV0dXJuIDE4MDsKQEAgLTQzMiw3ICs0
MzIsNyBAQCBBVkZyYW1lUmF0ZVJhbmdlVHlwZSogQVZWaWRlb0NhcHR1cmVTb3VyCiAKIGJvb2wg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNpbmdsZXRvbigpLnZpZGVvRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhp
cyk7CiAjZW5kaWYKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnNodXRkb3duQ2FwdHUKIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6bW9uaXRvck9y
aWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImIG5vdGlmaWVyKQogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG5vdGlmaWVyLmFkZE9ic2VydmVy
KCp0aGlzKTsKICAgICBvcmllbnRhdGlvbkNoYW5nZWQobm90aWZpZXIub3JpZW50YXRpb24oKSk7
CiAjZWxzZQpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6Omdl
bmVyYXRlUHJlc2UKICAgICBzZXRTdXBwb3J0ZWRQcmVzZXRzKFdURk1vdmUocHJlc2V0cykpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8
TlNFcnJvcj4gZXJyb3IpCiB7CiAgICAgaWYgKCFtX2lzUnVubmluZyB8fCBlcnJvci5nZXQoKS5j
b2RlICE9IEFWRXJyb3JNZWRpYVNlcnZpY2VzV2VyZVJlc2V0KQpAQCAtNjU5LDcgKzY1OSw3IEBA
IC0gKHZvaWQpZGlzY29ubmVjdAogCiAtICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2VydmVycwog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VS
VChtX2NhbGxiYWNrKTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIgPSBbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CkBAIC02NzMsNyArNjczLDcgQEAgLSAo
dm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKIAogLSAodm9pZClyZW1vdmVOb3RpZmljYXRp
b25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOnNlbGZdOwogI2VuZGlmCiB9CkBAIC03MTEsNyArNzExLDcgQEAgLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vz
c2lvbklzUnVubmluZ0RpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2Vzc2lvblJ1
bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewogICAgIE5TRXJyb3Ig
KmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25FcnJvcktleV07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlv
VHJhY2tQcml2YXRlCiAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSByZW1vdGVJT1VuaXQgeyBu
dWxscHRyIH07CiAKICAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGlvVW5pdERlc2NyaXB0
aW9uIHsga0F1ZGlvVW5pdFR5cGVfT3V0cHV0LCAwLCBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0Fw
cGxlLCAwLCAwIH07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJU
eXBlX1JlbW90ZUlPOwogI2Vsc2UKICAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21wb25lbnRTdWJU
eXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRlCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFVJbnQzMiBwYXJhbSA9IDE7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJv
cGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtB
dWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAgaWYg
KGVycikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcg
QEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpbwogICAgICAgICB9CiAg
ICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dWludDMyX3QgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9V
bml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9J
bnB1dCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAgaWYgKGVycikgewpA
QCAtNzAyLDcgKzcwMiw3IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIENvcmVBdWRpb0NhcHR1cmVT
b3UKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5l
dyBDb3JlQXVkaW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBTdHJpbmcgeyBkZXZp
Y2UtPmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIGRldmljZS0+ZGV2aWNlSUQoKSkpOwot
I2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRv
IGRldmljZSA9IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmF1ZGlvU2Vzc2lvbkRldmljZVdpdGhVSUQoV1RGTW92ZShkZXZpY2VJRCkpOwogICAgIGlmICgh
ZGV2aWNlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNzg3LDcgKzc4Nyw3IEBAIENvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OkNvcmVBdWRpb0NhcHR1cmUKIAogICAgIHVuaXQuYWRkQ2xpZW50KCp0
aGlzKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFdlIGVuc3VyZSB0aGF0IHdlIHVuc3VzcGVuZCBvdXJzZWx2ZXMgb24gdGhlIGNvbnN0cnVj
dG9yIGFzIGEgY2FwdHVyZSBzb3VyY2UKICAgICAvLyBpcyBjcmVhdGVkIHdoZW4gZ2V0VXNlck1l
ZGlhIGdyYW50cyBhY2Nlc3Mgd2hpY2ggb25seSBoYXBwZW5zIHdoZW4gdGhlIHByb2Nlc3MgaXMg
Zm9yZWdyb3VuZGVkLgogICAgIGlmICh1bml0LmlzU3VzcGVuZGVkKCkpCkBAIC03OTcsNyArNzk3
LDcgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZQogCiBDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjp+Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSgpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZUZhY3Rvcnk6OnNpbmdsZXRvbigpLnVuc2V0Q29yZUF1ZGlvQWN0aXZlU291cmNlKCp0aGlz
KTsKICNlbmRpZgogCkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpyZW1vdmVFY2hvQwogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OnNpbmdsZXRvbigpLnNldENv
cmVBdWRpb0FjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kSW50ZXJydXB0
aW9uKCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDb3JlQXVkaW9B
Y3RpdmVTb3VyY2UoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgc291cmNlKSB7IHNldEFjdGl2ZVNv
dXJjZShzb3VyY2UpOyB9CiAgICAgdm9pZCB1bnNldENvcmVBdWRpb0FjdGl2ZVNvdXJjZShDb3Jl
QXVkaW9DYXB0dXJlU291cmNlJiBzb3VyY2UpIHsgdW5zZXRBY3RpdmVTb3VyY2Uoc291cmNlKTsg
fQogICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UqIGNvcmVBdWRpb0FjdGl2ZVNvdXJjZSgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvcmVBdWRpb0NhcHR1cmVTb3VyY2UqPihhY3RpdmVTb3VyY2Uo
KSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyAr
NjAsNyBAQCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5Q2FwdHVyCiAKIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6On5EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFjdGl2ZVNv
dXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzCiAKIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0
b24oKS52aWRlb0ZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDcgKzEwMSw3IEBAIENWUGl4ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5jb21pbmdW
aWQKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySGVpZ2h0
S2V5OiBAKGhlaWdodCksCiAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3JtYXQpLAogICAgICAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJp
bGl0eUtleTogQChOTyksCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEZvcm1hdE9wZW5H
TEVTQ29tcGF0aWJpbGl0eSA6IEAoWUVTKSwKICNlbHNlCiAgICAgICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlck9wZW5HTENvbXBhdGliaWxpdHlLZXkgOiBAKFlFUyks
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OmNyZWF0ZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgV1RGTW92ZShoYXNoU2Fs
dCksIGNvbnN0cmFpbnRzKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0NhcHR1cmVQYWdlU3Rh
dGUoYm9vbCBpbnRlcnJ1cHRlZCwgYm9vbCBwYWdlTXV0ZWQpCiAgICAgewpAQCAtNjksNyArNjks
NyBAQCBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluCiBwdWJsaWM6CiAg
ICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3Qg
Q2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50
cykgZmluYWwKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwogICAgICAgICBVTlVTRURfUEFSQU0o
Y29uc3RyYWludHMpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIgogCi0jaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw0ICs2Myw0IEBAIGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrKiB0b01lZGlhUGwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9ja19o
CiAjZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrX2gKIAotI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJN
ZWRpYVBsYXliYWNrVGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaCIKQEAgLTYzLDYgKzYzLDYgQEAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRv
TWVkaWFQbAogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2suY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgiCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTIyLDQgKzEyMiw0IEBAIHZvaWQgTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9ja19oCiAjZGVmaW5lIE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrX2gKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKQEAg
LTYyLDYgKzYyLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShJT1MpICYmICEoVVNFKEdTVFJFQU1FUikgJiYgVVNFKExJQldFQlJUQykp
CisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICEoVVNFKEdT
VFJFQU1FUikgJiYgVVNFKExJQldFQlJUQykpCiBDYXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1l
LCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMp
CiB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNzEsNyArNzEsNyBAQCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6TW9ja1JlYWx0aW1lQXVkCiAKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmF1
ZGlvRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogfQpAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnNldHRpbmdzRGkKIAog
dm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0ZhY3RvcnkoKS5zZXRBY3RpdmVTb3Vy
Y2UoKnRoaXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwo
KSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgY29uc3RyYWludHMpOwogICAgIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogcHJpdmF0ZToKICAgICB2b2lkIHNl
dFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sIGludGVycnVwdGVkLCBib29sIHBhZ2VNdXRlZCkK
ICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
IVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgIShVU0UoR1NUUkVBTUVSKSAmJiBV
U0UoTElCV0VCUlRDKSkKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIShVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTElCV0VCUlRDKSkKIENhcHR1cmVTb3VyY2VP
ckVycm9yIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQs
IFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
KiBjb25zdHJhaW50cykKIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJVUkwuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQu
aCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdGF0ZU5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSAiVGltZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogT0JKQ19DTEFTUyBXZWJOZXR3b3JrU3RhdGVPYnNlcnZlcjsKICNlbmRpZgogCkBA
IC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4+IG1fbGlzdGVuZXJzOwogICAgIFRpbWVyIG1fdXBkYXRlU3RhdGVUaW1lcjsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxX
ZWJOZXR3b3JrU3RhdGVPYnNlcnZlcj4gbV9vYnNlcnZlcjsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkRm9yY2VDb250ZW50U25pZmZpbmc7CiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpbkNvbnN0cnVjdG9yPiBCdWlsdGluUmVzb3VyY2VI
YW5kbGVDb25zdHJ1Y3Rvck1hcDsKIHN0YXRpYyBCdWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1
Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChXZWJUaHJl
YWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwg
Ym9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVj
dGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHBhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC05Myw3
ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogCi0jaWYgUExBVEZP
Uk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIHsgcmV0dXJuIG51
bGxwdHI7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiBkb3VibGUgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6c19kZWZhdWx0VGltZW91dEludGVydmFsID0gSU5UX01BWDsKICNlbHNlCiAv
LyBXaWxsIHVzZSBOU1VSTFJlcXVlc3QgZGVmYXVsdCB0aW1lb3V0IHVubGVzcyBzZXQgdG8gYSBu
b24temVybyB2YWx1ZSB3aXRoIHNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDcgKzI3Niw3
IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXEKIGlubGluZSBib29s
IG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBpbml0aWFs
aXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxp
emVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKFdJTikg
fHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94
eVNlcnZlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKFdJTikKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYs
NyArMTY2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogCiAg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3NsUHJvcHMgPSBhZG9w
dENGKFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChm
aXJzdFJlcXVlc3QoKSkpOwogI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0
ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpLnRvU3RyaW5nKCkp
KSB7CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxD
b25uZWN0aQogICAgICAgICB3a1NldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKHNz
bFByb3BzLmdldCgpLCAoY2xpZW50Q2VydC0+dmFsdWUpLmdldCgpKTsKICNlbmRpZgogICAgIH0K
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGll
cyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgYm9vbCBS
ZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
dHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJ
VChDRlVSTCk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBO
ZXR3b3JraW5nQ29udGV4dCBwcm9wZXJ0eS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW5h
YmxlZCA9IHRydWU7CiAjZWxzZQogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5p
bmdFbmFibGVkID0gZmFsc2U7CkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIGlubGluZSBSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeQogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
CiBzdGF0aWMgQ0ZVUkxSZWYgc2l0ZUZvckNvb2tpZXMoUmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0
ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBDRlVSTFJlZiB1cmwpCiB7CiAgICAgc3dpdGNoIChk
aXNwb3NpdGlvbikgewpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtUmUKIAogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBD
b29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDAKICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RS
KCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNv
b2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKIAogICAgIGludCBpc1Rv
cFNpdGUgPSBtX2lzVG9wU2l0ZTsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJs
ZWQoKSkKICAgICAgICAgbV9wcmlvcml0eSA9IHRvUmVzb3VyY2VMb2FkUHJpb3JpdHkoQ0ZVUkxS
ZXF1ZXN0R2V0UmVxdWVzdFByaW9yaXR5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc2l0ZUZvckNvb2tpZXMgPSBh
ZG9wdENGKGNoZWNrZWRfY2ZfY2FzdDxDRlVSTFJlZj4oX0NGVVJMUmVxdWVzdENvcHlQcm90b2Nv
bFByb3BlcnR5Rm9yS2V5KG1fY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tDRkhUVFBDb29raWVQ
b2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIikpKSk7CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0
aW9uID0gIXNpdGVGb3JDb29raWVzID8gU2FtZVNpdGVEaXNwb3NpdGlvbjo6VW5zcGVjaWZpZWQg
OiAocmVnaXN0cmFibGVEb21haW5zQXJlRXF1YWwoc2l0ZUZvckNvb2tpZXMuZ2V0KCksIG1fdXJs
KSA/IFNhbWVTaXRlRGlzcG9zaXRpb246OlNhbWVTaXRlIDogU2FtZVNpdGVEaXNwb3NpdGlvbjo6
Q3Jvc3NTaXRlKTsKIApAQCAtNDIxLDcgKzQyMSw3IEBAIHVuc2lnbmVkIGluaXRpYWxpemVNYXhp
bXVtSFRUUENvbm5lY3Rpb24KICAgICByZXR1cm4gdW5saW1pdGVkUmVxdWVzdENvdW50OwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIGluaXRp
YWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCkKIHsKICAgICAvLyBUaGlzIG5l
ZWQgdG8gYmUgY2FsbGVkIGZyb20gV2ViS2l0SW5pdGlhbGl6ZSBzbyB0aGUgY2FsbHMgaGFwcGVu
IGVhcmx5IGVub3VnaCwgYmVmb3JlIGFueSByZXF1ZXN0cyBhcmUgbWFkZS4gPHJkYXI6Ly9wcm9i
bGVtLzk2OTE4NzE+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1
MywxMSBAQAogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IFBMQVRGT1JNKE1BQykKIGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFt
UHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbjsKIGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYg
X2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7CiAjZW5kaWYKQEAgLTc5LDcgKzc5LDcgQEAgc3Rh
dGljIGlubGluZSBDRlJ1bkxvb3BSZWYgY2FsbGJhY2tzUnVuTAogewogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2Vs
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gV2ViVGhyZWFkUnVuTG9vcCgpOwog
I2Vsc2UKICAgICByZXR1cm4gQ0ZSdW5Mb29wR2V0TWFpbigpOwpAQCAtNDk2LDcgKzQ5Niw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW0KICAgICB9KTsKIH0KIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgdm9p
ZCBzZXRSZXNwb25zZVByb3h5VVJMKENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZSwgQ0ZVUkxSZWYg
cHJveHlVUkwpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtNTE1LDcgKzUxNSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gY29weUMKICAgICAvLyBUaGlzIGlzIHNldCBi
eSBDRk5ldHdvcmsgaW50ZXJuYWxseSBmb3Igbm9ybWFsIEhUVFAgcmVzcG9uc2VzLCBidXQgbm90
IGZvciBwcm94aWVzLgogICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwobWVzc2FnZS5n
ZXQoKSwgcmVzcG9uc2VVUkwpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBEaXR0byBmb3IgcHJveHkgVVJMLgogICAgIGF1dG8gcHJveHlV
UkxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdChrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxscHRyLCBDRlNUUigiaHR0cHM6Ly8lQDolQCIpLCBwcm94eUhvc3QsIHByb3h5
UG9ydCkpOwogICAgIGF1dG8gcHJveHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eVVSTFN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nv
b2tpZUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAvLyBGSVhNRTogUmVtb3ZlIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOL0VORCBhbmQg
YWxsIF9OdWxsYWJsZSBhbm5vdGF0aW9ucyBvbmNlIHdlIHJlbW92ZSB0aGUgTlNIVFRQQ29va2ll
IGZvcndhcmQgZGVjbGFyYXRpb24gYmVsb3cuCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCi0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxNTAwKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAwMCkKKyNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE1MDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAwMCkKIHR5cGVkZWYgTlNTdHJp
bmcgKiBOU0hUVFBDb29raWVTdHJpbmdQb2xpY3k7CiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZSAo
U3RhZ2luZykKIEBwcm9wZXJ0eSAobnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU0hUVFBDb29r
aWVTdHJpbmdQb2xpY3kgc2FtZVNpdGVQb2xpY3k7CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyBk
b3VibGUgY29va2llQ3JlYXRlZChOU0hUVFBDb29raWUKICAgICByZXR1cm4gMDsKIH0KIAotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiBzdGF0aWMgQ29va2llOjpTYW1l
U2l0ZVBvbGljeSBjb3JlU2FtZVNpdGVQb2xpY3koTlNIVFRQQ29va2llU3RyaW5nUG9saWN5IF9O
dWxsYWJsZSBwb2xpY3kpCiB7CiAgICAgaWYgKCFwb2xpY3kpCkBAIC0xMjgsNyArMTI4LDcgQEAg
Q29va2llOjpDb29raWUoTlNIVFRQQ29va2llICpjb29raWUpCiAgICAgLCBjb21tZW50VVJMIHsg
Y29va2llLmNvbW1lbnRVUkwgfQogICAgICwgcG9ydHMgeyBwb3J0VmVjdG9yRnJvbUxpc3QoY29v
a2llLnBvcnRMaXN0KSB9CiB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MCkKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgaWYgKFtjb29r
aWUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzYW1lU2l0ZVBvbGljeSldKQogICAgICAg
ICBzYW1lU2l0ZSA9IGNvcmVTYW1lU2l0ZVBvbGljeShjb29raWUuc2FtZVNpdGVQb2xpY3kpOwpA
QCAtMTY2LDcgKzE2Niw3IEBAIENvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICogX051bGxh
YmwKICAgICBpZiAobWF4QWdlID4gMCkKICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWYiLCBtYXhBZ2VdIGZvcktleTpOU0hUVFBDb29r
aWVNYXhpbXVtQWdlXTsKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAp
CiAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmNy
ZWF0ZWQgLyAxMDAwLjAgLSBOU1RpbWVJbnRlcnZhbFNpbmNlMTk3MF0gZm9yS2V5OkAiQ3JlYXRl
ZCJdOwogI2VuZGlmCiAKQEAgLTE4Myw3ICsxODMsNyBAQCBDb29raWU6Om9wZXJhdG9yIE5TSFRU
UENvb2tpZSAqIF9OdWxsYWJsCiAgICAgaWYgKGh0dHBPbmx5KQogICAgICAgICBbcHJvcGVydGll
cyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwogCi0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICBpZiAoYXV0byogc2FtZVNpdGVQb2xpY3kgPSBu
c1NhbWVTaXRlUG9saWN5KHNhbWVTaXRlKSkKICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0
OnNhbWVTaXRlUG9saWN5IGZvcktleTpAIlNhbWVTaXRlIl07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBAaW50ZXJmYWNlIE5TVVJM
ICgpCiAtIChDRlVSTFJlZilfY2Z1cmw7CiBAZW5kCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKQogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlIChTdGFnaW5n
KQogLSAodm9pZClfZ2V0Q29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJM
OihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwYXJ0aXRpb246KE5TU3RyaW5nICopcGFydGl0aW9u
IHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSopcHJvcHMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TQXJyYXkgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9zZXRDb29r
aWVzOihOU0FycmF5ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVS
TDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgcG9saWN5UHJvcGVydGllczooTlNEaWN0aW9uYXJ5
KikgcHJvcHM7CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tp
ZShDRkhUVFBDb29raQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUoY29va2ll
U3RvcmFnZSwgW2Nvb2tpZSBfR2V0SW50ZXJuYWxDRkhUVFBDb29raWVdKTsKIH0KIAotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiBzdGF0aWMgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gcG9saWN5UHJvcGVydGllcyhjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgTlNVUkwgKnVybCkKIHsKICAgICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgTlNB
cnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29rCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0
ciA9IHJldGFpblB0cihjb29raWVzKTsKICAgICB9OwotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9T
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApCiAgICAgaWYgKFtzdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2dldENvb2tpZXNGb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBhcnRpdGlvbjpwb2xpY3lQ
cm9wZXJ0aWVzOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBbc3RvcmFnZSBfZ2V0Q29v
a2llc0ZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwYXJ0aXRpb246
cGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6c2FtZVNpdGVJbmZvID8gcG9saWN5UHJvcGVydGll
cyhzYW1lU2l0ZUluZm8udmFsdWUoKSwgdXJsKS5nZXQoKSA6IG51bGxwdHIgY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKQEAgLTIyMyw3ICsyMjMsNyBAQCBz
dGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiB7CiAgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OwogICAgIGlmICghY29va2llU3RvcmFnZSkgewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNS
ZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVu
dFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQogICAgICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9y
YWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBfc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1
cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVzOnBvbGlj
eVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLCB1cmwpLmdldCgpXTsKICAgICAgICAgZWxzZQpAQCAt
MjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMK
ICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFn
ZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1
bWVudFVSTF07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEyMDAwMCkKICAgICBpZiAoW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2Vz
UmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1l
bnRVUkw6cG9saWN5UHJvcGVydGllczopXSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcCBjcmVh
dGluZyBhIG5ldyBOU0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBlYWNoIHRpbWUgd2Ugd2FudCB0
byBxdWVyeSB0aGUgY29va2llIGphci4KICAgICAgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4K
QEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhU
VFBDCiAjZW5kaWYKICAgICAgICAgYXV0byBjZkNvb2tpZXMgPSBhZG9wdENGKFtOU0hUVFBDb29r
aWUgX25zMmNmQ29va2llczpjb29raWVzXSk7CiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VT
ZXRDb29raWVzKGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llcy5nZXQoKSwgW3VybCBfY2Z1cmxdLCBb
bWFpbkRvY3VtZW50VVJMIF9jZnVybF0pOwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDApCiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtZVNpdGVJbmZvKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBbbV9uc1JlcXVlc3Qu
Z2V0KCkgdGltZW91dEludGVydmFsXTsKICAgICBtX2ZpcnN0UGFydHlGb3JDb29raWVzID0gW21f
bnNSZXF1ZXN0LmdldCgpIG1haW5Eb2N1bWVudFVSTF07CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIFVSTCBzaXRlRm9yQ29va2llcyB7IFttX25zUmVxdWVz
dC5nZXQoKSBfcHJvcGVydHlGb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0
ZUZvckNvb2tpZXMiXSB9OwogICAgIG1fc2FtZVNpdGVEaXNwb3NpdGlvbiA9IHNpdGVGb3JDb29r
aWVzLmlzTnVsbCgpID8gU2FtZVNpdGVEaXNwb3NpdGlvbjo6VW5zcGVjaWZpZWQgOiAocmVnaXN0
cmFibGVEb21haW5zQXJlRXF1YWwoc2l0ZUZvckNvb2tpZXMsIG1fdXJsKSA/IFNhbWVTaXRlRGlz
cG9zaXRpb246OlNhbWVTaXRlIDogU2FtZVNpdGVEaXNwb3NpdGlvbjo6Q3Jvc3NTaXRlKTsKIApA
QCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNl
SFQKICAgICB9CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQog
c3RhdGljIE5TVVJMICpzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlz
cG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMICp1cmwpCiB7CiAgICAgc3dpdGNoIChkaXNwb3Np
dGlvbikgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmUKICAgICAgICAgW25zUmVxdWVzdCBzZXRIVFRQTWV0aG9kOmh0dHBNZXRob2Qo
KV07CiAgICAgW25zUmVxdWVzdCBzZXRIVFRQU2hvdWxkSGFuZGxlQ29va2llczphbGxvd0Nvb2tp
ZXMoKV07CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIFtu
c1JlcXVlc3QgX3NldFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3NpdGlv
biwgbnNSZXF1ZXN0LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNp
dGVGb3JDb29raWVzIl07CiAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1faXNUb3BTaXRlXSBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVBy
b3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlVGhyZWFkUnVuLmgiCkBAIC05Miw0ICs5Miw0IEBAIHZvaWQgTmV0d29ya1N0YXRlTm90
aWZpZXI6OnN0YXJ0T2JzZXJ2aW4KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJD
b3JlVVJMUmVzcG9uc2VJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmZGVmIF9fT0JKQ19fCiAjaW5jbHVkZSAi
V2ViQ29yZVVSTFJlc3BvbnNlLmgiCkBAIC02MSw0ICs2MSw0IEBAIGlubGluZSBib29sIHNob3Vs
ZFVzZVF1aWNrTG9va0Zvck1JTUVUeXAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUXVpY2tMb29rLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKQEAgLTc3LDQgKzc3LDQgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KENGVVJMUmVzcAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBA
aW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6
ZWREZXNjcmlwdGlvbjsKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAvLyBUaGlzIHdvcmthcm91bmQgY29kZSBleGlzdHMgaGVyZSBiZWNhdXNl
IHdlIGNhbid0IGNhbGwgdHJhbnNsYXRlVG9DRkVycm9yIGluIEZvdW5kYXRpb24uIE9uY2Ugd2UK
IC8vIGhhdmUgdGhhdCwgd2UgY2FuIHJlbW92ZSB0aGlzIGNvZGUuIDxyZGFyOi8vcHJvYmxlbS85
ODM3NDE1PiBOZWVkIFNQSSBmb3IgdHJhbnNsYXRlQ0ZFcnJvcgpAQCAtODksNyArODksNyBAQCAt
ICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogI2ltcG9ydCA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2VuZGlmCkBAIC05NSw3
ICs5NSw3IEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQogICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIGRlc3Ryb3llZCIsIHRoaXMpOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBib29sIHN5bmNocm9ub3VzV2ls
bFNlbmRSZXF1ZXN0RW5hYmxlZCgpCiB7CkBAIC0xMzIsNyArMTMyLDcgQEAgTlNVUkxSZXF1ZXN0
ICpSZXNvdXJjZUhhbmRsZTo6YXBwbHlTbmlmZgogCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVh
dGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yKQogI2Vsc2UKIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJv
b2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVs
aW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpCkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aQogCiAg
ICAgQVNTRVJUKFtOU1VSTENvbm5lY3Rpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNl
bGVjdG9yKF9pbml0V2l0aFJlcXVlc3Q6ZGVsZWdhdGU6dXNlc0NhY2hlOm1heENvbnRlbnRMZW5n
dGg6c3RhcnRJbW1lZGlhdGVseTpjb25uZWN0aW9uUHJvcGVydGllczopXSk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
IGluIHRoYXQgaGVyZSB3ZSByZXNwZWN0IHN0cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmVz
ZW50IGluIGNsaWVudCBwcm9wZXJ0aWVzLgogICAgIE5TRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVy
dGllc0Zyb21DbGllbnQgPSBbY29ubmVjdGlvblByb3BlcnRpZXMgb2JqZWN0Rm9yS2V5OkAia0NG
VVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiXTsKICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0gc3RyZWFtUHJvcGVydGllc0Zyb21DbGllbnQgPyBb
W3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV0gOiBb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3RpCiAgICAgaWYgKHNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhKQogICAgICAgICBbc3RyZWFtUHJvcGVydGllcyBzZXRPYmplY3Q6KF9f
YnJpZGdlIE5TRGF0YSAqKXNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpIGZvcktleTpA
ImtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGljYXRpb24iXTsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBy
b3BlcnR5RGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoRGlj
dGlvbmFyeTpjb25uZWN0aW9uUHJvcGVydGllc107CiAgICAgW3Byb3BlcnR5RGljdGlvbmFyeSBz
ZXRPYmplY3Q6c3RyZWFtUHJvcGVydGllcyBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0
U3RyZWFtUHJvcGVydGllcyJdOwogICAgIGNvbnN0IGJvb2wgdXNlc0NhY2hlID0gZmFsc2U7CkBA
IC0yNDQsNyArMjQ0LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogCiAgICAgU2No
ZWR1bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciA9IGNsaWVudCgpICYmIGNsaWVudCgp
LT5sb2FkaW5nU3luY2hyb25vdXNYSFIoKSA/IFNjaGVkdWxpbmdCZWhhdmlvcjo6U3luY2hyb25v
dXMgOiBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91czsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY3JlYXRlTlNVUkxDb25uZWN0aW9u
KAogICAgICAgICBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlLCBudWxscHRyKSwKICAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVz
b3VyYwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaGFuZGxlLT5j
cmVhdGVOU1VSTENvbm5lY3Rpb24oCiAgICAgICAgIGhhbmRsZS0+bWFrZURlbGVnYXRlKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCAmY2xpZW50Lm1lc3NhZ2VRdWV1ZSgpKSwKICAgICAgICAg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIGlmICh0cnlIYW5kbGVQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gSWYgdGhlIGNo
YWxsZW5nZSBpcyBmb3IgYSBwcm94eSBwcm90ZWN0aW9uIHNwYWNlLCBsb29rIGZvciBkZWZhdWx0
IGNyZWRlbnRpYWxzIGluCiAgICAgLy8gdGhlIGtleWNoYWluLiAgQ0ZOZXR3b3JrIHVzZWQgdG8g
aGFuZGxlIHRoaXMgdW50aWwgV2ViQ29yZSB3YXMgY2hhbmdlZCB0byBhbHdheXMKICAgICAvLyBy
ZXR1cm4gTk8gdG8gLWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTogZm9yIDxy
ZGFyOi8vcHJvYmxlbS83NzA0OTQzPi4KQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBjaGFsbGVuZ2UubnNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5n
ZSA9IGNvcmUoZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxp
dGllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8d3RmL1Rp
bnlMUlVDYWNoZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVT
ZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3FsaXRlMyogc3Fs
aXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IG1fb3BlbmluZ1Ro
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgIW1fZGIpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiBtX2RiOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSA8cGFsL3NwaS9pb3MvU1FMaXRlM1NQSS5oPgogI2VuZGlmCiAKQEAgLTk1LDcgKzk1LDcgQEAg
Ym9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbAogICAgIHJldHVybiAhRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
d2FsRmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBTUUxp
dGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFzZSkKIHsK
ICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVO
Q0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAvLyBmaWxlTmFtZSAtIFRoZSBmaWxl
IG5hbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gVHJ1bmNhdGVzIGEgZGF0YWJhc2UgZmlsZS4gVXNlZCB3
aGVuIE1vYmlsZVNhZmFyaVNldHRpbmdzIGRlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlLAogICAgIC8v
IHNpbmNlIGRlbGV0aW5nIHRoZSBmaWxlIG51a2VzIHRoZSBQT1NJWCBmaWxlIGxvY2tzIHdoaWNo
IHdvdWxkIHBvdGVudGlhbGx5IGNhdXNlIFNhZmFyaQogICAgIC8vIHRvIGNvcnJ1cHQgdGhlIG5l
dyBkYiBpZiBpdCdzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlNRTGl0
ZURhdGFiYXNlLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgogCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAgLy8gYW55
IHN0YXRlbWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZhaWwu
CiAgICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwK
ICAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tpbmcK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgp
OwogI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWRPbmx5KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
aW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIpOwogICAg
ICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1faW5Q
cm9ncmVzcykKICAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJh
bnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksNyBAQCB2b2lk
IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1dGVD
b21tYW5kKCJDT01NSVQiKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IG1faW5Qcm9ncmVzczsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCiAgICAgICAgICAgICBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAjZW5kaWYK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogICAg
ICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpOwogICAgICAgICBtX2luUHJvZ3Jl
c3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNl
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBT
UUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCk7CiAjZW5kaWYKICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2Fj
dGlvbjo6c3RvcCgpCiAgICAgaWYgKG1faW5Qcm9ncmVzcykgewogICAgICAgICBtX2luUHJvZ3Jl
c3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNl
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBT
UUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCk7CiAjZW5kaWYKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Bs
YXRmb3JtTG9jYWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
Niw3ICszMjYsNyBAQCBTdHJpbmcgTG9jYWxlOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlCiAK
ICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBTdHJpbmcgTG9jYWxlOjpmb3JtYXREYXRl
VGltZShjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSwgRm9ybWF0VHlwZSBmb3JtYXRUeXBlKQog
ewogICAgIGlmIChkYXRlLnR5cGUoKSA9PSBEYXRlQ29tcG9uZW50czo6SW52YWxpZCkKQEAgLTM2
Miw3ICszNjIsNyBAQCBTdHJpbmcgTG9jYWxlOjpmb3JtYXREYXRlVGltZShjb25zdCBEYXRlCiAg
ICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1M
b2NhbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNs
YXNzIEZvbnRDYXNjYWRlOwogI2VuZGlmCiAKQEAgLTExNiwxMSArMTE2LDExIEBAIHB1YmxpYzoK
ICAgICAvLyBkaXNwbGF5IHRvIHRoZSB1c2VyLiBJZiBhbiBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0
IHN1cHBvcnQKICAgICAvLyBsb2NhbGl6ZWQgZGF0ZXMgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1
cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZvcm1hdFR5cGUgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSBpZiB5b3Ugd2FudCB0aGUgc2hvcnQgZm9ybWF0LiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25z
dCBEYXRlQ29tcG9uZW50cyYsIEZvcm1hdFR5cGUgPSBGb3JtYXRUeXBlVW5zcGVjaWZpZWQpOwog
I2Vsc2UKICAgICB2aXJ0dWFsIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBEYXRlQ29tcG9u
ZW50cyYsIEZvcm1hdFR5cGUgPSBGb3JtYXRUeXBlVW5zcGVjaWZpZWQpID0gMDsKLSNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIH5Mb2NhbGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2Fj
aGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKIC8v
IEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRvIExvY2FsaXplZERhdGFDYWNoZUlPUy5oIGFuZCBy
ZW1vdmUgdGhpcyBndWFyZC4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKQEAgLTcyLDQgKzcyLDQgQEAgTG9jYWxpemVkRGF0ZUNhY2hlJiBsb2NhbGl6ZWREYXRl
Q2FjaGUoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2Fs
aXplZERhdGVDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9y
dCAiTG9jYWxpemVkRGF0ZUNhY2hlLmgiCiAKIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRv
IExvY2FsaXplZERhdGFDYWNoZUlPUy5tbSBhbmQgY29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBndWFy
ZC4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGTm90aWZpY2F0aW9u
Q2VudGVyLmg+CkBAIC0xODUsNCArMTg1LDQgQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpj
YWxjdWxhdGVNYXhpbQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL1RleHRFbmNvZGluZ1JlZ2lzdHJ5SU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL1RleHRFbmNvZGluZ1Jl
Z2lzdHJ5SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2lvcy9UZXh0RW5jb2RpbmdSZWdpc3RyeUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXh0RW5jb2RpbmdS
ZWdpc3RyeS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNCArNjgsNCBAQCBDRlN0cmluZ0VuY29k
aW5nIHdlYkRlZmF1bHRDRlN0cmluZ0VuY29kCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2Fs
ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUqKTsKICAgICB+TG9jYWxlTWFjKCk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgZm9ybWF0RGF0
ZVRpbWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlwZVVuc3Bl
Y2lmaWVkKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgPHd0Zi9MYW5ndWFnZS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJMb2NhbGl6ZWREYXRlQ2FjaGUuaCIKICNlbmRpZgogCkBAIC0xMDMsNyArMTAz
LDcgQEAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlTWFjOjpzaAogICAgIHJldHVy
biBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihtX2xvY2FsZS5nZXQoKSwgbV9ncmVnb3JpYW5DYWxl
bmRhci5nZXQoKSwgTlNEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZSwgTlNEYXRlRm9ybWF0dGVyTm9T
dHlsZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IFN0cmluZyBMb2NhbGVNYWM6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25lbnRzJiBk
YXRlQ29tcG9uZW50cywgRm9ybWF0VHlwZSkKIHsKICAgICBkb3VibGUgbXNlYyA9IGRhdGVDb21w
b25lbnRzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXdCYXNlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBQbHVnaW5WaWV3QmFzZSA6IHB1YmxpYyBXaWRnZXQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFByb3ZpZGVQbHVnaW5MYXllcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFBsdWdpbkxheWVyKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFBsdWdpbkxheWVyKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwOCw5ICs3MDgsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1E
b2N1bWVuCiAgICAgICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OkF1dG9j
b3JyZWN0aW9uUmVwbGFjZW1lbnQ7CiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVzOgogICAgICAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyTGluZVN0eWxl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6RGljdGF0aW9uUGhyYXNlV2l0
aEFsdGVybmF0aXZlczoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgRG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMg
YW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyAgICAgICAgICAgIC8vIEZJWE1F
OiBSZW5hbWUgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBo
cmFzZVdpdGhBbHRlcm5hdGl2ZXMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSkt
Z3VhcmQuCiAgICAgICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OlRleHRD
aGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKICAgICAgICAg
ZGVmYXVsdDoKQEAgLTc2Miw4ICs3NjIsOCBAQCBhdXRvIElubGluZVRleHRCb3g6OnJlc29sdmVT
dHlsZUZvck1hcmtlCiAgICAgc3dpdGNoIChtYXJrZWRUZXh0LnR5cGUpIHsKICAgICBjYXNlIE1h
cmtlZFRleHQ6OkNvcnJlY3Rpb246CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpEaWN0YXRpb25BbHRl
cm5hdGl2ZXM6Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxl
bS84OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4K
ICAgICBjYXNlIE1hcmtlZFRleHQ6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6CiAj
ZW5kaWYKICAgICBjYXNlIE1hcmtlZFRleHQ6OkdyYW1tYXJFcnJvcjoKQEAgLTg3OSw3ICs4Nzks
NyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjCiAgICAgICAgICAg
ICByZXR1cm4gTWFya2VkVGV4dDo6VGV4dE1hdGNoOwogICAgICAgICBjYXNlIERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CiAgICAgICAgICAgICByZXR1cm4gTWFya2VkVGV4
dDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgICAgICAgICAgcmV0dXJuIE1hcmtlZFRleHQ6OkRpY3Rh
dGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKQEAgLTkwMSw4ICs5MDEsOCBAQCBW
ZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjCiAgICAgICAgIGNhc2UgRG9j
dW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3I6CiAgICAgICAgIGNhc2UgRG9jdW1lbnRN
YXJrZXI6OlJlcGxhY2VtZW50OgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25BbHRlcm5hdGl2ZXM6Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgog
ICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzOgogI2VuZGlmCiAgICAgICAgICAgICBpZiAocGhhc2UgIT0gVGV4dFBhaW50UGhhc2U6OkRl
Y29yYXRpb24pCkBAIC05NDMsOCArOTQzLDggQEAgVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRl
eHRCb3g6OmNvbGxlYwogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5k
aWNhdG9yOgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2
ZXM6CiAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI6Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4gQWxz
bywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNv
LCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogICAgICAgICBjYXNlIERv
Y3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogI2VuZGlmCiAg
ICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaDoKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL01hcmtlZFRleHQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBA
QCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgICAgIFNwZWxsaW5nRXJyb3IsCiAgICAgICAgIFRl
eHRNYXRjaCwKICAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzLAotI2lmIFBMQVRGT1JNKElP
UykKLSAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28s
IHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4gQWxzbywg
cmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAgICAgRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlcywKICNlbmRpZgogICAgICAgICBTZWxlY3Rpb24sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnQKICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93Qm94KTsKICAg
ICAgICAgb3ZlcmZsb3dCb3gubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwogICAgICAgICBp
ZiAoIW92ZXJmbG93Qm94LmludGVyc2VjdHMocGFpbnRJbmZvLnJlY3QpCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBtYXkgYmUgYXBwbGljYWJsZSB0byBub24taU9TIHBvcnRzLgogICAgICAgICAgICAgJiYgKCFo
YXNMYXllcigpIHx8ICFsYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjU3LDcgKzEyNTcsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
CiAgICAgcGFpbnRSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgYWRqdXN0Qm9yZGVyQm94
UmVjdEZvclBhaW50aW5nKHBhaW50UmVjdCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
NjIwOTc2Mz4uIEZvcmNlIHRoZSBwYWludGluZyBib3VuZHMgb2YgY2hlY2tib3hlcyBhbmQgcmFk
aW8gY29udHJvbHMgdG8gYmUgc3F1YXJlLgogICAgIGlmIChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9
PSBDaGVja2JveFBhcnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gUmFkaW9QYXJ0KSB7CiAg
ICAgICAgIGludCB3aWR0aCA9IHN0ZDo6bWluKHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3Qu
aGVpZ2h0KCkpOwpAQCAtMzAyMCw3ICszMDIwLDcgQEAgc3RhdGljIGJvb2wgYWxsb3dNaW5NYXhQ
ZXJjZW50YWdlc0luQXV0bwogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gTWFjQXBw
bGljYXRpb246OmlzSUJvb2tzKCk7Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHJldHVybiBJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKTsKICNl
bmRpZgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCkBAIC0zNjMsNyArMzYz
LDcgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZAogICAgIH0KIAog
ICAgIC8vIExhcmdlIGltYWdlIGNhc2UuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lCb29rc1N0b3J5dGltZSgp
KQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlJlbmRlclRoZW1lSU9TLmgi
CiAjZW5kaWYKIApAQCAtMTQzLDcgKzE0Myw3IEBAIExheW91dFJlY3QgUmVuZGVyQnV0dG9uOjpj
b250cm9sQ2xpcFJlY3QKICAgICByZXR1cm4gTGF5b3V0UmVjdChhZGRpdGlvbmFsT2Zmc2V0Lngo
KSArIGJvcmRlckxlZnQoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSwgd2lk
dGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCksIGhlaWdodCgpIC0gYm9yZGVyVG9w
KCkgLSBib3JkZXJCb3R0b20oKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgUmVuZGVyQnV0dG9uOjpsYXlvdXQoKQogewogICAgIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCdXR0b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB0ZXh0KCkgY29u
c3Q7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE0
LDcgKzcxNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAg
ICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5zZXRB
bm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpICYm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAg
ICAgZG9jdW1lbnQoKS5zZXRUb3VjaEV2ZW50UmVnaW9uc05lZWRVcGRhdGUoKTsKICNlbmRpZgpA
QCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0
eWwKICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnVwZGF0ZUV4dGVuZEJhY2tncm91bmRJZk5l
Y2Vzc2FyeSgpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHN0YXRpYyBib29sIGFyZU5vbklkZW50aWNhbEN1cnNvckxpc3RzRXF1YWwoY29uc3Qg
UmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKQogewogICAgIEFTU0VSVChhLT5j
dXJzb3JzKCkgIT0gYi0+Y3Vyc29ycygpKTsKQEAgLTgzMSw3ICs4MzEsNyBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlCiAgICAgLy8gRG9uJ3QgY2hlY2sgZm9yIHJl
cGFpbnQgaGVyZTsgd2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBsYXllciBoYXMgYmVlbgogICAg
IC8vIHVwZGF0ZWQgYnkgc3ViY2xhc3NlcyBiZWZvcmUgd2Uga25vdyBpZiB3ZSBoYXZlIHRvIHJl
cGFpbnQgKGluIHNldFN0eWxlKCkpLgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAob2xkU3R5bGUgJiYgIWFyZUN1cnNvcnNFcXVhbChvbGRT
dHlsZSwgJnN0eWxlKCkpKQogICAgICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNjaGVkdWxl
Q3Vyc29yVXBkYXRlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnJlcXVp
cmVzTGF5ZXIKIAogYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6YWxsb3dzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gVGhlIHRpbWluZyBvZiBsYXllciBjcmVhdGlvbiBpcyBkaWZmZXJl
bnQgb24gdGhlIHBob25lLCBzaW5jZSB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIG1hbmlwdWxhdGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIHJldHVybiBpczxQbHVnaW5WaWV3QmFzZT4od2lk
Z2V0KCkpICYmIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpLndpbGxQcm92aWRl
UGx1Z2luTGF5ZXIoKTsKICNlbHNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6YWxsb3dzQWNjZWxlcgogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIFN0cmluZyB1bmF2YWlsYWJsZVBs
dWdpblJlcGxhY2VtZW50VGV4dChSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7CiAgICAgc3dpdGNoIChw
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2EKIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uKTsKICNlbHNlCiAgICAgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25X
aXRoRGVzY3JpcHRpb24ocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIHVuYXZhaWxhYmxlUGx1
Z2luUmVwbGFjZW1lbnRUZXh0KHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSk7CkBAIC0xODEs
NyArMTgxLDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0UGx1Z2luVW5hdgogCiB2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbldp
dGhEZXNjcmlwdGlvbihQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJp
bGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0ocGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24pOwogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdGlvbik7CiAjZWxz
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9s
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wpOwogCiBjb25zdCBpbnQgYWZ0ZXJCdXR0
b25TcGFjaW5nID0gNDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogY29uc3QgaW50IGljb25IZWlnaHQgPSAxNjsKIGNvbnN0IGludCBpY29uV2lkdGggPSAx
NjsKIGNvbnN0IGludCBpY29uRmlsZW5hbWVTcGFjaW5nID0gMjsKQEAgLTk2LDcgKzk2LDcgQEAg
c3RhdGljIGludCBub2RlV2lkdGgoTm9kZSogbm9kZSkKICAgICByZXR1cm4gKG5vZGUgJiYgbm9k
ZS0+cmVuZGVyQm94KCkpID8gcm91bmRUb0ludChub2RlLT5yZW5kZXJCb3goKS0+c2l6ZSgpLndp
ZHRoKCkpIDogMDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogc3RhdGljIGludCBub2RlSGVpZ2h0KE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIChu
b2RlICYmIG5vZGUtPnJlbmRlckJveCgpKSA/IHJvdW5kVG9JbnQobm9kZS0+cmVuZGVyQm94KCkt
PnNpemUoKS5oZWlnaHQoKSkgOiAwOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBpbnQgbm9k
ZUhlaWdodChOb2RlKiBub2RlKQogCiBpbnQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6Om1heEZp
bGVuYW1lV2lkdGgoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGludCBpY29uV2lkdGggPSBub2RlSGVpZ2h0KHVwbG9hZEJ1dHRvbigp
KTsKICNlbmRpZgogICAgIHJldHVybiBzdGQ6Om1heCgwLCBzbmFwcGVkSW50UmVjdChjb250ZW50
Qm94UmVjdCgpKS53aWR0aCgpIC0gbm9kZVdpZHRoKHVwbG9hZEJ1dHRvbigpKSAtIGFmdGVyQnV0
dG9uU3BhY2luZwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OnBhaW50T2JqZWMKICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgp
LmZvbnRDYXNjYWRlKCk7CiAgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRS
dW4oZGlzcGxheWVkRmlsZW5hbWUsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIFJl
c3BlY3REaXJlY3Rpb24gfCBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJpZGUpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGludCBpY29uSGVpZ2h0
ID0gbm9kZUhlaWdodCh1cGxvYWRCdXR0b24oKSk7CiAgICAgICAgIGludCBpY29uV2lkdGggPSBp
Y29uSGVpZ2h0OwogI2VuZGlmCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbDo6cGFpbnRPYmplYwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGljb25YID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbldpZHRoIC0gYWZ0
ZXJCdXR0b25TcGFjaW5nIC0gaWNvbldpZHRoOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBpZiAoUmVuZGVyQnV0dG9uKiBidXR0b25S
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJ1dHRvbj4oYnV0dG9uLT5yZW5kZXJlcigpKSkgewog
ICAgICAgICAgICAgICAgIC8vIERyYXcgdGhlIGZpbGUgaWNvbiBhbmQgZGVjb3JhdGlvbnMuCiAg
ICAgICAgICAgICAgICAgSW50UmVjdCBpY29uUmVjdChpY29uWCwgaWNvblksIGljb25XaWR0aCwg
aWNvbkhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZVNldC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lk
IFJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lcygpCiAgICAgICAgICAgICBpZiAod2lkdGgg
IT0gY2hpbGQtPndpZHRoKCkgfHwgaGVpZ2h0ICE9IGNoaWxkLT5oZWlnaHQoKSkgewogICAgICAg
ICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgICAgICAgICAgY2hpbGQt
PnNldEhlaWdodChoZWlnaHQpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGlPUy1zcGVjaWZpYz8K
ICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICNl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNSZW5k
ZXJJRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogRG8gd2Ugc3Rp
bGwgbmVlZCB0aGlzIHdvcmthcm91bmQgdG8gYXZvaWQgYnJlYWtpbmcgbGF5b3V0IHRlc3RzPwog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyUGFydE9iamVjdCI7IH0KICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRz
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9u
UmVjdC5oIgogI2VuZGlmCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckltYWdlKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IFRoaXMgZG9lc24ndCBi
ZWhhdmUgY29ycmVjdGx5IGZvciBmbG9hdGluZyBvciBwb3NpdGlvbmVkIGltYWdlcywgYnV0IFdl
YkNvcmUgZG9lc24ndCBoYW5kbGUgdGhvc2Ugd2VsbAogLy8gZHVyaW5nIHNlbGVjdGlvbiBjcmVh
dGlvbiB5ZXQgYW55d2F5LgogLy8gRklYTUU6IFdlIGNhbid0IHRlbGwgd2hldGhlciBvciBub3Qg
d2UgY29udGFpbiB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSBzZWxlY3RlZCBSYW5nZSB1c2luZyBv
bmx5IHRoZSBvZmZzZXRzCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludAogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxl
bWVudEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwogICAgIFVOVVNFRF9QQVJBTShwYWludE9m
ZnNldCk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBIVE1MTWFw
RWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKICAgICB2b2lkIGFyZWFFbGVtZW50Rm9jdXNDaGFu
Z2VkKEhUTUxBcmVhRWxlbWVudCopOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxT
ZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29s
dXRlUXVhZHMoVmVjdG9yPAogICAgICAgICBjb250aW51YXRpb24tPmFic29sdXRlUXVhZHMocXVh
ZHMsIHdhc0ZpeGVkKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHNGb3JTZWxlY3Rpb24oVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogewogICAgIEFic29sdXRlUXVhZHNHZW5lcmF0
b3JDb250ZXh0IGNvbnRleHQodGhpcywgcXVhZHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICBJbmxpbmVCb3gqIGZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSBj
b25zdCB7IHJldHVybiBhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSA/IGZpcnN0TGluZUJveCgpIDog
Y3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCk7IH0KICAgICBJbmxpbmVCb3gqIGxhc3RMaW5lQm94
SW5jbHVkaW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcygp
ID8gbGFzdExpbmVCb3goKSA6IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCk7IH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWJzb2x1dGVR
dWFkc0ZvclNlbGVjdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0IG92ZXJyaWRl
OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDEwICsyOTMsMTAgQEAgUmVuZGVyTGF5ZXI6
OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZQogICAgICwgbV9oYXMzRFRyYW5zZm9ybWVkQW5j
ZXN0b3IoZmFsc2UpCiAgICAgLCBtX2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246Ok5vbmUpKQogICAgICwgbV92
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihOb05vdENvbXBvc2l0ZWRSZWFz
b24pCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBt
X2FkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhmYWxzZSkKICNlbmRpZgotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogICAgICwgbV9yZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXJGb3JTY3JvbGxp
bmcoZmFsc2UpCiAjZW5kaWYKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgYm9vbCBjYW5DcmVh
dGVTdGFja2luZ0NvbnRleHQoY29uCiAgICAgICAgIHx8IHJlbmRlcmVyLmlzUG9zaXRpb25lZCgp
IC8vIE5vdGUgdGhhdCB0aGlzIG9ubHkgY3JlYXRlcyBzdGFja2luZyBjb250ZXh0IGluIGNvbmp1
bmN0aW9uIHdpdGggZXhwbGljaXQgei1pbmRleC4KICAgICAgICAgfHwgcmVuZGVyZXIuaGFzUmVm
bGVjdGlvbigpCiAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxlKCkuaGFzSXNvbGF0aW9uKCkKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgfHwgbGF5
ZXIuY2FuVXNlQWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpCiAjZW5kaWYKICAgICAgICAgfHwg
KHJlbmRlcmVyLnN0eWxlKCkud2lsbENoYW5nZSgpICYmIHJlbmRlcmVyLnN0eWxlKCkud2lsbENo
YW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKSk7CkBAIC0xOTUzLDcgKzE5NTMsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgfQogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbmRlckxh
eWVyOjp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIGlmIChSZW5kZXJMYXllckJhY2tpbmcqIGxh
eWVyQmFja2luZyA9IGJhY2tpbmcoKSkKQEAgLTIxMjQsNyArMjEyNCw3IEBAIExheW91dFNpemUg
UmVuZGVyTGF5ZXI6Om9mZnNldEZyb21BbmNlc3QKIAogYm9vbCBSZW5kZXJMYXllcjo6Y2FuVXNl
QWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAm
JiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAg
cmV0dXJuIHNjcm9sbHNPdmVyZmxvdygpICYmIChyZW5kZXJlcigpLnN0eWxlKCkudXNlVG91Y2hP
dmVyZmxvd1Njcm9sbGluZygpIHx8IHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hbHdheXNVc2VBY2Nl
bGVyYXRlZE92ZXJmbG93U2Nyb2xsKCkpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MzA1LDcgKzIzMDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhjb25zdCBTY3JvbGxQ
CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaW1lbnNpb25zIHdpbGwgYmUgY29tcHV0ZWQg
aWYgdGhleSBuZWVkIHRvIGJlIChmb3Igb3ZlcmZsb3c6aGlkZGVuIGJsb2NrcykuCiAgICAgICAg
IGlmIChtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSkKICAgICAgICAgICAgIGNvbXB1dGVTY3JvbGxE
aW1lbnNpb25zKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIGlmIChhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoKSkgewogICAgICAg
ICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhpcyBjb2RlIGlzIHRyeWluZyB0
byBkby4gQmVoYXZpb3Igc2VlbXMgcmVhc29uYWJsZSB3aXRoIGl0IHJlbW92ZWQuCiAgICAgICAg
ICAgICBpbnQgbWF4T2Zmc2V0ID0gc2Nyb2xsV2lkdGgoKSAtIHJvdW5kVG9JbnQoYm94LT5jbGll
bnRXaWR0aCgpKTsKQEAgLTIzMjUsNyArMjMyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9s
bFRvKGNvbnN0IFNjcm9sbFAKICAgICB9CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsUG9zaXRpb24g
PT0gbmV3UG9zaXRpb24pIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgaWYgKG1fcmVxdWlyZXNTY3JvbGxCb3VuZHNPcmlnaW5VcGRhdGUpCiAg
ICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CiAjZW5kaWYK
QEAgLTIzNTUsNyArMjM1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGNvbnN0IFNj
cm9sbFAKICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKTsK
ICAgICAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAg
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXRUb3VjaEV2ZW50UmVnaW9uc05lZWRVcGRhdGUoKTsK
ICNlbmRpZgogICAgICAgICBEZWJ1Z1BhZ2VPdmVybGF5czo6ZGlkTGF5b3V0KHJlbmRlcmVyKCku
ZnJhbWUoKSk7CkBAIC0yNDkzLDcgKzI0OTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvCiAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNl
bGVjdGlvblJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWUgJiYgZnJhbWVWaWV3LmZyYW1l
KCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgTGF5b3V0UmVj
dCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKTsKICNlbHNlCiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50
UmVjdCgpOwpAQCAtMjkyMCw3ICsyOTIwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkU3Vz
cGVuZFNjcm9sbEFuaQogICAgIHJldHVybiByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5z
aG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbmRlckxheWVyOjpkaWRTdGFydFNjcm9s
bCgpCiB7CiAgICAgcGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLmRpZFN0YXJ0T3ZlcmZsb3dTY3Jv
bGwoKTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9s
bEluZm9BZnRlckwKICAgICAgICAgLy8gTGF5b3V0IG1heSBjYXVzZSB1cyB0byBiZSBhdCBhbiBp
bnZhbGlkIHNjcm9sbCBwb3NpdGlvbi4gSW4gdGhpcyBjYXNlIHdlIG5lZWQKICAgICAgICAgLy8g
dG8gcHVsbCBvdXIgc2Nyb2xsIG9mZnNldHMgYmFjayB0byB0aGUgbWF4IChvciBwdXNoIHRoZW0g
dXAgdG8gdGhlIG1pbikuCiAgICAgICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zmc2V0
ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkpOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogVGhpcyBsb29rcyB3
cm9uZy4gVGhlIGNhcmV0IGFkanVzdCBtb2RlIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgb24gZWRp
dGluZyByZWxhdGVkIGVudHJ5IHBvaW50cy4KICAgICAgICAgLy8gVGhpcyBjb2RlIHdhcyBhZGRl
ZCB0byBmaXggYW4gaXNzdWUgd2hlcmUgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHdvdWxkIGFs
d2F5cyBiZSBkcmF3biBvbiB0aGUgcmlnaHQgZWRnZQogICAgICAgICAvLyBvZiBhIHRleHQgZmll
bGQgd2hvc2UgY29udGVudCBvdmVyZmxvd2VkIGl0cyBib3VuZHMuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vMTU1Nzk3OTc+IGZvciBtb3JlIGRldGFpbHMuCkBAIC0zNTA3LDcgKzM1MDcsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMCiAgICAgICAgIGlmIChjbGFtcGVk
U2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpKQogICAgICAgICAgICAgc2Nyb2xsVG9PZmZz
ZXQoY2xhbXBlZFNjcm9sbE9mZnNldCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgc2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5n
KGZhbHNlKTsKICNlbmRpZgogICAgIH0KQEAgLTM1NDYsNyArMzU0Niw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXI6Om92ZXJmbG93Q29udHJvbHNJbnRlcnMKIAogYm9vbCBSZW5kZXJMYXllcjo6c2hvd3NP
dmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBEb24ndCByZW5kZXIgKGN1c3RvbSkgc2Nyb2xsYmFycyBp
ZiB3ZSBoYXZlIGFjY2VsZXJhdGVkIHNjcm9sbGluZy4KICAgICBpZiAoY2FuVXNlQWNjZWxlcmF0
ZWRUb3VjaFNjcm9sbGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzU3LDcgKzUz
NTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uCiAgICAgICAg
IGNsaXBSZWN0cy5zZXRPdmVyZmxvd0NsaXBSZWN0KGNsaXBSZWN0cy5wb3NDbGlwUmVjdCgpKTsK
ICAgICAKICAgICAvLyBVcGRhdGUgdGhlIGNsaXAgcmVjdHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0
byBjaGlsZCBsYXllcnMuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKHJlbmRlcmVyKCkuaGFzQ2xpcE9yT3ZlcmZsb3dDbGlwKCkgJiYgKGNsaXBS
ZWN0c0NvbnRleHQucmVzcGVjdE92ZXJmbG93Q2xpcCA9PSBSZXNwZWN0T3ZlcmZsb3dDbGlwIHx8
IHRoaXMgIT0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXIpKSB7CiAjZWxzZQogICAgIGlmICgo
cmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiAoY2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0
T3ZlcmZsb3dDbGlwID09IFJlc3BlY3RPdmVyZmxvd0NsaXAgfHwgdGhpcyAhPSBjbGlwUmVjdHND
b250ZXh0LnJvb3RMYXllcikpIHx8IHJlbmRlcmVyKCkuaGFzQ2xpcCgpKSB7CkBAIC02MzE1LDcg
KzYzMTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmCiAKICAg
ICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CiAKLSNpZiBQTEFURk9STShJT1MpICYm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2U6OlJlY29tcG9z
aXRlTGF5ZXIgfHwgZGlmZiA+PSBTdHlsZURpZmZlcmVuY2U6OkxheW91dFBvc2l0aW9uZWRNb3Zl
bWVudE9ubHkpCiAgICAgICAgIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXRUb3VjaEV2ZW50UmVn
aW9uc05lZWRVcGRhdGUoKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYpOwogICAg
IHZpcnR1YWwgflJlbmRlckxheWVyKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBDYWxsZWQgYmVmb3JlIHRoZSByZW5kZXJlcidzIHdpZGdl
dCAoaWYgYW55KSBoYXMgYmVlbiBudWxsZWQgb3V0LgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCk7CiAjZW5kaWYKQEAgLTMyNyw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0cygpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBi
b29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKQEAgLTYxNSw3ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aWNJ
bmxpbmVQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0aW9uKSB7IG1fc3RhdGljSW5saW5lUG9zaXRp
b24gPSBwb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0U3RhdGljQmxvY2tQb3NpdGlvbihMYXlvdXRV
bml0IHBvc2l0aW9uKSB7IG1fc3RhdGljQmxvY2tQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGFkanVz
dEZvcklPU0NhcmV0V2hlblNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0Rm9ySU9T
Q2FyZXRXaGVuU2Nyb2xsaW5nOyB9CiAgICAgdm9pZCBzZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5T
Y3JvbGxpbmcoYm9vbCBhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcpIHsgbV9hZGp1c3RG
b3JJT1NDYXJldFdoZW5TY3JvbGxpbmcgPSBhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmc7
IH0KICNlbmRpZgpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24gOiAzOwogICAgIHVuc2lnbmVkIG1fdmlld3BvcnRD
b25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gOiAyOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FkanVzdEZvcklPU0NhcmV0V2hl
blNjcm9sbGluZyA6IDE7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBt
X3JlZ2lzdGVyZWRBc1RvdWNoRXZlbnRMaXN0ZW5lckZvclNjcm9sbGluZyA6IDE7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKICNpbmNsdWRlICJUaWxl
ZEJhY2tpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcgogICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PmFkZENoaWxkKCptX2NoaWxkQ29udGFpbm1lbnRMYXllcik7CiAgICAgfQogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9pc01haW5GcmFt
ZVJlbmRlclZpZXdMYXllcikgewogICAgICAgICAvLyBQYWdlIHNjYWxlIGlzIGFwcGxpZWQgYWJv
dmUgdGhlIFJlbmRlclZpZXcgb24gaU9TLgogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENv
bnRlbnRzT3BhcXVlKCFjb21wb3NpdG9yKCkudmlld0hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCgp
KTsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlUHJp
bWFyeUdyCiAgICAgdXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShyZW5kZXJlcigpLnN0eWxlKCkpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQogewogICAgIGF1dG8mIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKQEAgLTU2OSw3ICs1NjksNyBAQCBzdGF0aWMgYm9v
bCBsYXllck9yQW5jZXN0b3JJc1RyYW5zZm9ybWVkCiAKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzaG91bGRDbGlwQ29tcG9zaXRlZEJvdW5kcygpIGNvbnN0CiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTY3JvbGxiYXIgbGF5ZXJzIHVz
ZSB0aGlzIGxheWVyIGZvciByZWxhdGl2ZSBwb3NpdGlvbmluZywgc28gZG9uJ3QgY2xpcC4KICAg
ICBpZiAobGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgbGF5ZXJGb3JWZXJ0aWNhbFNj
cm9sbGJhcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MzgsNyArNzM4LDcgQEAgYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYQogCiAgICAgaWYgKGlzPFJlbmRl
ckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKSAmJiBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9i
amVjdD4ocmVuZGVyZXIoKSkuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAgICAg
ICAgIGF1dG8qIHBsdWdpblZpZXdCYXNlID0gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGRvd25j
YXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIoKSkud2lkZ2V0KCkpOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAocGx1Z2luVmlld0Jhc2Ug
JiYgIW1fZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllckZvck1lZGlhKCkpIHsKICAgICAgICAg
ICAgIHBsdWdpblZpZXdCYXNlLT5kZXRhY2hQbHVnaW5MYXllcigpOwogICAgICAgICAgICAgcGx1
Z2luVmlld0Jhc2UtPmF0dGFjaFBsdWdpbkxheWVyKCk7CkBAIC05MTUsNyArOTE1LDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQYQogICAgICAgICBwYXJlbnRHcmFw
aGljc0xheWVyUmVjdCA9IHNuYXBwZWRHcmFwaGljc0xheWVyKGNsaXBwaW5nQm94T2Zmc2V0LCBj
bGlwcGluZ0JveC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yKCkpLm1fc25hcHBlZFJlY3Q7CiAg
ICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKGNvbXBvc2l0ZWRBbmNlc3Rvci0+aGFzVG91Y2hTY3JvbGxhYmxlT3ZlcmZsb3coKSkgewog
ICAgICAgICBMYXlvdXRSZWN0IGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcyA9IGFuY2VzdG9yQmFj
a2luZ0xheWVyLT5jb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oY29tcG9zaXRlZEFuY2VzdG9yLT5yZW5kZXJlcigpKTsKQEAg
LTExNTEsNyArMTE1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRy
eSgKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChwYWRk
aW5nQm94LmxvY2F0aW9uKCkgLSBjb21wb3NpdGVkQm91bmRzKCkubG9jYXRpb24oKSkpOwogCiAg
ICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFNpemUocm91bmRlZEludFNpemUoTGF5b3V0U2l6
ZShyZW5kZXJCb3guY2xpZW50V2lkdGgoKSwgcmVuZGVyQm94LmNsaWVudEhlaWdodCgpKSkpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBGbG9h
dFNpemUgb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVyLT5vZmZzZXRG
cm9tUmVuZGVyZXIoKTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0T2Zmc2V0RnJvbVJl
bmRlcmVyKEZsb2F0UG9pbnQoKSAtIHBhZGRpbmdCb3gubG9jYXRpb24oKSk7CiAgICAgICAgIGJv
b2wgcGFkZGluZ0JveE9mZnNldENoYW5nZWQgPSBvbGRTY3JvbGxpbmdMYXllck9mZnNldCAhPSBt
X3Njcm9sbGluZ0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKQEAgLTIzNjMsNyArMjM2Myw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNJbnRvV2luZG8KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkg
ewotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAg
aWYgKGNvbXBvc2l0b3IoKS5pbkZvcmNlZENvbXBvc2l0aW5nTW9kZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDY2LDcgKzI0NjYsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkCiAgICAgaWYgKG1fc2Nyb2xsaW5nQ29udGVudHNM
YXllciAmJiBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7CiAgICAg
ICAgIEZsb2F0UmVjdCBsYXllckRpcnR5UmVjdCA9IHBpeGVsU25hcHBlZFJlY3RGb3JQYWludGlu
ZzsKICAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgtbV9zY3JvbGxpbmdDb250ZW50c0xheWVy
LT5vZmZzZXRGcm9tUmVuZGVyZXIoKSAtIG1fc3VicGl4ZWxPZmZzZXRGcm9tUmVuZGVyZXIpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBB
Y2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0
cnkoKSBiYWtlcyBzY3JvbGxPZmZzZXQgaW50byBvZmZzZXRGcm9tUmVuZGVyZXIgb24gaU9TLAog
ICAgICAgICAvLyBidXQgdGhlIHJlcGFpbnQgcmVjdCBpcyBjb21wdXRlZCB3aXRob3V0IHRha2lu
ZyB0aGUgc2Nyb2xsIHBvc2l0aW9uIGludG8gYWNjb3VudCAoc2VlIHNob3VsZEFwcGx5Q2xpcEFu
ZFNjcm9sbFBvc2l0aW9uRm9yUmVwYWludCgpKS4KICAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92
ZUJ5KC1tX293bmluZ0xheWVyLnNjcm9sbFBvc2l0aW9uKCkpOwpAQCAtMjQ4MCw3ICsyNDgwLDcg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSBwYWludGluZ1BoYXNlKQogewogICAgIGlmICgocGFpbnRzSW50b1dpbmRvdygpIHx8IHBhaW50
c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkgJiYgcGFpbnRpbmdQaGFzZSAhPSBHcmFwaGljc0xh
eWVyUGFpbnRDaGlsZENsaXBwaW5nTWFzaykgewotI2lmICFQTEFURk9STShJT1MpICYmICFPUyhX
SU5ET1dTKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhT1MoV0lORE9XUykKICAgICAg
ICAgLy8gRklYTUU6IExvb2tzIGxpa2UgdGhlIENBTGF5ZXIgdHJlZSBpcyBvdXQgb2Ygc3luYyB3
aXRoIHRoZSBHcmFwaGljc0xheWVyIGhlaXJhcmNoeQogICAgICAgICAvLyB3aGVuIHBhZ2VzIGFy
ZSByZXN0b3JlZCBmcm9tIHRoZSBQYWdlQ2FjaGUuCiAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS84NzEyNTg3PiBBU1NFUlQ6IFdoZW4gR29pbmcgQmFjayB0byBQYWdlIHdpdGggUGx1Z2lucyBp
biBQYWdlQ2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVyJik7CiAg
ICAgflJlbmRlckxheWVyQmFja2luZygpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBsYXllcldpbGxCZURlc3Ryb3llZCgpOwogI2VuZGlm
CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVs
T2Zmc2V0RnJvbVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdWJwaXhlbE9mZnNldEZyb21S
ZW5kZXJlcjsgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCBuZWVkc0lPU0R1bXBSZW5kZXJUcmVlTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
SXNBbHdheXNPcGFxdWVIYWNrKGNvbnN0IEdyYXBoaWNzTGF5ZXImKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUNhY2hlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU2Nyb2xsYmFyLmgiCiAjZW5kaWYKQEAgLTg0LDcgKzg0LDcgQEAKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgV2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKICNlbmRpZgogCi0jaWYgIVBM
QVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgVVNFX0NPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5W
QVNFUyAxCiAjZW5kaWYKIApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgY29uc3QgaW50IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9
IDUwICogMTAwOwogI2VuZGlmCiAvLyBEdXJpbmcgcGFnZSBsb2FkaW5nIGRlbGF5IGxheWVyIGZs
dXNoZXMgdXAgdG8gdGhpcyBtYW55IHNlY29uZHMgdG8gYWxsb3cgdGhlbSBjb2FsZXNjZSwgcmVk
dWNpbmcgd29ya2xvYWQuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aHJvdHRsZWRMYXllckZsdXNoSW5pdGlhbERlbGF5
IHsgNTAwX21zIH07CiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aHJvdHRsZWRMYXllckZsdXNoRGVs
YXkgeyAxLjVfcyB9OwogI2Vsc2UKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6c2NoZWR1bGVMYXllCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdAogewogICAgIGNvbnN0IEZyYW1l
VmlldyYgZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBmcmFtZVZpZXcuZXhw
b3NlZENvbnRlbnRSZWN0KCk7CiAjZWxzZQogICAgIC8vIEhhdmluZyBhIG1fY2xpcExheWVyIGlu
ZGljYXRlcyB0aGF0IHdlJ3JlIGRvaW5nIHNjcm9sbGluZyB2aWEgR3JhcGhpY3NMYXllcnMuCkBA
IC00NzEsNyArNDcxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGlu
ZwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHJvb3RMYXllckF0dGFjaG1lbnQoKSA9
PSBSb290TGF5ZXJVbmF0dGFjaGVkKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIHN0YXJ0TGF5ZXJGbHVzaFRpbWVySWZOZWVkZWQoKTsKICNl
bmRpZgogICAgICAgICBtX3Nob3VsZEZsdXNoT25SZWF0dGFjaCA9IHRydWU7CkBAIC00OTYsNyAr
NDk2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZwogCiAgICAg
dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNBZnRlckZsdXNoSW5jbHVkaW5nU3ViZnJhbWVz
KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoaXNGbHVzaFJvb3QpCiAgICAgICAgIHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKS5kaWRGbHVz
aENvbXBvc2l0aW5nTGF5ZXJzKCk7CiAjZW5kaWYKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsCiAgICAgICAgIHVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKCpsYXllciwgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcik7
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRp
YyBib29sIHNjcm9sbGJhckhhc0Rpc3BsYXlOb25lKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewog
ICAgIGlmICghc2Nyb2xsYmFyIHx8ICFzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCkBA
IC01NTUsNyArNTU1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlU2Nyb2xsaW5nTGF5ZXJXaXRoQ2xp
ZQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ3VzdG9tTGF5ZXJzQWZ0ZXJG
bHVzaCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKCk7CiAKICAgICBpZiAoIW1f
c2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5pc0VtcHR5KCkpIHsKQEAgLTU3Miw3ICs1NzIs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkRmx1c2hDaGFuCiAgICAgaWYgKG1f
c2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMuY29udGFpbnMoJmxheWVyKSkKICAgICAgICAgbV9zY3Jv
bGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUuYWRkKCZsYXllcik7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9zY3JvbGxpbmdM
YXllcnMuY29udGFpbnMoJmxheWVyKSkKICAgICAgICAgbV9zY3JvbGxpbmdMYXllcnNOZWVkaW5n
VXBkYXRlLmFkZCgmbGF5ZXIpOwogI2VuZGlmCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvCiAgICAgLy8gaWYgdGhlcmUgYXJlIGNv
bXBvc2l0ZWQgbGF5ZXJzIHRoYXQgd2UgZGlkbid0IGhpdCBpbiBvdXIgdHJhdmVyc2FsIChlLmcu
IGJlY2F1c2Ugb2YgdmlzaWJpbGl0eTpoaWRkZW4pLgogICAgIGlmIChsYXllci5pc1JlbmRlclZp
ZXdMYXllcigpICYmICFjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nICYmICFyZXF1aXJl
c0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIpICYmICFtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlICYmICFo
YXNBbnlBZGRpdGlvbmFsQ29tcG9zaXRlZExheWVycyhsYXllcikpIHsKICAgICAgICAgLy8gRG9u
J3QgZHJvcCBvdXQgb2YgY29tcG9zaXRpbmcgb24gaU9TLCBiZWNhdXNlIHdlIG1heSBmbGFzaC4g
U2VlIDxyZGFyOi8vcHJvYmxlbS84MzQ4MzM3Pi4KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBlbmFibGVDb21wb3NpdGluZ01vZGUoZmFsc2Up
OwogICAgICAgICB3aWxsQmVDb21wb3NpdGVkID0gZmFsc2U7CiAjZW5kaWYKQEAgLTE5MjcsNyAr
MTkyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRJc0luV2luZG8KIAogICAg
ICAgICBSb290TGF5ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQgPSBpc01haW5GcmFtZUNvbXBvc2l0
b3IoKSA/IFJvb3RMYXllckF0dGFjaGVkVmlhQ2hyb21lQ2xpZW50IDogUm9vdExheWVyQXR0YWNo
ZWRWaWFFbmNsb3NpbmdGcmFtZTsKICAgICAgICAgYXR0YWNoUm9vdExheWVyKGF0dGFjaG1lbnQp
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBy
ZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKTsKICAgICAgICAgcmVnaXN0ZXJB
bGxTY3JvbGxpbmdMYXllcnMoKTsKICNlbmRpZgpAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldElzSW5XaW5kbwogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGRldGFjaFJvb3RMYXllcigpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICB1bnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycygpOwogICAgICAgICB1bnJlZ2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCk7CiAjZW5k
aWYKQEAgLTIzMjgsNyArMjMyOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1
aXJlc0NvbXAKICAgICBpZiAoaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1fcmVuZGVyVmlldy5z
ZXR0aW5ncygpLmFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMjU4Miw3ICsyNTgyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmlzQXN5bmNTY3JvbAogCiAgICAgYXV0byogZW5jbG9zaW5nT3ZlcmZsb3dMYXllciA9
IGxheWVyLmVuY2xvc2luZ092ZXJmbG93Q2xpcExheWVyKEV4Y2x1ZGVTZWxmKTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChlbmNsb3NpbmdP
dmVyZmxvd0xheWVyICYmIGVuY2xvc2luZ092ZXJmbG93TGF5ZXItPmhhc1RvdWNoU2Nyb2xsYWJs
ZU92ZXJmbG93KCkpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ0FjY2VsZXJhdGVkT3ZlcmZsb3dM
YXllcikKICAgICAgICAgICAgICplbmNsb3NpbmdBY2NlbGVyYXRlZE92ZXJmbG93TGF5ZXIgPSBl
bmNsb3NpbmdPdmVyZmxvd0xheWVyOwpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmlzQXN5bmNTY3JvbAogICAgIGlmIChoYXNDb29yZGluYXRlZFNjcm9s
bGluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIGlPUyBXSzEgaGFzIGZpeGVkL3N0aWNreSBzdXBw
b3J0IGluIHRoZSBtYWluIGZyYW1lIHZpYSBXZWJGaXhlZFBvc2l0aW9uQ29udGVudC4KICAgICBy
ZXR1cm4gaXNNYWluRnJhbWVDb21wb3NpdG9yKCk7CiAjZWxzZQpAQCAtMjcxMyw3ICsyNzEzLDcg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcAogCiBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5n
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWxheWVyLmNhblVzZUFjY2VsZXJhdGVk
VG91Y2hTY3JvbGxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yODU3LDcgKzI4
NTcsNyBAQCBmbG9hdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Onpvb21lZE91dFBhCiAKIGZsb2F0
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxl
cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBMZWdhY3lUaWxlQ2FjaGUqIHRpbGVDYWNoZSA9IG51
bGxwdHI7CiAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IHBhZ2UoKS5tYWluRnJhbWUoKS52aWV3
KCkpCiAgICAgICAgIHRpbGVDYWNoZSA9IGZyYW1lVmlldy0+bGVnYWN5VGlsZUNhY2hlKCk7CkBA
IC0zMjc5LDcgKzMyNzksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9v
dExhCiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0U2l6ZShGbG9hdFNpemUob3ZlcmZs
b3dSZWN0Lm1heFgoKSwgb3ZlcmZsb3dSZWN0Lm1heFkoKSkpOwogICAgICAgICBtX3Jvb3RDb250
ZW50TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gUGFnZSBzY2FsZSBpcyBhcHBs
aWVkIGFib3ZlIHRoaXMgb24gaU9TLCBzbyB3ZSdsbCBqdXN0IHNheSB0aGF0IG91ciByb290IGxh
eWVyIGFwcGxpZXMgaXQuCiAgICAgICAgIGF1dG8mIGZyYW1lID0gbV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLmZyYW1lKCk7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKQpAQCAtMzYw
NCw3ICszNjA0LDcgQEAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVuZGVyTAog
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoUmVuZGVyTGF5ZXImIGxheWVyKSBjb25z
dAogewogICAgIEFTU0VSVChsYXllci5pc0NvbXBvc2l0ZWQoKSk7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0
IGhlcmUgZm9yIHN0aWNraWVzIGNvbnN0cmFpbmVkIGJ5IGFuIGVuY2xvc2luZyBjbGlwcGluZyBs
YXllci4KICAgICAvLyBGSVhNRTogV2h5IGRvZXMgdGhpcyBhc3NlcnRpb24gZmFpbCBvbiBpT1M/
CiAgICAgQVNTRVJUKCFsYXllci5lbmNsb3NpbmdPdmVyZmxvd0NsaXBMYXllcihFeGNsdWRlU2Vs
ZikpOwpAQCAtMzg1OSw3ICszODU5LDcgQEAgU2Nyb2xsYWJsZUFyZWEqIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cwogICAgIHJldHVybiBtX3Njcm9sbGluZ05vZGVUb0xheWVyTWFwLmdldChub2Rl
SUQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB0
eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1MYXllciosIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENv
bnN0cmFpbnRzPj4gTGF5ZXJNYXA7CiB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1MYXllciosIFBs
YXRmb3JtTGF5ZXIqPiBTdGlja3lDb250YWluZXJNYXA7CiAKQEAgLTM5MzcsNyArMzkzNyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp3aWxsUmVtb3ZlU2MKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5yZW1vdmUoJmxheWVyKTsKICAgICBt
X3Njcm9sbGluZ0xheWVycy5yZW1vdmUoJmxheWVyKTsKIApAQCAtMzk2MCw3ICszOTYwLDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEFkZFNjcm9sbAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQVNTRVJUKG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9j
dW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBtX3Njcm9sbGluZ0xheWVycy5hZGQoJmxheWVy
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyV2l0aEJh
Y2tpbmcoUmVuZGVyTGF5ZXImLCBSZW5kZXJMYXllckJhY2tpbmcmKTsKICAgICB2b2lkIGRpZEFk
ZFNjcm9sbGluZ0xheWVyKFJlbmRlckxheWVyJik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJh
aW5lZExheWVycygpOwogICAgIHZvaWQgdW5yZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRM
YXllcnMoKTsKIApAQCAtNTE4LDcgKzUxOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXI+IG1fY2xpcExheWVyOwogICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBtX3Njcm9s
bExheWVyOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fc2Nyb2xsaW5nTGF5ZXJzOwogICAgIEhhc2hTZXQ8
UmVuZGVyTGF5ZXIqPiBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcgKzIzOCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGEKIGJvb2wgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVm
dCgpIGNvbnN0CiB7CiAvLyBSVEwgU2Nyb2xsYmFycyByZXF1aXJlIHNvbWUgc3lzdGVtIHN1cHBv
cnQsIGFuZCB0aGlzIHN5c3RlbSBzdXBwb3J0IGRvZXMgbm90IGV4aXN0IG9uIGNlcnRhaW4gdmVy
c2lvbnMgb2YgT1MgWC4gaU9TIHVzZXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20uCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vs
c2UKICAgICBzd2l0Y2ggKHNldHRpbmdzKCkudXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSgp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJW
aXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiU2Vs
ZWN0aW9uUmVjdC5oIgogI2VuZGlmCiAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFJlbmRlckxp
bmVCcmVhazo6dXBkYXRlRnJvbVN0eWxlKCkKICAgICBtX2NhY2hlZExpbmVIZWlnaHQgPSBpbnZh
bGlkTGluZUhlaWdodDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0
b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCwgdW5zaWduZWQpCiB7CiAgICAgZW5z
dXJlTGluZUJveGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJy
aWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBj
b2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBlbnN1cmVMaW5lQm94
ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQAogI2luY2x1ZGUgPG1h
dGguaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2VuZGlmCiAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck1lbnVMaXN0KTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHNpemVfdCBz
ZWxlY3RlZE9wdGlvbkNvdW50KGNvbnN0IFJlbmRlck1lbnVMaXN0JiByZW5kZXJNZW51TGlzdCkK
IHsKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gcmVuZGVyTWVu
dUxpc3Quc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygpOwpAQCAtNzcsNyArNzcsNyBAQCBSZW5k
ZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjCiAgICAgOiBSZW5kZXJGbGV4aWJs
ZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNPcHRpb25zV2lkdGhV
cGRhdGUodHJ1ZSkKICAgICAsIG1fb3B0aW9uc1dpZHRoKDApCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fcG9wdXBJc1Zpc2libGUoZmFsc2Up
CiAjZW5kaWYKIHsKQEAgLTkwLDcgKzkwLDcgQEAgUmVuZGVyTWVudUxpc3Q6On5SZW5kZXJNZW51
TGlzdCgpCiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OndpbGxCZURlc3Ryb3llZCgpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wb3B1
cCkKICAgICAgICAgbV9wb3B1cC0+ZGlzY29ubmVjdENsaWVudCgpOwogICAgIG1fcG9wdXAgPSBu
dWxscHRyOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElu
bmVyU3R5bGUoKQogICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2Rl
OjpMZWZ0KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0
ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9S
SUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsK
ICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50
KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5n
RGlyZWN0aW9uKCkpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQpOwogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsK
QEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxl
KCkKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24obV9vcHRpb25TdHlsZS0+ZGlyZWN0
aW9uKCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldFVuaWNvZGVCaWRpKG1fb3B0aW9uU3R5bGUt
PnVuaWNvZGVCaWRpKCkpOwogICAgIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiBIVE1MU2VsZWN0RWxlbWVudCYgUmVuZGVy
TWVudUxpc3Q6OnNlbGVjdEVsZW1lbnQoKSBjb25zdApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQg
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgbV9uZWVkc09wdGlv
bnNXaWR0aFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcG9wdXBJc1Zpc2libGUpCiAgICAgICAg
IG1fcG9wdXAtPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgZWxzZQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKGkKICAgICAgICAgfQog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChtdWx0aXBsZSgpKSB7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IHNlbGVjdGVkT3B0aW9u
Q291bnQoKnRoaXMpOwogICAgICAgICBpZiAoY291bnQgIT0gMSkKQEAgLTM0NCw3ICszNDQsNyBA
QCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRlUHJlZmVycmVkTG9nCiAgICAgc2V0UHJlZmVy
cmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiB7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBSZW5k
ZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6aGlkZVBvcHVw
KCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChtX3BvcHVwKQogICAgICAgICBtX3BvcHVwLT5oaWRlKCk7CiAjZW5kaWYKQEAgLTYxMSw3
ICs2MTEsNyBAQCBpbnQgUmVuZGVyTWVudUxpc3Q6OnNlbGVjdGVkSW5kZXgoKSBjb25zCiAKIHZv
aWQgUmVuZGVyTWVudUxpc3Q6OnBvcHVwRGlkSGlkZSgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3BvcHVwSXNWaXNpYmxlID0gZmFsc2U7
CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAg
ICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHBvcHVwSXNWaXNp
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cElzVmlzaWJsZTsgfQogI2VuZGlmCiAgICAgdm9p
ZCBzaG93UG9wdXAoKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX29wdGlvblN0eWxlOwogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWZQdHI8UG9wdXBNZW51PiBtX3Bv
cHVwOwogICAgIGJvb2wgbV9wb3B1cElzVmlzaWJsZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKICNlbmRp
ZgogCkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3Qo
UGFpbnRJbgogCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC8vIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gUmVuZGVyVGV4dDo6
YWJzb2x1dGVSZWN0c0ZvclJhbmdlLCBidXQgcmV0dXJucyByZWN0YW5nbGVzCiAvLyB3aGljaCBh
cmUgYW5ub3RhdGVkIHdpdGggYWRkaXRpb25hbCBzdGF0ZSB3aGljaCBoZWxwcyBpT1MgZHJhdyBz
ZWxlY3Rpb25zIGluIGl0cyB1bmlxdWUgd2F5LgogLy8gTm8gYW5ub3RhdGlvbnMgYXJlIGFkZGVk
IGluIHRoaXMgY2xhc3MuCkBAIC05NjQsNyArOTY0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OmNsaXBwZWRPdmVyZmxvdwogCiBib29sIFJlbmRlck9iamVjdDo6c2hvdWxkQXBwbHlDb21w
b3NpdGVkQ29udGFpbmVyU2Nyb2xsc0ZvclJlcGFpbnQoKQogewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVz
dHJveSgpCiAKICAgICBtX2JpdGZpZWxkcy5zZXRCZWluZ0Rlc3Ryb3llZCh0cnVlKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChoYXNMYXll
cigpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVy
KCktPndpbGxCZURlc3Ryb3llZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEzICs2OSwxMyBA
QCBjbGFzcyBTZWxlY3Rpb25SYW5nZURhdGE7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIGNsYXNz
IFZpc2libGVQb3NpdGlvbjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogY2xhc3MgU2VsZWN0aW9uUmVjdDsKICNlbmRpZgogCiBzdHJ1Y3QgUGFpbnRJbmZv
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjb25zdCBp
bnQgY2FyZXRXaWR0aCA9IDI7IC8vIFRoaXMgdmFsdWUgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3
aXRoIFVJS2l0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE1NTgwNjAxPi4KICNlbHNlCiBjb25zdCBp
bnQgY2FyZXRXaWR0aCA9IDE7CkBAIC02MDcsNyArNjA3LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4g
QXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNm
b3Jtcy4KICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JikgY29uc3Q7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxl
Y3Rpb25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkc0ZvclNlbGVjdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNv
bnN0IHsgYWJzb2x1dGVRdWFkcyhxdWFkcyk7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6dmFs
dWVDaGFuZ2VkKHVucwogCiBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2ln
bmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGludCBzaXplID0gbGlzdFNpemUoKTsKICAgICBpZiAoc2l6ZSA9
PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbGlzdEluZGV4KTsKQEAgLTIzOSw3ICsyMzksNyBAQCBT
dHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnCiAjZW5kaWYKICAgICBpZiAo
aXRlbUlzU2VwYXJhdG9yKGxpc3RJbmRleCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KGxpc3RJbmRleCkgPT0gKHNpemUgLSAxKSkKICAgICAgICAgcmV0dXJuIHNl
YXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaCIKQEAgLTMzOCw3ICszMzgsNyBAQCBWZWN0b3I8SW50UmVjdD4gUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0CiAgICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUmVjdHNGb3JSYW5nZSgq
dGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIFRoaXMgZnVuY3Rp
b24gaXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gYWRkTGluZUJveFJlY3RzLCBidXQgcmV0dXJucyBy
ZWN0YW5nbGVzCiAvLyB3aGljaCBhcmUgYW5ub3RhdGVkIHdpdGggYWRkaXRpb25hbCBzdGF0ZSB3
aGljaCBoZWxwcyB0aGUgaVBob25lIGRyYXcgc2VsZWN0aW9ucyBpbiBpdHMgdW5pcXVlIHdheS4K
IC8vIEZ1bGwgYW5ub3RhdGlvbnMgYXJlIGFkZGVkIGluIHRoaXMgY2xhc3MuCkBAIC0xMTY2LDcg
KzExNjYsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dChjb25zdCBTCiAgICAg
c3dpdGNoIChzdHlsZSgpLnRleHRTZWN1cml0eSgpKSB7CiAgICAgY2FzZSBUZXh0U2VjdXJpdHk6
Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNoYXJhY3RlcnMgaGVyZSBhcyBm
b3IgbGlzdCBtYXJrZXJzLgogICAgIC8vIFNlZSB0aGUgbGlzdE1hcmtlclRleHQgZnVuY3Rpb24g
aW4gUmVuZGVyTGlzdE1hcmtlci5jcHAuCiAgICAgY2FzZSBUZXh0U2VjdXJpdHk6OkNpcmNsZToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dCBmaW5hbDsKICAgICBWZWN0b3I8SW50UmVjdD4gYWJzb2x1dGVSZWN0c0ZvclJhbmdlKHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29u
c3Q7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9p
ZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpIGZpbmFsOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmxheW91
dEV4Y2x1ZGVkQ2gKICAgICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGJvb2wgUmVuZGVyVGV4dENvbnRyb2w6OmNhblNjcm9sbCgpIGNvbnN0CiB7
CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25z
dDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJv
b2wgY2FuU2Nyb2xsKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBsaW5lIGhlaWdodCBv
ZiB0aGUgaW5uZXIgcmVuZGVyZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBSZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZTo6bm9kZUF0UAogCiBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZTo6Z2V0QXZlcmFnZUNoYXJXaWR0aCgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTaW5jZSBMdWNpZGEgR3JhbmRlIGlzIHRoZSBkZWZh
dWx0IGZvbnQsIHdlIHdhbnQgdGhpcyB0byBtYXRjaCB0aGUgd2lkdGgKICAgICAvLyBvZiBDb3Vy
aWVyIE5ldywgdGhlIGRlZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIElFLCBGaXJlZm94IGFu
ZCBTYWZhcmkgV2luLgogICAgIC8vIDEyMjkgaXMgdGhlIGF2Z0NoYXJXaWR0aCB2YWx1ZSBpbiB0
aGUgT1MvMiB0YWJsZSBmb3IgQ291cmllciBOZXcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZUlPUy5oIgogI2VuZGlmCiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0CiAgICAgICAgICAgICBjb21wdXRlT3Zl
cmZsb3coY2xpZW50TG9naWNhbEJvdHRvbSgpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBi
ZSBhZGp1c3Rpbmcgc3R5bGVzIGR1cmluZyBsYXlvdXQuIDxyZGFyOi8vcHJvYmxlbS83Njc1NDkz
PgogICAgIGlmIChpbnB1dEVsZW1lbnQoKS5pc1NlYXJjaEZpZWxkKCkpCiAgICAgICAgIFJlbmRl
clRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhtdXRhYmxlU3R5bGUoKSwgKnRoaXMp
OwpAQCAtMjY5LDcgKzI2OSw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjoKIAogZmxvYXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpnZXRBdmVyYWdlQ2hh
cldpZHRoKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFNpbmNlIEx1Y2lkYSBHcmFuZGUgaXMgdGhlIGRlZmF1bHQgZm9udCwgd2Ugd2Fu
dCB0aGlzIHRvIG1hdGNoIHRoZSB3aWR0aAogICAgIC8vIG9mIE1TIFNoZWxsIERsZywgdGhlIGRl
ZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIEZpcmVmb3gsIFNhZmFyaSBXaW4gYW5kCiAgICAg
Ly8gSUUgZm9yIHNvbWUgZW5jb2RpbmdzIChpbiBJRSwgdGhlIGRlZmF1bHQgZm9udCBpcyBlbmNv
ZGluZyBzcGVjaWZpYykuCkBAIC0yOTIsNyArMjkyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OgogCiAgICAgZmxvYXQgbWF4Q2hhcldpZHRoID0gMC5mOwogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgp
OwogICAgIC8vIFNpbmNlIEx1Y2lkYSBHcmFuZGUgaXMgdGhlIGRlZmF1bHQgZm9udCwgd2Ugd2Fu
dCB0aGlzIHRvIG1hdGNoIHRoZSB3aWR0aAogICAgIC8vIG9mIE1TIFNoZWxsIERsZywgdGhlIGRl
ZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIEZpcmVmb3gsIFNhZmFyaSBXaW4gYW5kCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dExpbmVCb3hlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMg
Ym9vbCBsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3goCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJpZ2h0IGVk
Z2Ugb2YgdGhpcyBib3gKICAgICAvLyBjaGVjayB0byBzZWUgaWYgcG9zaXRpb24gZ29lcyBpbiB0
aGlzIGJveAogICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gPCBib3gubG9naWNhbFJpZ2h0KCkp
IHsKQEAgLTQxNiw3ICs0MTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dExpbmVCb3hl
czo6cG9zCiAKICAgICAgICAgICAgIGlmIChwb2ludEJsb2NrRGlyZWN0aW9uIDwgYm90dG9tIHx8
IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50QmxvY2tEaXJlY3Rpb24gPT0gYm90dG9tKSkgewog
ICAgICAgICAgICAgICAgIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5
QmVEb3duc3RyZWFtOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICAgICAgICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gIT0gYm94LT5sb2dpY2Fs
TGVmdCgpICYmIHBvaW50LngoKSA8IGJveC0+eCgpICsgYm94LT5sb2dpY2FsV2lkdGgoKSkgewog
ICAgICAgICAgICAgICAgICAgICBpbnQgaGFsZiA9IGJveC0+eCgpICsgYm94LT5sb2dpY2FsV2lk
dGgoKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgIEVBZmZpbml0eSBhZmZpbml0eSA9IHBvaW50
LngoKSA8IGhhbGYgPyBET1dOU1RSRUFNIDogVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0OCw3ICs0NDgsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRlck9u
bHkoY29uc3QgCiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0ocmVjdCk7CiAgICAgcmV0dXJuIGJveC5z
dHlsZSgpLmFwcGVhcmFuY2UoKSAhPSBOb0NvbnRyb2xQYXJ0OwogI2Vsc2UKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5o
IgogCkBAIC0xNzIsNCArMTcyLDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVuZGVyVGhl
bWVJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJCaXRtYXBJbWFnZS5oIgogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
QEAgLTE4NTYsNyArMTg1Niw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6ZXh0cmFEZWZhdWx0
U3R5bGUKIHN0YXRpYyBOU0J1bmRsZSAqYXJLaXRCdW5kbGUoKQogewogICAgIHN0YXRpYyBOU0J1
bmRsZSAqYXJLaXRCdW5kbGUgPSBbXSgpIHsKLSNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogICAgICAgICBkbG9wZW4oIi9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsvQXNzZXRW
aWV3ZXIiLCBSVExEX05PVyk7CiAgICAgICAgIHJldHVybiBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xh
c3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJBU1ZUaHVtYm5haWxWaWV3IildOwogI2Vsc2UKQEAgLTIw
MzgsNCArMjAzOCw0IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0IK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy9QTEFURk9STShJT1MpCisjZW5k
aWYgLy9QTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJWaWV3OjphdmFpbGFibGVMb2dpY2FsSAogICAgIGlmIChtdWx0aUNvbHVt
bkZsb3coKSAmJiBtdWx0aUNvbHVtbkZsb3coKS0+Zmlyc3RNdWx0aUNvbHVtblNldCgpKQogICAg
ICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93KCktPmZpcnN0TXVsdGlDb2x1bW5TZXQoKS0+Y29t
cHV0ZWRDb2x1bW5IZWlnaHQoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MTY2ODA4
Pi4KICAgICBpZiAoZG9jdW1lbnQoKS5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZnJhbWVWaWV3KCku
dXNlRml4ZWRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldygpLmZpeGVkTGF5b3V0
U2l6ZSgpLmhlaWdodCgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIExheW91dFVuaXQgUmVuZGVyVmll
dzo6Y2xpZW50TG9naWNhbFdpZHQKICAgICBpZiAoZnJhbWVWaWV3KCkuZml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSgpKQogICAgICAgICByZXR1cm4gKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBmcmFtZVZpZXcoKS52aXNpYmxlV2lkdGgoKSA6IGZyYW1lVmlldygpLnZpc2li
bGVIZWlnaHQoKSkgLyBmcmFtZVZpZXcoKS5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChmcmFt
ZVZpZXcoKS51c2VDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpKQogICAgICAgICByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lVmlldygpLmN1c3RvbUZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0KCkud2lkdGgoKSA6IGZyYW1lVmlldygpLmN1c3RvbUZpeGVkUG9zaXRp
b25MYXlvdXRSZWN0KCkuaGVpZ2h0KCk7CiAjZW5kaWYKQEAgLTI4Miw3ICsyODIsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclZpZXc6OmNsaWVudExvZ2ljYWxIZWlnCiAgICAgaWYgKGZyYW1lVmlldygp
LmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVWaWV3KCkudmlzaWJsZUhlaWdodCgpIDog
ZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCkpIC8gZnJhbWVWaWV3KCkuZnJhbWUoKS5mcmFtZVNj
YWxlRmFjdG9yKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoZnJhbWVWaWV3KCkudXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Qo
KSkKICAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVZpZXco
KS5jdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpLmhlaWdodCgpIDogZnJhbWVWaWV3KCku
Y3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKS53aWR0aCgpOwogI2VuZGlmCkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjbwogICAg
ICAgICBpZiAoIW93bmVyQm94KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBMYXlvdXRS
ZWN0IHZpZXdSZWN0ID0gdGhpcy0+dmlld1JlY3QoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gRG9uJ3QgY2xpcCB1c2luZyB0aGUgdmlz
aWJsZSByZWN0IHNpbmNlIGNsaXBwaW5nIGlzIGhhbmRsZWQgYXQgYSBoaWdoZXIgbGV2ZWwgb24g
aVBob25lLgogICAgICAgICBMYXlvdXRSZWN0IGFkanVzdGVkUmVjdCA9IGVuY2xvc2luZ1JlY3Q7
CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIFJlbmRlcldpZGdldDo6UmVu
ZGVyV2lkZ2V0KEhUTUxGcmFtZU93bmUKIAogdm9pZCBSZW5kZXJXaWRnZXQ6OndpbGxCZURlc3Ry
b3llZCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKGhhc0xheWVyKCkpCiAgICAgICAgIGxheWVyKCktPndpbGxCZURlc3Ryb3llZCgpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCBMYXlvdXRVbml0IFJv
b3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCgpCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25Ub3A7
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IFNlZSByZGFyOi8vcHJvYmxlbS8xOTY5MjIwNiAuLi4gZG9uJ3Qgd2FudCB0byBkbyB0aGlzIGFk
anVzdG1lbnQgZm9yIGlPUyB3aGVyZSBvdmVybGFwIGlzIG9rIGFuZCBoYW5kbGVkLgogICAgIGlm
IChyZW5kZXJlcigpLmlzUnVieUJhc2UoKSkgewogICAgICAgICAvLyBUaGUgcnVieSBiYXNlIHNl
bGVjdGlvbiBzaG91bGQgYXZvaWQgaW50cnVkaW5nIGludG8gdGhlIHJ1YnkgdGV4dC4gVGhpcyBp
cyBvbmx5IHRoZSBjYXNlIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBydWJ5IHRleHQgYWJvdmUgdXMu
CkBAIC02OTcsNyArNjk3LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25C
b3R0bwogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSB8fCAhbmV4dFJvb3RCb3goKSkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkJvdHRvbTsK
ICAgICAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFNlZSByZGFyOi8vcHJvYmxlbS8xOTY5MjIwNiAuLi4gZG9uJ3Qgd2FudCB0byBkbyB0aGlz
IGFkanVzdG1lbnQgZm9yIGlPUyB3aGVyZSBvdmVybGFwIGlzIG9rIGFuZCBoYW5kbGVkLgogICAg
IGlmIChyZW5kZXJlcigpLmlzUnVieUJhc2UoKSkgewogICAgICAgICAvLyBUaGUgcnVieSBiYXNl
IHNlbGVjdGlvbiBzaG91bGQgYXZvaWQgaW50cnVkaW5nIGludG8gdGhlIHJ1YnkgdGV4dC4gVGhp
cyBpcyBvbmx5IHRoZSBjYXNlIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBydWJ5IHRleHQgYmVsb3cg
dXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxOSw3ICs3MTksNyBAQCBwdWJsaWM6CiAg
ICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0
ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHRvdWNoQ2FsbG91dEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50b3VjaENhbGxvdXRFbmFibGVk
OyB9CiAjZW5kaWYKIApAQCAtMTIyOCw3ICsxMjI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRUb3VjaENhbGxvdXRF
bmFibGVkKGJvb2wgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRvdWNoQ2FsbG91
dEVuYWJsZWQsIHYpOyB9CiAjZW5kaWYKIApAQCAtMTY1MCw3ICsxNjUwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkgeyByZXR1cm4gTGlu
ZUNsYW1wVmFsdWUoKTsgfQogICAgIHN0YXRpYyBUZXh0U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1
cml0eSgpIHsgcmV0dXJuIFRleHRTZWN1cml0eTo6Tm9uZTsgfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFRvdWNo
Q2FsbG91dEVuYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUkKICAgICB1
bnNpZ25lZCB1bnNpZ25lZHNbMV07CiAgICAgc2hvcnQgaHlwaGVuYXRpb25TaG9ydHNbM107CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb2xvciBj
b21wb3NpdGlvbkNvbG9yOyAvLyBGSVhNRTogdGhpcyBoYXMgZ29uZS4KICNlbmRpZgogI2lmIEVO
QUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMTksNyArMTE5LDcgQEAgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkudG9SYXcoKSkKICAgICAs
IHJ1YnlQb3NpdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxS
dWJ5UG9zaXRpb24oKSkpCiAgICAgLCB0ZXh0Wm9vbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoUmVuZGVyU3R5bGU6
OmluaXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1RS
QUlMSU5HX1dPUkQpCkBAIC0yMTIsNyArMjEyLDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZQogICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKG8udGV4dFVuZGVy
bGluZVBvc2l0aW9uKQogICAgICwgcnVieVBvc2l0aW9uKG8ucnVieVBvc2l0aW9uKQogICAgICwg
dGV4dFpvb20oby50ZXh0Wm9vbSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoby50b3VjaENhbGxvdXRFbmFibGVk
KQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQpAQCAtMzA0LDcgKzMwNCw3
IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSgKICAgICAgICAgJiYg
dGV4dEluZGVudFR5cGUgPT0gby50ZXh0SW5kZW50VHlwZQogI2VuZGlmCiAgICAgICAgICYmIGxp
bmVCb3hDb250YWluID09IG8ubGluZUJveENvbnRhaW4KLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgJiYgdG91Y2hDYWxsb3V0RW5hYmxlZCA9PSBv
LnRvdWNoQ2FsbG91dEVuYWJsZWQKICNlbmRpZgogICAgICAgICAmJiBoeXBoZW5hdGlvblN0cmlu
ZyA9PSBvLmh5cGhlbmF0aW9uU3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCiAgICAgdW5zaWduZWQg
dGV4dFpvb206IDE7IC8vIFRleHRab29tCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCB0b3VjaENhbGxvdXRFbmFibGVkIDogMTsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDE0ICs0OSwxNCBAQAogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgi
CiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogY2xhc3MgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIHsKIHB1YmxpYzoKICAgICBD
aGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoY29uc3QgRWxlbWVudCYpOwpAQCAtNjgsNyArNjgsNyBA
QCBwcml2YXRlOgogICAgIFZpc2liaWxpdHkgbV9wcmV2aW91c1Zpc2liaWxpdHk7CiAgICAgVmlz
aWJpbGl0eSBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5OwogfTsKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogUmVuZGVyVHJlZVVw
ZGF0ZXI6OlBhcmVudDo6UGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgOiBlbGVtZW50
KGlzPERvY3VtZW50Pihyb290KSA/IG51bGxwdHIgOiBkb3duY2FzdDxFbGVtZW50Pigmcm9vdCkp
CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVy
ZXJTdAogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUmIHVwZGF0ZSkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDaGVja0ZvclZp
c2liaWxpdHlDaGFuZ2UgY2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlKGVsZW1lbnQpOwogI2VuZGlm
CiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBSZW5kZXJWaWV3JiBSZW5kZXJUcmVlVXBkYXRlcjo6cmVu
ZGVyVmllCiAgICAgcmV0dXJuICptX2RvY3VtZW50LnJlbmRlclZpZXcoKTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIFZpc2liaWxpdHkg
ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JE
b2N1bWVudChjb25zdCBEb2MKIAogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFueSAtd2Via2l0LXVz
ZXItbW9kaWZ5IGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgaWZyYW1lLgogICAgIGRvY3VtZW50
U3R5bGUuc2V0VXNlck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSA/IFVzZXJNb2RpZnk6
OlJlYWRXcml0ZSA6IFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkp
CiAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3Rt
ZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5NSw3ICszMDk1LDcgQEAg
dW5zaWduZWQgSW50ZXJuYWxzOjpsYXlvdXRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50LT52aWV3KCktPmxheW91dENvbnRleHQoKS5sYXlvdXRDb3VudCgpOwogfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25zdCBjaGFy
KiBjdXJzb3JUeXBlVG9TdHJpbmcoQ3Vyc29yOjpUeXBlIGN1cnNvclR5cGUpCiB7CiAgICAgc3dp
dGNoIChjdXJzb3JUeXBlKSB7CkBAIC0zMTU2LDcgKzMxNTYsNyBAQCBFeGNlcHRpb25PcjxTdHJp
bmc+IEludGVybmFsczo6Z2V0Q3VycmVuCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3Ig
fTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Q3Vyc29yIGN1cnNvciA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5jdXJyZW50
TW91c2VDdXJzb3IoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwpAQCAtMzM0Nyw3ICsz
MzQ3LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKEhUTQogICAgIGlm
ICghaXM8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcikucG9wdXBJc1Zpc2libGUoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM0Miw3ICs0MzQyLDcgQEAgVmVjdG9yPFN0
cmluZz4gSW50ZXJuYWxzOjphY2Nlc3NLZXlNb2RpZgogCiB2b2lkIEludGVybmFsczo6c2V0UXVp
Y2tMb29rUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKLSNpZiBQTEFURk9STShJ
T1MpICYmIFVTRShRVUlDS19MT09LKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShR
VUlDS19MT09LKQogICAgIGF1dG8mIHF1aWNrTG9va0hhbmRsZUNsaWVudCA9IE1vY2tQcmV2aWV3
TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKTsKICAgICBQcmV2aWV3TG9hZGVyOjpzZXRDbGllbnRG
b3JUZXN0aW5nKCZxdWlja0xvb2tIYW5kbGVDbGllbnQpOwogICAgIHF1aWNrTG9va0hhbmRsZUNs
aWVudC5zZXRQYXNzd29yZChwYXNzd29yZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIldlYkNv
cmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GUkFNRVdPUkso
VUlLaXQpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5h
YmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBTdHJpbmcg
SW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zCiAKIGJvb2wgSW50ZXJuYWxzOjp1c2Vy
UHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1v
dGlvbkVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29y
a3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJl
Zml4LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxOSArMTEzLDE5
IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxzZQotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0Nv
cmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2VuZGlmCiAKICNpZmRl
ZiBfX09CSkNfXwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjZWxzZQogI2ltcG9ydCA8Q29jb2Ev
Q29jb2EuaD4KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZVRocmVhZC5oIgogI2VuZGlmCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBXb3JrZXJUaHJl
YWQ6OndvcmtlclRocmVhZCgpCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7CiAKICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdvcmtlcnMu
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmxvYXRp
bmdQb2ludEVudmlyb25tZW50OjpzaW5nbGV0b24oKS5wcm9wYWdhdGVNYWluVGhyZWFkRW52aXJv
bm1lbnQoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NDQgQEAKKzIw
MTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAg
U3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9h
ZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmlzU2FmZVRvVXNlTWVtb3J5TWFwRm9y
UGF0aCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclNhbWVT
aXRlQ29va2llcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01l
dHJpY3M6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3Vy
Y2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpBY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3Bl
bmRlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJ
T1MubW06CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9z
dGluZ1Byb2Nlc3MpOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0
eVNQSS5oOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg6CisgICAg
ICAgICogUGxhdGZvcm0vc3BpL2lvcy9Gcm9udEJvYXJkU2VydmljZXNTUEkuaDoKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzU2hpbS5tbToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0NvY29hL1dLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oOgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lm06CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvQ2FjaGVNb2RlbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNh
bGN1bGF0ZVVSTENhY2hlU2l6ZXMpOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxp
emVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6cnVuSW5pdGlhbGl6YXRpb25Db2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRv
clN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAg
ICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRl
bGVnYXRlOjpjaGVja0VudGl0bGVtZW50cyk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJL
aXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAg
ICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvUHJpbnRJ
bmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpbnRJbmZvOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQcmludEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1ByaW50
SW5mby5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBTaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50
OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2ViS2V5Ym9h
cmRFdmVudC5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHA6CisgICAgICAgICogU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChkZWZhdWx0UGFzc2l2ZVRvdWNoTGlzdGVuZXJzQXNE
ZWZhdWx0T25Eb2N1bWVudCk6CisgICAgICAgIChkZWZhdWx0Q3VzdG9tUGFzdGVib2FyZERhdGFF
bmFibGVkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5oOgorICAgICAg
ICAqIFNoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIFNoYXJlZC9pb3Mv
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAqIFNoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwOgorICAgICAgICAqIFNoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKiBTaGFyZWQvaW9z
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW06CisgICAgICAgICogU2hhcmVkL2lvcy9OYXRp
dmVXZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAqIFNoYXJlZC9pb3MvTmF0aXZlV2ViVG91
Y2hFdmVudElPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5o
OgorICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAq
IFNoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvV2Vi
SWNvblV0aWxpdGllcy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFj
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hhcmVkL21h
Yy9TZWNJdGVtU2hpbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTZWNJdGVtU2hp
bSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6Cisg
ICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRJ
Z25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0SXNQbHVnSW5VcGRh
dGVBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIGRlc2NyaXB0aW9uXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdFbGVtZW50SW5mby5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAg
ICAgICAoSUdOT1JFX1dBUk5JTkdTX0JFR0lOKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3BsdWdpblBy
b2Nlc3NDb3VudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8pOgorICAgICAg
ICAodmFsaWRhdGUpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgYWxsb3dzTGlua1ByZXZpZXddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNl
dEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvdW50U3RyaW5n
TWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZpbmRT
dHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9oaWRlRmlu
ZFVJXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXli
YWNrOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRl
bTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0
aW9uVXBkYXRlOndpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6d2l0aG91dFdhaXRpbmdGb3JBbmlt
YXRlZFJlc2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
aW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGVuY29kZVdpdGhDb2Rl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0V2l0aENvZGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAg
ICAgICAgKGRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW06CisgICAgICAg
ICgtW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIF9pbml0V2l0aFR5cGU6VVJMOmxvY2F0aW9uOnRp
dGxlOklEOnJlY3Q6aW1hZ2U6dXNlckluZm86XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBs
ZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgICogVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Fw
cGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJl
QWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
Q2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTGF5ZXJSZXByZXNlbnRhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNM
b2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLm1tOgorICAgICAgICAoV2ViS2l0Ojps
aW5rZWRPbk9yQWZ0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb1JldHVy
blRvSW5saW5lKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0
Lm1tOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVu
dFByb3ZpZGVyUmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVz
b2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0
aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVw
YWRQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW06CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnNo
b3VsZExlYWtCb29zdCk6CisgICAgICAgIChXZWJLaXQ6OnN5c3RlbURpcmVjdG9yeVBhdGgpOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NB
c3NlcnRpb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1p
dExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OmluZGljYXRvckxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWZyZXNoRGlz
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW06
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdD
b250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjpi
dWlsZEF1dGhEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjptYWtl
Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRl
clVzZXJDb25zZW50ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlv
bjo6Z2V0VXNlckNvbnNlbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rp
b246OmdldEF0dGVzdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFNl
cnZpY2U6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OnN1cHBvcnRzRnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld0RpZExl
YXZlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRs
ZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGl0RnVsbHNj
cmVlbkltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9s
c01hbmFnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RD
b250cm9sbGVkRWxlbWVudElEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzTWFpblRocmVh
ZE9yQ2hlY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRT
ZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFn
ZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
ICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0lu
cHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvTGF5ZXJS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2VJT1Mu
bW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3Jp
Z2luLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2Vz
dHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BE
RlBhZ2VOdW1iZXJJbmRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGUGFn
ZU51bWJlckluZGljYXRvci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUGFzc3dvcmRW
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tTY3JvbGxWaWV3Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTeW50aGV0aWND
bGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1N5
bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIubToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLV2ViRXZlbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQubW06
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bklPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtQ29sb3JQaWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybUNvbG9yUGlja2VyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1
dENvbnRyb2wubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250
cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVl
blZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW06
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjplbmNvZGVGcmFtZVN0YXRlTm9kZSk6CisgICAgICAgIChXZWJLaXQ6
OmRlY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L21h
Yy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKFdl
YkNvbnRlbnRTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjp2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRW50ZXJGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbFNjcmVlbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxTY3JlZW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1h
Yy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01J
bnRlcm5hbHMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5n
RGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9GcmFtZVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6YXBwbHlGcmFtZVN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVWaWV3U3RhdGVUb0l0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzdG9yZVZpZXdT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9u
VG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
ckNsaWVudDo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVyQ2xpZW50
SU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6
OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRS
ZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdElPUy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2NwdUxpbWl0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2FsZVBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbENvbW1pdExheWVyVHJl
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZsdXNoTGF5ZXJUcmVlQXRUaW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFJlcGxh
Y2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21taXRM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xs
ZWRFeHBvc2VkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWN0
dWFsUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNhbmNl
bFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNz
RGlkUmVzdW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6
cmVnaXN0ZXJXaXRoQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTGlicmFyeS5tbToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxOC0xMC0xOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtQU09OXSBDYXAgbnVt
YmVyIG9mIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzIGFuZCBhbGxvdyBhIFdlYlBhZ2VQcm94
eSB0byBoYXZlIG1vcmUgdGhhbiBvbmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMjYzLDcgKzI2Myw3IEBAIEFVVE9NQVRJT05fUFJPVE9DT0xfT1VU
UFVUX0ZJTEVTID0gXAogIwogCiBpZmVxICgkKE9TKSxNQUNPUykKLWlmZXEgKCQoc2hlbGwgJChD
QykgLXN0ZD1nbnUrKzE0IC14IGMrKyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFSR0VUX1RS
SVBMRV9GTEFHUykgJChGUkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAi
d3RmL1BsYXRmb3JtLmgiIC9kZXYvbnVsbCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9TICcgfCBj
dXQgLWQnICcgLWYzKSwgMSkKK2lmZXEgKCQoc2hlbGwgJChDQykgLXN0ZD1nbnUrKzE0IC14IGMr
KyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFSR0VUX1RSSVBMRV9GTEFHUykgJChGUkFNRVdP
UktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiIC9kZXYv
bnVsbCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSAnIHwgY3V0IC1kJyAnIC1mMyks
IDEpCiAJQVVUT01BVElPTl9CQUNLRU5EX1BMQVRGT1JNX0FSR1VNRU5UUyA9IC0tcGxhdGZvcm0g
aU9TCiBlbHNlCiAJQVVUT01BVElPTl9CQUNLRU5EX1BMQVRGT1JNX0FSR1VNRU5UUyA9IC0tcGxh
dGZvcm0gbWFjT1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY29uZmlnLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jb25maWcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2RlZmluZSBQTFVH
SU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVkIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNI
ICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKQogCiAjaWZuZGVmIEVOQUJMRV9TRUNfSVRF
TV9TSElNCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfU0VDX0lURU1fU0hJ
TSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtNzcsMTQgKzc3LDE0IEBACiAjZGVmaW5lIFVTRV9DUkVE
RU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04gMQogI2VuZGlmCiAKLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogI2lmbmRlZiBFTkFCTEVfU0VSVkVSX1BS
RUNPTk5FQ1QKICNkZWZpbmUgRU5BQkxFX1NFUlZFUl9QUkVDT05ORUNUIDEKICNlbmRpZgogI2Vu
ZGlmCiAKICNpZm5kZWYgSEFWRV9TRUNfQUNDRVNTX0NPTlRST0wKLSNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShN
QUMpCiAjZGVmaW5lIEhBVkVfU0VDX0FDQ0VTU19DT05UUk9MIDEKICNlbmRpZgogI2VuZGlmCkBA
IC0xMDQsNyArMTA0LDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIEhBVkVfU0FGQVJJX1NFUlZJQ0VT
X0ZSQU1FV09SSwotI2lmIFBMQVRGT1JNKElPUykgJiYgKCFkZWZpbmVkIFRBUkdFVF9PU19JT1Mg
fHwgVEFSR0VUX09TX0lPUykgJiYgIVBMQVRGT1JNKElPU01BQykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAoIWRlZmluZWQgVEFSR0VUX09TX0lPUyB8fCBUQVJHRVRfT1NfSU9TKSAmJiAh
UExBVEZPUk0oSU9TTUFDKQogI2RlZmluZSBIQVZFX1NBRkFSSV9TRVJWSUNFU19GUkFNRVdPUksg
MQogI2Vsc2UKICNkZWZpbmUgSEFWRV9TQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLIDAKQEAgLTEx
OSw3ICsxMTksNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmICgoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkgJiYgIWRl
ZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgKChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKSkgJiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCiAjZGVmaW5l
IEhBVkVfU0FGRV9CUk9XU0lORyAxCiAjZWxzZQogI2RlZmluZSBIQVZFX1NBRkVfQlJPV1NJTkcg
MApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFj
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpKQorI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykp
CiAjZGVmaW5lIEhBVkVfTldfQUNUSVZJVFkgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+JiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVy
OwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBkZWZhdWx0U2Vzc2lvblBlbmRpbmdDb29raWVzOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIg
PDwgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8
IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8
IHBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTcwLDcgKzcwLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwg
dWlQcm9jZXNzU0RLVmVyc2lvbjsKICAgICBlbmNvZGVyIDw8IHNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBlbmNvZGVyIDw8IGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICNlbmRpZgogICAg
IGVuY29kZXIgPDwgaHR0cFByb3h5OwpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmRlZmF1bHRTZXNzaW9uUGVuZGluZ0Nvb2tpZXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRl
bnRpZmllcjsKICNlbmRpZgogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGRlZmF1bHRTZXNz
aW9uUGVuZGluZ0Nvb2tpZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5l
ckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAtODMsNyArODMs
NyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgdWludDMy
X3QgdWlQcm9jZXNzU0RLVmVyc2lvbiB7IDAgfTsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyOwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgU3RyaW5nIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICNlbmRpZgogICAgIFN0
cmluZyBodHRwUHJveHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29h
L0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBE
b3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZgogICAgIGF1dG8gbnNEYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5n
dGg6cmVzdW1lRGF0YS5zaXplKCldKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9y
YXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uCi0jaWYgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkKICAgICBzdGF0aWMgTlNTZXQ8Q2xhc3M+ICpw
bGlzdENsYXNzZXMgPSBuaWw7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1l
Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1Jf
RkFNSUxZKQogI2luY2x1ZGUgPHN5cy9hdHRyLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5k
aWYKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lSWZO
ZWVkZWQoCiAKIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlM
WSkKICAgICBzdHJ1Y3QgewogICAgICAgICB1aW50MzJfdCBsZW5ndGg7CiAgICAgICAgIHVpbnQz
Ml90IHByb3RlY3Rpb25DbGFzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclMKIHsKICAgICBpZiAocmVxdWVzdC5pc1Nh
bWVTaXRlVW5zcGVjaWZpZWQoKSkKICAgICAgICAgcmV0dXJuOwotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMjAwMDApCiAgICAgc3RhdGljIE5TVVJMICplbXB0eVVSTCA9IFtbTlNV
UkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07CiAgICAgaWYgKFt0YXNrIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0X3NpdGVGb3JDb29raWVzOildKQogICAgICAgICB0YXNrLl9z
aXRlRm9yQ29va2llcyA9IHJlcXVlc3QuaXNTYW1lU2l0ZSgpID8gdGFzay5jdXJyZW50UmVxdWVz
dC5VUkwgOiBlbXB0eVVSTDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAgICAg
V2ViQ29yZTo6c2V0QXBwbGljYXRpb25TREtWZXJzaW9uKHBhcmFtZXRlcnMudWlQcm9jZXNzU0RL
VmVyc2lvbik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShwYXJhbWV0ZXJzLnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAg
ICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRh
KHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkpOwogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7CiAgICAgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0
U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUocGFyYW1ldGVycy5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUp
OwogI2VuZGlmCiAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVOCiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShJT1NNQUMpCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwogICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKICAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCkgfHwgIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oYXVkaXRUb2tl
bikpCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0FsbENvb2tp
ZXMoKQogICAgIH0pOwogfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MCkKIHN0YXRpYyB2b2lkIHNhdmVDb29raWVzKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0
b3JhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU3luY0FsbENvb2sKICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+
IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRlcikpOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Zm9yRWFjaChbJl0gKGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbikgewogICAgICAgICBzYXZl
Q29va2llcyhuZXR3b3JrU3RvcmFnZVNlc3Npb24ubnNDb29raWVTdG9yYWdlKCksIFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHNldFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEoUmV0YWluUHRyPENGRGF0
YVJlZj4mJik7CiAgICAgc3RhdGljIHZvaWQgc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldFNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgdm9pZCBzZXRDVERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDAs
NyArNDQwLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAg
ICAgICBpZiAobmV0d29ya0RhdGFUYXNrLT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MoKSkgewogICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5ID0gdG9O
ZXR3b3JrTG9hZFByaW9yaXR5KHRhc2sucHJpb3JpdHkpOwogCi0jaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKICAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZW1v
dGVBZGRyZXNzID0gU3RyaW5nKG0uX3JlbW90ZUFkZHJlc3NBbmRQb3J0KTsKICAgICAgICAgICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0cmluZyhbbS5fY29u
bmVjdGlvbklkZW50aWZpZXIgVVVJRFN0cmluZ10pOwogI2VuZGlmCkBAIC00NTEsNyArNDUxLDcg
QEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICAgICAg
fV07CiAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMgPSBXVEZN
b3ZlKHJlcXVlc3RIZWFkZXJzKTsKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiAgICAgICAgICAgICB1aW50NjRfdCByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50ID0gMDsK
ICAgICAgICAgICAgIHVpbnQ2NF90IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IDA7CiAg
ICAgICAgICAgICB1aW50NjRfdCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gMDsKQEAgLTYw
MSw3ICs2MDEsNyBAQCBzdGF0aWMgU3RyaW5nJiBnbG9iYWxTb3VyY2VBcHBsaWNhdGlvblNlCiAg
ICAgcmV0dXJuIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5nZXQoKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIFN0
cmluZyYgZ2xvYmFsQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CkBAIC02
MjcsNyArNjI3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBsaQog
ICAgIGdsb2JhbFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpID0gaWRlbnRp
ZmllcjsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VSVCghc2Vzc2lvbnNDcmVhdGVkKTsKQEAg
LTY1NSw3ICs2NTUsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29h
CiAKICAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gY29uZmln
dXJhdGlvbkZvclNlc3Npb25JRChtX3Nlc3Npb25JRCk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIC8vIFdpdGhvdXQgdGhpcywgQ0ZOZXR3b3JrIHdvdWxk
IHNvbWV0aW1lcyBhZGQgYSBDb250ZW50LVR5cGUgaGVhZGVyIHRvIG91ciByZXF1ZXN0cyAocmRh
cjovL3Byb2JsZW0vMzQ3NDg0NzApLgogICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9zdXBwcmVzc2VkQXV0b0FkZGVkSFRUUEhlYWRlcnMpXSkKICAg
ICAgICAgY29uZmlndXJhdGlvbi5fc3VwcHJlc3NlZEF1dG9BZGRlZEhUVFBIZWFkZXJzID0gW05T
U2V0IHNldFdpdGhPYmplY3Q6QCJDb250ZW50LVR5cGUiXTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hCiAgICAgZWxzZSBpZiAoIXNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIGNv
bmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IHNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8mIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZSA9IGdsb2JhbENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwogICAgIGlmICghY3RE
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgY29uZmlndXJhdGlv
bi5fQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gY3REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlOwpAQCAtNzAxLDcgKzcwMSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNz
aW9uQ29jb2EKICAgICBzZXRDb2xsZWN0c1RpbWluZ0RhdGEoKTsKICNlbmRpZgogCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICAvLyBGSVhNRTogUmVwbGFjZSBA
ImtDRlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIHdpdGggYSBjb25zdGFu
dCBmcm9tIHRoZSBTREsgb25jZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBhIGJ1aWxk
LgogICAgIGlmIChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcHJlc3Nlc0Nvbm5lY3Rp
b25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3Nv
Y2tldFN0cmVhbVByb3BlcnRpZXMgPSBAeyBAImtDRlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25T
eXN0ZW1DaGFuZ2UiIDogQChOTykgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZP
Uk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NNQUMp
CiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwNSw0ICsxMDUsNCBAQCBib29sIE5ldHdvcmtQcm9jZXNz
OjpwYXJlbnRQcm9jZXNzSGFzU2VyCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rp
b25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiUHJvY2Vzc0Fzc2Vy
dGlvbi5oIgogI2ltcG9ydCA8VUlLaXQvVUlBY2Nlc3NpYmlsaXR5Lmg+CiAKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICBDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyhPU09iamVj
dFB0cjx4cGNfY29ubmVjdGlvbl90PiYgeHBjQ29ubmVjdGlvbiwgU2Vjb25kcyBpbnRlcnZhbCkK
ICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dh
dGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9u
V2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1f
eHBjQ29ubmVjdGlvbi5nZXQoKSksIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQp
KQogI2VuZGlmCiAgICAgewpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICBPU09i
amVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rpb247CiAgICAgUnVuTG9vcDo6
VGltZXI8Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c+IG1fd2F0Y2hkb2dUaW1lcjsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwogI2VuZGlm
CiB9OwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2
ZW50SGFuZGwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJTZXRFeGNlcHRp
b25Qb3J0IikgewogICAgICAgICBpZiAobV9pc1NlcnZlcikgewogICAgICAgICAgICAgLy8gU2Vy
dmVyIGNvbm5lY3Rpb25zIGFyZW4ndCBzdXBwb3NlZCB0byBoYXZlIHRoZWlyIGV4Y2VwdGlvbiBw
b3J0cyBvdmVycmlkZGVuLiBUcmVhdCB0aGlzIGFzIGFuIGludmFsaWQgbWVzc2FnZS4KQEAgLTY0
OSw3ICs2NDksNyBAQCBzdGF0aWMgdm9pZCBBY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlCiB7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9BWFVJRWxlbWVudE5vdGlmeVByb2Nlc3NTdXNwZW5k
U3RhdHVzKHN1c3BlbmRlZCA/IEFYU3VzcGVuZFN0YXR1c1N1c3BlbmRlZCA6IEFYU3VzcGVuZFN0
YXR1c1J1bm5pbmcpOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uKGtBWFBpZFN0YXR1c0No
YW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6IEAoZ2V0cGlkKCkpLCBAInN1c3BlbmRlZCIg
OiBAKHN1c3BlbmRlZCkgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdXNwZW5kZWQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3Np
YmlsaXR5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5SU9TLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw0ICs0MCw0IEBAIE5TRGF0YSAqbmV3QWNjZXNz
aWJpbGl0eVJlbW90ZVRva2VuKE5TVVUKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5CiAgICAgYXV0byBsYXllckhvc3RpbmdD
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6
Ok91dE9mUHJvY2VzczsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU01BQykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFDKQogICAgIC8vIFVz
ZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpcyBu
ZXZlciBwdXQgb24tc2NyZWVuIAogICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRseSBwYXJl
bnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCiAgICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0
aE9wdGlvbnM6QHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0Rldmlj
ZUlkZW50aXR5U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2lmIFBMQVRG
T1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogCiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIApAQCAtNTgsNiArNTgsNiBAQCB2b2lkIERldmljZUlkZW50aXR5SXNz
dWVDbGllbnRDZXJ0aWZpY2F0CiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9G
QU1JTFkpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL0NlbGVzdGlhbFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9DZWxlc3RpYWxTUEkuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NlbGVzdGlhbFNQSS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjcHJhZ21hIG9uY2UKIApAQCAtNDYsNCArNDYsNCBAQAogCiAjZW5kaWYKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0Zyb250Qm9hcmRTZXJ2aWNlc1NQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Gcm9udEJvYXJkU2Vydmlj
ZXNTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL0Zyb250Qm9hcmRTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKIApAQCAtMzcsNCArMzcsNCBAQAogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NTaGltLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NTaGltLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1NoaW0uaCIKQEAg
LTM0Nyw0ICszNDcsNCBAQCB2b2lkIFdlYktpdFBsdWdpblByb2Nlc3NTaGltSW5pdGlhbGl6ZShj
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBPcHRpb25JdGVtOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdGV4
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBlbnVtIGNs
YXNzIElucHV0VHlwZSB7CiAjZW5kaWYKIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIHN0cnVjdCBPcHRpb25JdGVtIHsKICAgICBPcHRpb25JdGVtKCkg
eyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWNoZU1vZGVsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgY2FsY3VsYXRlVVJMQ2FjaGVTaXplcyhDYWNoZU1v
ZGVsIGMKICAgICBjYXNlIENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjogewogICAgICAgICB1
aW50NjRfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gTUI7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMTAy
NCkKICAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxNiAqIE1COwogICAgICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6c3RvcFJ1bkxv
b3AoKQogICAgIHBsYXRmb3JtU3RvcFJ1bkxvb3AoKTsKIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1T
dG9wUnVuTG9vcCgpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9EcmF3aW5nQXJlYUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBEcmF3aW5nQXJlYVR5cGUgewog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uLAogI2VuZGlm
CiAgICAgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdG9yU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGUKICAgICBpZiAoIWlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKQogICAgICAgICBtX3Bvc3RMYXlvdXREYXRhLmVuY29kZShlbmNvZGVy
KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVu
Y29kZXIgPDwgZmlyc3RNYXJrZWRSZWN0OwogICAgIGVuY29kZXIgPDwgbGFzdE1hcmtlZFJlY3Q7
CiAgICAgZW5jb2RlciA8PCBtYXJrZWRUZXh0OwpAQCAtOTEsNyArOTEsNyBAQCBib29sIEVkaXRv
clN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmxhc3RNYXJrZWRS
ZWN0KSkKQEAgLTEwOSwxNyArMTA5LDE3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGQKIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdHlwaW5nQXR0cmli
dXRlczsKLSNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSB8fCBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0
YXJ0OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgc2VsZWN0
aW9uQ2xpcFJlY3Q7CiAgICAgZW5jb2RlciA8PCBzZWxlY3RlZFRleHRMZW5ndGg7CiAgICAgZW5j
b2RlciA8PCB0ZXh0QWxpZ25tZW50OwogICAgIGVuY29kZXIgPDwgdGV4dENvbG9yOwogICAgIGVu
Y29kZXIgPDwgZW5jbG9zaW5nTGlzdFR5cGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IGNhcmV0UmVjdEF0RW5kOwog
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdHM7CiAgICAgZW5jb2RlciA8PCB3b3JkQXRTZWxl
Y3Rpb247CkBAIC0xNDgsMTEgKzE0OCwxMSBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0
RGF0YTo6ZGVjb2RlCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwaW5nQXR0
cmlidXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShHVEspCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FyZXRSZWN0QXRTdGFydCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25DbGlwUmVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3RlZFRleHRMZW5ndGgp
KQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpk
ZWNvZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmNsb3NpbmdMaXN0VHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhcmV0
UmVjdEF0RW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnNlbGVjdGlvblJlY3RzKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIEVkaXRv
clN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlCiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWRpdG9yU3Rh
dGUuZmlyc3RNYXJrZWRSZWN0ICE9IEludFJlY3QoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJmaXJzdE1hcmtlZFJlY3QiLCBlZGl0b3JTdGF0ZS5maXJzdE1hcmtlZFJlY3QpOwogICAgIGlm
IChlZGl0b3JTdGF0ZS5sYXN0TWFya2VkUmVjdCAhPSBJbnRSZWN0KCkpCkBAIC0yNTUsMTEgKzI1
NSwxMSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgdHMg
PDwgInBvc3RMYXlvdXREYXRhIjsKICAgICBpZiAoZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEo
KS50eXBpbmdBdHRyaWJ1dGVzICE9IEF0dHJpYnV0ZU5vbmUpCiAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgidHlwaW5nQXR0cmlidXRlcyIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkudHlw
aW5nQXR0cmlidXRlcyk7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAgIGlmIChlZGl0b3JTdGF0
ZS5wb3N0TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0U3RhcnQgIT0gSW50UmVjdCgpKQogICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNhcmV0UmVjdEF0U3RhcnQiLCBlZGl0b3JTdGF0ZS5wb3N0TGF5
b3V0RGF0YSgpLmNhcmV0UmVjdEF0U3RhcnQpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFD
KQogICAgIGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkNsaXBSZWN0
ICE9IEludFJlY3QoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25DbGlwUmVj
dCIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uQ2xpcFJlY3QpOwogICAg
IGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkVGV4dExlbmd0aCkKQEAg
LTI3MSw3ICsyNzEsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
CiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuZW5jbG9zaW5nTGlzdFR5cGUg
IT0gTm9MaXN0KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImVuY2xvc2luZ0xpc3RUeXBlIiwg
ZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5lbmNsb3NpbmdMaXN0VHlwZSk7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWRp
dG9yU3RhdGUucG9zdExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCAhPSBJbnRSZWN0KCkpCiAg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2FyZXRSZWN0QXRFbmQiLCBlZGl0b3JTdGF0ZS5wb3N0
TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0RW5kKTsKICAgICBpZiAoZWRpdG9yU3RhdGUucG9zdExh
eW91dERhdGEoKS5zZWxlY3Rpb25SZWN0cy5zaXplKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNv
cmUvU2VsZWN0aW9uUmVjdC5oPgogI2VuZGlmCiAKQEAgLTc1LDcgKzc1LDcgQEAgc3RydWN0IEVk
aXRvclN0YXRlIHsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJr
ZWRSZWN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgbGFzdE1hcmtlZFJlY3Q7CiAgICAgU3RyaW5n
IG1hcmtlZFRleHQ7CkBAIC04NSwxNyArODUsMTcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKIAog
ICAgIHN0cnVjdCBQb3N0TGF5b3V0RGF0YSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGluZ0F0dHJp
YnV0ZXMgeyBBdHRyaWJ1dGVOb25lIH07Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShH
VEspCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0U3RhcnQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9S
TShNQUMpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc2VsZWN0aW9uQ2xpcFJlY3Q7CiAgICAg
ICAgIHVpbnQ2NF90IHNlbGVjdGVkVGV4dExlbmd0aCB7IDAgfTsKICAgICAgICAgdWludDMyX3Qg
dGV4dEFsaWdubWVudCB7IE5vQWxpZ25tZW50IH07CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIHRl
eHRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjpibGFjayB9OwogICAgICAgICB1aW50MzJfdCBlbmNs
b3NpbmdMaXN0VHlwZSB7IE5vTGlzdCB9OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0
QXRFbmQ7CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25S
ZWN0czsKICAgICAgICAgU3RyaW5nIHdvcmRBdFNlbGVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwogdHlwZWRl
ZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9C
SkNfQ0xBU1MgV2ViRXZlbnQ7CiAjZW5kaWYKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnQq
LCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmLCBJbnB1dE1ldGhvZEZpbHRlcjo6
RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICopOwogI2VsaWYgUExBVEZPUk0oV1BFKQogICAg
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCop
OwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6
OkNvbXBvc2l0aW9uUmVzdWx0cyYgY29tcG9zaXRpb25SZXN1bHRzKCkgY29uc3QgIHsgcmV0dXJu
IG1fY29tcG9zaXRpb25SZXN1bHRzOyB9CiAgICAgYm9vbCBpc0Zha2VFdmVudEZvckNvbXBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mYWtlRXZlbnRGb3JDb21wb3NpdGlvbjsgfQotI2VsaWYg
UExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICA6OldlYkV2ZW50
KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNl
bGlmIFBMQVRGT1JNKFdJTikKICAgICBjb25zdCBNU0cqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBH
VW5pcXVlUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogICAgIFdlYkNvcmU6OkNvbXBvc2l0
aW9uUmVzdWx0cyBtX2NvbXBvc2l0aW9uUmVzdWx0czsKICAgICBib29sIG1fZmFrZUV2ZW50Rm9y
Q29tcG9zaXRpb247Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFJldGFpblB0cjw6OldlYkV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExB
VEZPUk0oV0lOKQogICAgIE1TRyBtX25hdGl2ZUV2ZW50OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHBy
aXZhdGU6CiB9OwogCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcy4KLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgaXNJbkhhcmR3
YXJlS2V5Ym9hcmRNb2RlKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViTW91c2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIE9CSkNfQ0xBU1MgTlNWaWV3OwogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgV2ViRXZlbnQ7CiAjZW5k
aWYKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5h
dGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwogICAgIE5hdGl2
ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2Vs
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZl
bnQgKik7CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChzdHJ1
Y3Qgd3BlX2lucHV0X3BvaW50ZXJfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBOU0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKICAg
ICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2
ZW50LmdldCgpOyB9Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIDo6V2ViRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVFdmVudC5nZXQoKTsgfQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIGNvbnN0IE1TRyogbmF0
aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiAmbV9uYXRpdmVFdmVudDsgfQpAQCAtODYsNyArODYs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7
Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJl
dGFpblB0cjw6OldlYkV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oV0lOKQog
ICAgIE1TRyBtX25hdGl2ZUV2ZW50OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZl
V2ViVG91Y2hFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiBzdHJ1Y3QgX1VJV2ViVG91Y2hFdmVudDsKICNlbGlmIFBMQVRGT1JN
KEdUSykKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KQEAgLTQyLDcgKzQyLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZlbnQgOiBwdWJs
aWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBf
VUlXZWJUb3VjaEV2ZW50Kik7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViVG91
Y2hFdmVudChHZGtFdmVudCosIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiYpOwpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3Vj
aFBvaW50PiBleHRyYWN0V2ViVG91Y2hQb2ludChjb25zdCBfVUlXZWJUb3VjaEV2ZW50Kik7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUHJpbnRJbmZvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgUHJpbnRJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmMKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJpbnRNb2RlKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW5jb2RlciA8PCBzbmFw
c2hvdEZpcnN0UGFnZTsKICNlbmRpZgogfQpAQCAtNzAsNyArNzAsNyBAQCBib29sIFByaW50SW5m
bzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUHJpbnRJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IFByaW50SW5mbyB7CiAgICAgZmxvYXQgcGFnZVNl
dHVwU2NhbGVGYWN0b3IgeyAwIH07CiAgICAgZmxvYXQgYXZhaWxhYmxlUGFwZXJXaWR0aCB7IDAg
fTsKICAgICBmbG9hdCBhdmFpbGFibGVQYXBlckhlaWdodCB7IDAgfTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHNuYXBzaG90Rmlyc3RQYWdl
IHsgZmFsc2UgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9u
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEZyYW1lU3Rh
dGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuCiAKICAgICBlbmNvZGVyIDw8IGh0dHBCb2R5Owog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW5jb2Rl
ciA8PCBleHBvc2VkQ29udGVudFJlY3Q7CiAgICAgZW5jb2RlciA8PCB1bm9ic2N1cmVkQ29udGVu
dFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8RnJhbWVTdGF0ZT4gRnJh
bWVTdGF0ZTo6ZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5odHRwQm9keSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leHBvc2Vk
Q29udGVudFJlY3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnVub2JzY3VyZWRDb250ZW50UmVjdCkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdHJ1Y3QgRnJhbWVTdGF0ZSB7CiAgICAgc3RkOjpvcHRpb25hbDxIVFRQQm9keT4gaHR0cEJv
ZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUuCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHVub2JzY3Vy
ZWRDb250ZW50UmVjdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91dFNpemVJ
blNjcm9sbFZpZXdDb29yZGluYXRlczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsMTIgKzkwLDEyIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNNYWMuaCIKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvblJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC02MTks
NyArNjE5LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjpkZQogICAg
IHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjpkZWNvZGUoZGVj
b2Rlciwgcm91bmRlZFJlY3QpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRRdWFkPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0UXVhZCYgZmxvYXRRdWFkKQogewogICAgIFNpbXBsZUFy
Z3VtZW50Q29kZXI8RmxvYXRRdWFkPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UXVhZCk7CkBAIC02
NTAsNyArNjUwLDcgQEAgc3RkOjpvcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4gQXJndW1lbgog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBXVEZNb3ZlKHZpZXdwb3J0
QXJndW1lbnRzKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW50UG9pbnQmIGludFBvaW50KQpAQCAtMTE2MCw3ICsx
MTYwLDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlT3B0aW9uYWxJbWFnZShEZWNvZGVyJgogICAgIHJl
dHVybiBkZWNvZGVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBl
bmNvZGVyLmVuY29kZUVudW0oY3Vyc29yLnR5cGUoKSk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9p
ZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCkKIHsKQEAgLTE3MTIsNyArMTcxMiw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkVVJMPjo6ZGVjb2QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8SGlnaGxpZ2h0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQogewpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjcsNyArMTI3LDcgQEAgdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+
Owogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBTZWxlY3Rp
b25SZWN0Owogc3RydWN0IEhpZ2hsaWdodDsKQEAgLTI1OCw3ICsyNTgsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Jik7CiB9OwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZsb2F0UXVhZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRRdWFkPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMjY5LDcgKzI2OSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkludFBvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gZGVjb2RlKERlY29kZXImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHB1YmxpYzoK
ICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29k
ZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2Rl
LCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBi
b29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwgTW9kaWZp
ZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYktl
eWJvYXJkRXZlbnQoVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5k
b3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwg
TW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2Vs
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBp
bnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBt
YWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0
ZW1LZXksIE1vZGlmaWVycywgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbGlmIFBMQVRGT1JNKFdQ
RSkKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlm
aWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUs
IGJvb2wgaXNLZXlwYWQsIE1vZGlmaWVycywgV2FsbFRpbWUgdGltZXN0YW1wKTsKQEAgLTMyMCw3
ICszMjAsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQgewogcHVibGljOgogICAgIGVudW0gVG91Y2hQb2ludFN0YXRlIHsKQEAgLTQ5
MSw3ICs0OTEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+
IG1fdG91Y2hQb2ludHM7CiB9OwogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVu
dENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2
ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsyMzgs
NyBAQCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm0oCiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIHN0YXRpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUGhhc2VU
eXBlIHRvdWNoRXZlbnRUeXBlKGNvbnN0IFdlYlBsYXRmb3JtVG91Y2hQb2ludCYgd2ViVG91Y2hQ
b2ludCkKIHsKQEAgLTMxNCw3ICszMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcm90YXRpb25B
bmdsZSA9IHdlYlRvdWNoUG9pbnQucm90YXRpb25BbmdsZSgpOwogICAgIH0KIH07Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGNsYXNz
IFdlYktpdDJQbGF0Zm9ybVRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3Vj
aEV2ZW50IHsKIHB1YmxpYzoKQEAgLTM1MSw3ICszNTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
bV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB1bnNpZ25lZCB0b3VjaENvdW50ID0g
d2ViRXZlbnQudG91Y2hQb2ludHMoKS5zaXplKCk7CiAgICAgICAgIG1fdG91Y2hQb2ludHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3VjaENvdW50KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvdWNoQ291bnQ7ICsraSkKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIFBsYXRmb3JtVG91Y2hFdmVudAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdlYkV2ZW50LnRvdWNoUG9pbnRzKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBtX3Rv
dWNoUG9pbnRzLmFwcGVuZChXZWJLaXQyUGxhdGZvcm1Ub3VjaFBvaW50KHdlYkV2ZW50LnRvdWNo
UG9pbnRzKCkuYXQoaSkpKTsKLSNlbmRpZiAvL1BMQVRGT1JNKElPUykKKyNlbmRpZiAvL1BMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIFdlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJkRXZlbnQoVHlwZSAKICAgICBBU1NFUlQo
aXNLZXlib2FyZEV2ZW50VHlwZSh0eXBlKSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNl
bGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFdlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJk
RXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgdW5tb2Rp
ZmllZFRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0
cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2
ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNvZGUsIGJvb2wgaXNBdXRvUmVwZWF0LCBib29s
IGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGlt
ZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2RlciA8
PCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogICAgIGVuY29kZXIgPDwgdXNlRGFya0FwcGVhcmFuY2U7
CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBlbmNvZGVyIDw8IHNjcmVlblNpemU7CiAgICAgZW5jb2RlciA8PCBhdmFpbGFibGVTY3JlZW5T
aXplOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVTY3JlZW5TaXplOwpAQCAtMjQ1LDcgKzI0NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4KICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNjcmVl
blNpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5hdmFpbGFibGVTY3JlZW5TaXplKSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiAgICAgYm9vbCB1
c2VEYXJrQXBwZWFyYW5jZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplOwogICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplOwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBvdmVycmlkZVNjcmVlblNpemU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJFdmVudC5o
IgogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCkBAIC04OCw0ICs4OCw0IEBAIHN0ZDo6b3B0aW9uYWw8
V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBXZWIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBEaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlOgogICB0eXBl
OiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKICAgY2F0ZWdvcnk6IGRlYnVnCi0gIGNvbmRp
dGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkOgogICB0eXBlOiBib29sCkBAIC0x
MDQzLDE0ICsxMDQzLDE0IEBAIElnbm9yZVZpZXdwb3J0U2NhbGluZ0NvbnN0cmFpbnRzOgogICBk
ZWZhdWx0VmFsdWU6IHRydWUKICAgY2F0ZWdvcnk6IGRlYnVnCiAgIHdlYmNvcmVCaW5kaW5nOiBu
b25lCi0gIGNvbmRpdGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOgogICB0eXBlOiBib29sCiAgIGRl
ZmF1bHRWYWx1ZTogZmFsc2UKICAgY2F0ZWdvcnk6IGRlYnVnCiAgIHdlYmNvcmVCaW5kaW5nOiBu
b25lCi0gIGNvbmRpdGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZToKICAgdHlwZTogYm9vbApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyAr
MzEsMTMgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlZl
cnNpb25DaGVja3MuaCIKICNlbmRpZgogCiBib29sIGRlZmF1bHRQYXNzaXZlVG91Y2hMaXN0ZW5l
cnNBc0RlZmF1bHRPbkRvY3VtZW50KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVy
c2lvbjo6Rmlyc3RUaGF0RGVmYXVsdHNUb1Bhc3NpdmVUb3VjaExpc3RlbmVyc09uRG9jdW1lbnQp
OwogI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBkZWZhdWx0
UGFzc2l2ZVRvdWNoTGlzdGVuZXJzQXNEZWZhdQogCiBib29sIGRlZmF1bHRDdXN0b21QYXN0ZWJv
YXJkRGF0YUVuYWJsZWQoKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDMwMAogICAgIHJldHVybiBXZWJD
b3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBkeWxkX2dldF9wcm9ncmFt
X3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl8xMV8zOwogI2VsaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwCiAgICAgcmV0
dXJuIFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpIHx8IGR5bGRfZ2V0X3Byb2dy
YW1fc2RrX3ZlcnNpb24oKSA+IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNE
ZWZhdWx0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUg
REVGQVVMVF9QREZQTFVHSU5fRU5BQkxFRCBmYWxzZQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgREVGQVVMVF9BTExPV1NfUElD
VFVSRV9JTl9QSUNUVVJFX01FRElBX1BMQVlCQUNLIHRydWUKICNkZWZpbmUgREVGQVVMVF9CQUNL
U1BBQ0VfS0VZX05BVklHQVRJT05fRU5BQkxFRCBmYWxzZQogI2RlZmluZSBERUZBVUxUX0ZSQU1F
X0ZMQVRURU5JTkcgdHJ1ZQpAQCAtMTA5LDcgKzEwOSw3IEBACiAjZGVmaW5lIERFRkFVTFRfU1VC
UElYRUxfQU5USUFMSUFTRURfTEFZRVJfVEVYVF9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1J
TFkpCiAjZGVmaW5lIERFRkFVTFRfQUNDRUxFUkFURURfRFJBV0lOR19FTkFCTEVEIGZhbHNlCiAj
ZGVmaW5lIERFRkFVTFRfQ0FOVkFTX1VTRVNfQUNDRUxFUkFURURfRFJBV0lORyBmYWxzZQogI2Rl
ZmluZSBERUZBVUxUX01PQ0tfQ0FQVFVSRV9ERVZJQ0VTX0VOQUJMRUQgdHJ1ZQpAQCAtMTUyLDcg
KzE1Miw3IEBACiAjZGVmaW5lIERFRkFVTFRfU0FOU19TRVJJRl9GT05UX0ZBTUlMWSAiSGVsdmV0
aWNhIgogI2RlZmluZSBERUZBVUxUX1NFUklGX0ZPTlRfRkFNSUxZICJUaW1lcyIKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBERUZBVUxUX0NV
UlNJVkVfRk9OVF9GQU1JTFkgIlNuZWxsIFJvdW5kaGFuZCIKICNkZWZpbmUgREVGQVVMVF9QSUNU
T0dSQVBIX0ZPTlRfRkFNSUxZICJBcHBsZUNvbG9yRW1vamkiCiAjZWxzZQpAQCAtMjA4LDcgKzIw
OCw3IEBACiAjZGVmaW5lIERFRkFVTFRfU0VSVklDRV9XT1JLRVJTX0VOQUJMRUQgZmFsc2UKICNl
bmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKICNkZWZpbmUgREVGQVVMVF9DT05JQ19H
UkFESUVOVF9FTkFCTEVEIHRydWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ09OSUNfR1JBRElF
TlRfRU5BQkxFRCBmYWxzZQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2QKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lclRlbXBvcmFyeURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVudC5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlRvdWNoRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
ICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCkBAIC02NCw0ICs2NCw0
IEBAIGJvb2wgV2ViVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50VHlwZShUeXAKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0RhdGFE
ZXRlY3RvclR5cGVzSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0RhdGFEZXRlY3RvclR5cGVz
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgV0tfQVBJ
X0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCiAjZGVm
aW5lIERFRklORV9JTlNUQUxMX05BTUUobWFqb3IsIG1pbm9yKSBcCiAgICAgZXh0ZXJuIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKSBjb25zdCBjaGFyIGluc3RhbGxfbmFt
ZV8gIyNtYWpvciMjIF8gIyNtaW5vciBfX2FzbSgiJGxkJGluc3RhbGxfbmFtZSRvcyIgI21ham9y
ICIuIiAjbWlub3IgIiQvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvV2ViS2l0LmZy
YW1ld29yay9XZWJLaXQiKTsgXApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCogT2Jq
ZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFwcGVyID0gW1dLRnJh
bWVJbmZvIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIFR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb246
CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY107CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRp
YWxpemVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CiAj
ZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKIAog
c3RhdGljIHZvaWQgcnVuSW5pdGlhbGl6YXRpb25Db2RlKHZvaWQqID0gbnVsbHB0cikKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJbml0V2ViQ29y
ZVRocmVhZFN5c3RlbUludGVyZmFjZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpjaGVjCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIHZhbHVlID0gYWRvcHRPU09iamVjdCh4cGNf
Y29ubmVjdGlvbl9jb3B5X2VudGl0bGVtZW50X3ZhbHVlKG1fY29ubmVjdGlvbi5nZXQoKSwgImtl
eWNoYWluLWFjY2Vzcy1ncm91cHMiKSk7CiAgICAgaWYgKHZhbHVlICYmIHhwY19nZXRfdHlwZSh2
YWx1ZS5nZXQoKSkgPT0gWFBDX1RZUEVfQVJSQVkpIHsKICAgICAgICAgeHBjX2FycmF5X2FwcGx5
KHZhbHVlLmdldCgpLCBeYm9vbChzaXplX3QgaW5kZXgsIHhwY19vYmplY3RfdCBvYmplY3QpIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICNl
bmRpZgogCiAgICAgYXV0byBib290c3RyYXAgPSBhZG9wdE9TT2JqZWN0KHhwY19jb3B5X2Jvb3Rz
dHJhcCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBhdXRvIGNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3ZhbHVlKGJvb3RzdHJhcC5nZXQoKSwgIkNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzIik7
CiAgICAgeHBjX2RpY3Rpb25hcnlfYXBwbHkoY29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMs
IF4oY29uc3QgY2hhciAqa2V5LCB4cGNfb2JqZWN0X3QgdmFsdWUpIHsKICAgICAgICAgc2V0ZW52
KGtleSwgeHBjX3N0cmluZ19nZXRfc3RyaW5nX3B0cih2YWx1ZSksIDEpOwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVsYXRlZExh
eWVyTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQs
IENGVHlwZVJlZj47CiAgICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKENBTGF5ZXIgKiwg
UmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpM
YXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllcyhVSVZpZXcg
KiwgUmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUpOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxVSUtpdFNQSS5oPgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRl
cmZhY2UgVUlWaWV3IChXS1VJVmlld1V0aWxpdGllcykKIC0gKHZvaWQpX3dlYl9zZXRTdWJ2aWV3
czooTlNBcnJheSAqKXN1YnZpZXdzOwogQGVuZApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHAKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVz
Lm1hc2tMYXllcklEKQogICAgICAgICAgICAgbGF5ZXIubWFzayA9IG51bGxwdHI7CiAgICAgICAg
IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICAgICAgVUlWaWV3ICptYXNrVmlldyA9IChfX2JyaWRnZSBVSVZpZXcgKilyZWxhdGVkTGF5
ZXJzLmdldChwcm9wZXJ0aWVzLm1hc2tMYXllcklEKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBu
ZWVkIHRvIGNoZWNrIHRoYXQgdGhlIG1hc2sgdmlldyBpcyBrZXB0IGFsaXZlLgogICAgICAgICAg
ICAgQVNTRVJUKCFtYXNrVmlldy5sYXllci5zdXBlcmxheWVyKTsKQEAgLTI5MCw3ICsyOTAsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJv
cGVydGllcyhVSVZpZXcgKnZpZXcsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3Qs
IGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3Bl
cnRpZXMsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYgcmVsYXRlZExheWVycywgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlIGxheWVyQ29udGVudHNUeXBlKQogewogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQAogCiBleHRlcm4gIkMiIFNlY0lkZW50aXR5UmVmIFNlY0lkZW50aXR5Q3Jl
YXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNh
dGUsIFNlY0tleVJlZiBwcml2YXRlS2V5KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW5jbHVkZSA8
U2VjdXJpdHkvU2VjS2V5UHJpdi5oPgogI2VuZGlmCkBAIC02NTEsNyArNjUxLDcgQEAgYm9vbCBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPAogICAgIHJldHVybiB0cnVlOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9v
bCBzZWNLZXlSZWZEZWNvZGluZ0FsbG93ZWQ7CiAKIHZvaWQgc2V0QWxsb3dzRGVjb2RpbmdTZWNL
ZXlSZWYoYm9vbCBhbGxvd3NEZWNvZGluZ1NlY0tleVJlZikKQEAgLTY4OCw3ICs2ODgsNyBAQCB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBTZWNJZGVudGl0CiAgICAgU2VjSWRlbnRpdHlD
b3B5UHJpdmF0ZUtleShpZGVudGl0eSwgJmtleSk7CiAKICAgICBDRkRhdGFSZWYga2V5RGF0YSA9
IG51bGxwdHI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAga2V5RGF0YSA9IGNvcHlQZXJzaXN0ZW50UmVmKGtleSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShNQUMpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UmV0YWluUHRyPAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZWNLZXlSZWYga2V5ID0g
bnVsbHB0cjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoc2VjS2V5UmVmRGVjb2RpbmdBbGxvd2VkKQogICAgICAgICBTZWNLZXlGaW5kV2l0aFBl
cnNpc3RlbnRSZWYoa2V5RGF0YS5nZXQoKSwgJmtleSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTZWNUcnVzdFJlZik7
CiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPFNlY1RydXN0UmVmPiYpOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgc2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYoYm9vbCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShJT1NNQUMpCiAKICNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCIKQEAgLTg5LDQgKzg5
LDQgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIAogCiB9CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9y
c0NvcmUsIEREU2NhCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0yMDks
NiArMjA5LDYgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6bQogICAg
ICAgICBsaW5rSW5kaWNhdG9yID0gb2xkSW5mb3JtYXRpb24ubGlua0luZGljYXRvcjsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKQEAgLTc5LDYgKzc5LDYgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dDo6aXNBcAogICAgIHJldHVybiAob3RoZXIucG9pbnQgLSBwb2ludCkuZGlhZ29uYWxMZW5ndGhT
cXVhcmVkKCkgPD0gNDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBA
IC01Nyw0ICs1Nyw0IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7CiAK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYktleWJvYXJkRXZl
bnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5
LmgiCkBAIC00Nyw0ICs0Nyw0IEBAIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAK
QEAgLTQwLDQgKzQwLDQgQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVu
dAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV2ViRXZlbnQuaCIKQEAg
LTEzNyw0ICsxMzcsNCBAQCBOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9T
RXZlbnRGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dl
YklPU0V2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgV2ViSU9TRXZlbnRGYWN0b3J5X2gKICNkZWZpbmUgV2ViSU9TRXZlbnRG
YWN0b3J5X2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgpAQCAt
MzcsNiArMzcsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVudCBj
cmVhdGVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiB9OwogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBXZWJJ
T1NFdmVudEZhY3RvcnlfaApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2
ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
SU9TRXZlbnRGYWN0b3J5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYklPU0V2ZW50RmFjdG9yeS5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUV2ZW50RmFjdG9yeUlPUy5oPgpAQCAtMTA4LDQgKzEwOCw0IEBAIFdlYktpdDo6V2ViTW91c2VF
dmVudCBXZWJJT1NFdmVudEZhY3RvcnkKICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50
KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIHBvc2l0aW9uLCBkZWx0YVgsIGRlbHRh
WSwgZGVsdGFaLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cyh0aW1lc3RhbXApKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklj
b25VdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
SWNvblV0aWxpdGllcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIEBjbGFzcyBVSUltYWdlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvV2ViSWNvblV0aWxpdGllcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSWNvblV0aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJY29uVXRpbGl0
aWVzLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24u
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJndW1lbnRD
b2RlcnNNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIGVuY29kZShF
bmNvZGVyJiwgTlNGb250ICopOwogYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJldGFpblB0cjxOU0Zv
bnQ+Jik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogdm9pZCBlbmNvZGUoRW5jb2RlciYsIFVJRm9udCAqKTsKIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBSZXRhaW5QdHI8VUlGb250PiYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzTWFjLmgiCiAKICNp
bXBvcnQgPENvcmVUZXh0L0NvcmVUZXh0Lmg+Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2VuZGlmCiAKQEAgLTQy
Myw3ICs0MjMsNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8CiB9
CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVSUZvbnQgKmZv
bnQpCiB7CkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UmV0YWluUHRyPAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgTlNOdW1iZXIgKm51bWJlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdW1lKCkgV0FS
Tl9VTlVTRURfUkVUVVJOCiAgICAgewogICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hfZXh0ZW5z
aW9uX2NvbnN1bWUobV90b2tlbik7Ci0jaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQ
TEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuICFzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKICNlbHNlCiAgICAgICAgIHJl
dHVybiBtX2hhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hp
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1TaGlt
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0
ZW1TaGltLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgaW5pdGlh
bGl6ZVNlY0l0ZW1TaGltKENoaWxkUHJvY2VzcyYKIHsKICAgICBzaGFyZWRQcm9jZXNzID0gJnBy
b2Nlc3M7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBzdHJ1Y3QgX0NGTkZyYW1ld29ya3NTdHVicyBzdHVicyA9IHsKICAgICAgICAgLnZlcnNpb24g
PSAwLAogICAgICAgICAuU2VjSXRlbV9zdHViX0NvcHlNYXRjaGluZyA9IHdlYlNlY0l0ZW1Db3B5
TWF0Y2hpbmcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRl
VHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXJfaAogI2RlZmluZSBBcHBs
aWNhdGlvblN0YXRlVHJhY2tlcl9oCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2ltcG9ydCAiQXNzZXJ0aW9uU2VydmljZXNTUEkuaCIKICNpbXBvcnQgIlNhbmRib3hV
dGlsaXRpZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWUKIAogYm9vbCBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlKCkgY29uc3QKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVy
biAhbV93ZWJQcm9jZXNzUHJveHkudmlzaWJsZVBhZ2VDb3VudCgpICYmIG1fd2ViUHJvY2Vzc1By
b3h5LnBhZ2VDb3VudCgpOwogI2Vsc2UKICAgICAvLyBEaXNhYmxlIGJhY2tncm91bmQgcHJvY2Vz
cyByZXNwb25zaXZlbmVzcyBjaGVja2luZyBvbiBpT1Mgc2luY2Ugc3VjaCBwcm9jZXNzZXMgdXN1
YWxseSBnZXQgc3VzcGVuZGVkLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0No
aWxkUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKAogICAgICAg
ICBtX3Byb2Nlc3NMYXVuY2hlciA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3RhdGU6OlJ1bm5pbmc6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIC8vIE9uIGlPUyBkZXBsb3kgYSB3YXRjaGRvZyBpbiB0aGUgVUkgcHJvY2Vz
cywgc2luY2UgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJlIHN1c3BlbmRlZC4KICAgICAgICAgLy8g
SWYgMzBzIGlzIGluc3VmZmljaWVudCBmb3IgYW55IG91dHN0YW5kaW5nIGFjdGl2aXR5IHRvIGNv
bXBsZXRlIGNsZWFubHksIHRoZW4gaXQgd2lsbCBiZSBraWxsZWQuCiAgICAgICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1F
OiBBZG9wdCB0aGUgV0tVSURlbGVnYXRlUHJpdmF0ZSBjYWxsYmFjayBvbiBpT1MgYW5kIHJlbW92
ZSB0aGlzLgogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rp
b248dm9pZChib29sKT4mKSA9IDA7CiAjZW5kaWYKQEAgLTI1OCw3ICsyNTgsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmll
d1RvV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
PSAwOwpAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxp
Z2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzKSA9IDA7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH0KIAotI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBtZWRpYVNlc3Npb25NYW5hZ2VyKCkg
PSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NBc3Nl
cnRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NB
c3NlcnRpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC02OCw0ICs2OCw0IEBAIHZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpz
ZXRDbGllbnQoUHIKIAogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzQXNzZXJ0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFU
Rk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIE9CSkNfQ0xBU1MgQktTUHJvY2Vzc0Fzc2VydGlvbjsKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogfTsKIAogY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbgotI2lm
IFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogICAgIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFByb2Nlc3NBc3NlcnRpb24+CiAjZW5kaWYKIHsKQEAgLTY4LDE0
ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgQXNzZXJ0aW9uU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Fzc2VydGlvblN0YXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXRlKEFzc2Vy
dGlvblN0YXRlKTsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1Jf
RkFNSUxZKQogcHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3MgVmFsaWRpdHkgeyBObywgWWVzLCBV
bnNldCB9OwogICAgIFZhbGlkaXR5IHZhbGlkaXR5KCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGl0
eTsgfQogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0o
SU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9T
X1NJTVVMQVRPUl9GQU1JTFkpCiAgICAgdm9pZCBtYXJrQXNJbnZhbGlkYXRlZCgpOwogCiAgICAg
UmV0YWluUHRyPEJLU1Byb2Nlc3NBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwpAQCAtOTUsNyArOTUs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN0YXRlKEFzc2VydGlvblN0YXRlKSBmaW5hbDsK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1JfRkFNSUxZKQogcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVJ1bkluQmFja2dyb3VuZENvdW50KCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
UmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0aWNzIGZpbGU6ICVzIiwgZmlsZVBhdGgu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
OmV4Y2x1ZGVGcm9tQmFja3VwKCkgY29uc3QKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmll
d0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KIApAQCAtNDEs
NCArNDEsNCBAQAogLSAoaWQpaW5pdFdpdGhDR0ltYWdlOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4p
aW1hZ2UgZGVmYXVsdEFjdGlvbnM6KFJldGFpblB0cjxOU0FycmF5PilhY3Rpb25zIGVsZW1lbnRJ
bmZvOihSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVudEluZm8+KWVsZW1lbnRJbmZvOwogQGVu
ZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250
cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW1hZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tJbWFn
ZVByZXZpZXdWaWV3Q29udHJvbGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ludFNpemUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW5zcGVjdG9ySGln
aGxpZ2h0Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8
VUlLaXQvVUlLaXQuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV0tJbnNwZWN0
b3JIaWdobGlnaHRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpyZXF1ZXN0RQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgYm9vbCYgc3VwcG9ydHMpCiB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3VwcG9y
dHMgPSAhd2l0aEtleWJvYXJkOwogI2Vsc2UKICAgICBzdXBwb3J0cyA9IHRydWU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlCiAgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Npb25zKCkKIHsKICAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
UmVzZXRQZXJtaXNzaW9ucygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByb3ZpZGVy
RGlkQ2hhbmdlUG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogICAgIHZvaWQgcHJv
dmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSA9IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxOCw3ICs1MTgsNyBAQCBib29sIFdlYkluc3BlY3RvclByb3h5Ojpz
aG91bGRPcGVuQXR0YWNoCiAKIC8vIFVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb25zIGNhbiB1c2Ug
dGhlIHN0dWJzIHByb3ZpZGVkIGhlcmUuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmICFXS19BUElfRU5BQkxFRCkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiAhV0tfQVBJX0VOQUJMRUQpCiAKIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKQEAgLTY0Miw2ICs2
NDIsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaEF2CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgIVdLX0FQSV9FTkFCTEVEKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IChQTEFURk9STShNQUMpICYmICFXS19BUElfRU5BQkxFRCkKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTo6fldlYk9wZQogewogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNo
b29zZUZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25JbWFnZURhdGEpCiB7CiAg
ICAgaWYgKCFtX3BhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcs
IGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGNob29z
ZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTcsNyArMTk3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjZW5kaWYKQEAgLTIwOCw3
ICsyMDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIApAQCAtNDA3LDcgKzQwNyw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAg
ICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAgICAsIG1f
bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoKSkKICNlbmRpZgogICAgICwgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKG1f
Y29uZmlndXJhdGlvbi0+aW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCgpKQpAQCAtNDUwLDcg
KzQ1MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIFdlYlBhZ2VQcm94eTo6
cGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
SEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
ID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIpOwogI2VuZGlmCkBAIC00NjksNyArNDY5LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2VJRCwgKnRoaXMpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxlU2NyZWVuU2l6
ZU92ZXJyaWRlKHByZWZlcmVuY2VzU3RvcmUoKS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OmRpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGVLZXkoKSkpOwogI2VuZGlmCiAKQEAg
LTc4Myw3ICs3ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQ
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xp
ZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgotI2lmIFBMQVRG
T1JNKElPUykgJiYgSEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFW
S0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6Y3JlYXRlKCp0aGlzKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcywgKm1fcGxheWJhY2tTZXNzaW9u
TWFuYWdlcik7CiAjZW5kaWYKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFU
eXBlUmVtb3RlTGF5ZXJUcmVlKSB7CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRo
aXMpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNp
YmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5z
ZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CiAjZW5kaWYKQEAgLTk0MSw3ICs5
NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIC8vIE51bGwgb3V0IHJlbGF0
ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0
UmVsYXRlZFBhZ2UobnVsbHB0cik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaG9sZCBhIHByb2Nlc3MgYXNz
ZXJ0aW9uIGFmdGVyIGdldHRpbmcgY2xvc2VkLgogICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxw
dHI7CiAjZW5kaWYKQEAgLTE1MTAsNyArMTUxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphY3Rp
dml0eVN0YXRlRGlkQ2hhbmcKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkTGVhdmVXaW5kb3co
KQogewogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKLSNpZiBQTEFURk9STShJT1MpICYmIEhB
VkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICAvLyBXaGVu
IGxlYXZpbmcgdGhlIGN1cnJlbnQgcGFnZSwgY2xvc2UgdGhlIHZpZGVvIGZ1bGxzY3JlZW4uCiAg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKICAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLT5yZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7CkBAIC0xNjMxLDcgKzE2
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgZWxz
ZSBpZiAoIW1fcGFnZUlzVXNlck9ic2VydmFibGVDb3VudCkKICAgICAgICAgbV9wYWdlSXNVc2Vy
T2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVzZXJPYnNlcnZhYmxl
UGFnZUNvdW50KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMo
QWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CiAgICAgYm9vbCBpc0F1ZGlibGUgPSBt
X2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBp
ZiAoIWlzVmlld1Zpc2libGUoKSAmJiAhbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkg
JiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgIWlzQXVkaWJsZSkgewpAQCAtMTY4Niw3ICsxNjg2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3RpdgogICAgIGlmIChtX3dh
aXRpbmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBIYWlsIE1hcnkg
Y2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUsCiAgICAgLy8gYW5kIGlmIHZpc2li
bGUgd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0aW9uKSAtIGJ1dCB3ZSBzaG91bGQgbmV2
ZXIgYmxvY2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4KICAgICBpZiAoIW1fYWN0aXZpdHlUb2tl
bikgewpAQCAtMTg1MCw3ICsxODUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2YXRlTWVk
aWFTdHJlYW1DYQogICAgIHNldE11dGVkKG1fbXV0ZWRTdGF0ZSAmIH5XZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpDYXB0dXJlRGV2aWNlc0FyZU11dGVkKTsKIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJikKIHsKIH0KQEAgLTM3
MTksNyArMzcxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUK
ICAgICBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOwogICAgIG1fcHJv
Y2Vzcy0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgbV9oYXNSZWNlaXZlZExheWVyVHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRDb21taXRM
b2FkID0gZmFsc2U7CiAgICAgICAgIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklkQWZ0ZXJE
aWRDb21taXRMb2FkID0gZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4o
KmRyYXdpbmdBcmVhKCkpLm5leHRMYXllclRyZWVUcmFuc2FjdGlvbklEKCk7CkBAIC00MzczLDcg
KzQzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEZ1bGxzY3JlZW5JbW1lZGlhCiAgICAg
ICAgIGZ1bGxTY3JlZW5NYW5hZ2VyKCktPmNsb3NlKCk7CiAjZW5kaWYKIAotI2lmIChQTEFURk9S
TShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFW
S0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpKQogICAgICAgICB2aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKCktPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgpA
QCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVy
dCh1aQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsK
ICNlbmRpZgogCkBAIC00NDI3LDcgKzQ0MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdENvbmZpcm0oCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZXhpdEZ1bGxzY3JlZW5JbW1l
ZGlhdGVseSgpOwogI2VuZGlmCiAKQEAgLTQ0NDcsNyArNDQ0Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHUKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBleGl0RnVs
bHNjcmVlbkltbWVkaWF0ZWx5KCk7CiAjZW5kaWYKICAgICAvLyBTaW5jZSBydW5KYXZhU2NyaXB0
UHJvbXB0KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0
aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCkBAIC00NjEwLDcgKzQ2MTAsNyBAQCBJbnRSZWN0IFdl
YlBhZ2VQcm94eTo6c3luY1Jvb3RWaWV3VG9TY3JlCiAgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5y
b290Vmlld1RvU2NyZWVuKHZpZXdSZWN0KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgSW50UG9pbnQmIHdpbmRv
d1BvaW50KQogewogICAgIHdpbmRvd1BvaW50ID0gcGFnZUNsaWVudCgpLmFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KTsKQEAgLTQ2NTEsMTMgKzQ2NTEsMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQogewogICAgIG1fdWlDbGllbnQtPnBhZ2VE
aWRTY3JvbGwodGhpcyk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBEbyBub3QgaGlkZSB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIGlmIHRoZSBz
Y3JvbGxpbmcgd2FzIGNhdXNlZCBieSB0aGUga2V5Ym9hcmQgc2hvd2luZyB1cC4KICAgICBpZiAo
bV9pc0tleWJvYXJkQW5pbWF0aW5nSW4pCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjbG9zZU92ZXJs
YXllZFZpZXdzKCk7CiAjZW5kaWYKIH0KQEAgLTQ5MjAsNyArNDkyMCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KHMKIH0KICNlbmRpZgogICAgIAotI2lmIChQTEFU
Rk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZF
KEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpwbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyKCkKIHsKICAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
LmdldCgpOwpAQCAtNDkzMiw3ICs0OTMyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KiBXZWJQYWdlUHJveAogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViUGFnZVByb3h5OjphbGxvd3NNZWRpYURvY3VtZW50SW5s
aW5lUGxheWJhY2soKSBjb25zdAogewogICAgIHJldHVybiBtX2FsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjazsKQEAgLTUzMDMsNyArNTMwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVDb250ZXh0TWVudUtleUUKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJ
Y29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgU3RyaW5nJiBkaXNwbGF5
U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKQogewogICAgIGlmICghaXNWYWxpZCgp
KQpAQCAtNTk4MCw3ICs1OTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJt
aW5hdGUoUAogCiAgICAgQVNTRVJUKG1faXNWYWxpZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5
UHJlc3N1cmUoKSkgewogICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkpLmhvc3Qo
KS50b1N0cmluZygpKTsKICAgICAgICAgaWYgKCFkb21haW4uaXNFbXB0eSgpKQpAQCAtNjA3MCw3
ICs2MDcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcwogICAg
ICAgICBoYW5kbGVyLT5zdG9wQWxsVGFza3NGb3JQYWdlKCp0aGlzKTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTYx
NTQsNyArNjE1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGUK
IAogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0ID0gSW50UmVjdCgpOwogCi0jaWYgKFBM
QVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhB
VkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQogICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpIHsKICAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fcGxheWJhY2tT
ZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CkBAIC02MTY1LDcgKzYxNjUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlCiAgICAgfQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2ZpcnN0TGF5ZXJUcmVl
VHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZCA9IDA7CiAgICAgbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlID0gVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygpOwogICAgIG1f
aGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBmYWxzZTsKQEAgLTYxNzMsNyArNjE3Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGUKICAgICBtX2lzU2Ny
b2xsaW5nT3Jab29taW5nID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNsaWVudCgp
Lm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dHMoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTYyMzEsNyArNjIzMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXMKICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3Rh
dGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9jZXNzLT5z
dGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2FjdGl2
aXR5VG9rZW4gPSBudWxscHRyOwogI2VuZGlmCiAKQEAgLTYzNDAsNyArNjM0MCw3IEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLnVzZVN5
c3RlbUFwcGVhcmFuY2UgPSBtX3VzZVN5c3RlbUFwcGVhcmFuY2U7CiAgICAgcGFyYW1ldGVycy51
c2VEYXJrQXBwZWFyYW5jZSA9IHVzZURhcmtBcHBlYXJhbmNlKCk7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYXJhbWV0ZXJzLnNjcmVl
blNpemUgPSBzY3JlZW5TaXplKCk7CiAgICAgcGFyYW1ldGVycy5hdmFpbGFibGVTY3JlZW5TaXpl
ID0gYXZhaWxhYmxlU2NyZWVuU2l6ZSgpOwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVTY3JlZW5T
aXplID0gb3ZlcnJpZGVTY3JlZW5TaXplKCk7CkBAIC02NDk0LDcgKzY0OTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgLy8gaWYgdGhlcmUgaXMgbm8g
ZGVsZWdhdGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIGNvbXBsZXRpb25IYW5kbGVyCiAgICAg
Ly8gZm9yIG90aGVyIGNvZGUgcGF0aHMgdG8gdHJ5LgogICAgIG1fdWlDbGllbnQtPmRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFtZSwgb3JpZ2lu
LmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBwYWdl
Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqZnJh
bWUsIG9yaWdpbi5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCkBAIC03MzA2LDcg
KzczMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlkZW9Db250cm9sc01hbmFnZXJECiAKIGJv
b2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigpIGNvbnN0
CiB7Ci0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQogICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIg
JiYgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzMxNSw3ICs3MzE1LDcgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6Omhhc0FjdGl2ZVZpZGVvRm9yQ29udAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKSBjb25zdAogewotI2lmIChQTEFURk9STShJT1MpICYm
IEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBp
ZiAobV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXItPnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCk7CiAjZW5kaWYKQEAgLTczMzAsNyAr
NzMzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWUKIAogYm9v
bCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25z
dAogewotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
ICYmIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVs
bHNjcmVlbigpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NDk1LDcgKzc0OTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzaWduSW5wdXRFbGVtZW50CiAgICAgbV91aUNsaWVu
dC0+ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKCp0aGlzLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKIH0KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQogewogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNl
c3Npb25NYW5hZ2VyKCkuYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMsIGNvbnRl
eHRJZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Lmg+CiAjZW5kaWYKQEAgLTMw
NSw3ICszMDUsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBBdHRyaWJ1dGVkCiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2w+IEZvbnRB
dFNlbGVjdGlvbkNhbGxiYWNrOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdD4gR2VzdHVyZUNhbGxiYWNr
OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCwgdWludDMyX3Q+IFRvdWNoZXNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiY+IFNlbGVjdGlvblJlY3RzQ2Fs
bGJhY2s7CkBAIC0zMzUsNyArMzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgICwgcHVibGljIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50CiAjZW5kaWYKLSNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwg
cHVibGljIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKICNlbmRpZgogICAg
ICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKQEAgLTQwMiwxMiArNDAyLDEyIEBA
IHB1YmxpYzoKICAgICBBUEk6OkZ1bGxzY3JlZW5DbGllbnQmIGZ1bGxzY3JlZW5DbGllbnQoKSBj
b25zdCB7IHJldHVybiAqbV9mdWxsc2NyZWVuQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRGdWxsc2Ny
ZWVuQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+JiYpOwogI2Vu
ZGlmCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQogICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogcGxh
eWJhY2tTZXNzaW9uTWFuYWdlcigpOwogICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSog
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGFsbG93c01lZGlhRG9jdW1lbnRJbmxp
bmVQbGF5YmFjaygpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrKGJvb2wpOwogI2VuZGlmCkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogICAgIHZvaWQgZm9udEF0dHJpYnV0ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpGb250QXR0
cmlidXRlcyYsIENhbGxiYWNrSUQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0K
ICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29u
dGVudFJlY3QoKTsgfQpAQCAtOTY5LDcgKzk2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxD
aGFuZ2VQcm9jZXNzSXNSZXNwb25zaXZlKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9jZXNzSXNS
ZXNwb25zaXZlKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCk7CiAgICAgdm9pZCBwcm9j
ZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKICNlbmRpZgpAQCAtMTAxOSw3ICsxMDE5LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5n
QW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmlu
ZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0xMDU1LDcgKzEw
NTUsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRv
SW1hZ2UoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUmVmPEltYWdlQ2FsbGJhY2s+JiYpOwog
ICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYs
IHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJik7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdWludDMyX3Qg
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CiAg
ICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKQEAgLTExMTEsNyArMTExMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBmbGFnKTsK
ICAgICBib29sIHN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoKSB7IHJldHVybiBtX3N1cHByZXNz
VmlzaWJpbGl0eVVwZGF0ZXM7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKIAog
ICAgIHZvaWQgcG90ZW50aWFsVGFwQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgdWludDY0X3QmIHJlcXVlc3RJRCk7CkBAIC0xMjYyLDExICsxMjYyLDExIEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlKiB2YWxpZGF0aW9uQnViYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWxpZGF0aW9uQnViYmxlLmdldCgpOyB9IC8vIEZvciB0ZXN0aW5nLgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIHNldElzS2V5Ym9hcmRBbmltYXRpbmdJbihib29sIGlzS2V5Ym9hcmRBbmltYXRpbmdJbikg
eyBtX2lzS2V5Ym9hcmRBbmltYXRpbmdJbiA9IGlzS2V5Ym9hcmRBbmltYXRpbmdJbjsgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0
X3QpOwogICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3Qp
OwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHVpbnQ2NF90LCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRJc1Jlc2l6YWJsZShib29sIGlzUmVzaXphYmxlKTsKICAgICB2
b2lkIHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZp
ZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpEZWxheWVk
UmVwbHkmJik7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAg
dm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0KTsKICNlbmRpZgpAQCAtMTY2Niw3
ICsxNjY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFu
Z2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGdlc3R1cmVDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHRv
dWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGF1dG9jb3JyZWN0aW9uRGF0
YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMsIENhbGxiYWNr
SUQpOwpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVkaXRhYmxl
RWxlbWVudElzRm9jdXNlZChib29sKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgc2NyZWVuU2l6ZSgpOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3Jl
ZW5TaXplKCk7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpOwpA
QCAtMTc0MCw3ICsxNzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKTsKICAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CiAgICAg
dm9pZCBhc3Npc3RlZE5vZGVJbmZvcm1hdGlvbkNhbGxiYWNrKGNvbnN0IEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uJiwgQ2FsbGJhY2tJRCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CkBAIC0xOTE0LDEy
ICsxOTE0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVsbHNjcmVl
bkNsaWVudD4gbV9mdWxsc2NyZWVuQ2xpZW50OwogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9T
KSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAg
ICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOwogICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IG1fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyBtX2xhc3RW
aXNpYmxlQ29udGVudFJlY3RVcGRhdGU7CiAgICAgdWludDY0X3QgbV9maXJzdExheWVyVHJlZVRy
YW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQgeyAwIH07CiAgICAgaW50MzJfdCBtX2Rldmlj
ZU9yaWVudGF0aW9uIHsgMCB9OwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtX2FjdGl2aXR5U3RhdGU7
CiAgICAgYm9vbCBtX3ZpZXdXYXNFdmVySW5XaW5kb3cgeyBmYWxzZSB9OwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9hbGxvd3NNZWRpYURv
Y3VtZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNSdW5zQXRG
b3JlZ3JvdW5kUHJpb3JpdHkgeyBmYWxzZSB9OwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKQEAgLTIyMjAsMTEgKzIyMjAsMTEg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxl
bWVudHMgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9yZXF1aXJlc1Rhcmdl
dE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZUFzc2lzdGFuY2VB
cmd1bWVudHM+IG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50czsKICAgICBib29sIG1f
Zm9yY2VBbHdheXNVc2VyU2NhbGFibGUgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIERpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAg
ICAgRGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IHR5cGUsIGJvb2wgaGFuZGxlZCkKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNldEN1cnNvcihXZWJD
b3JlOjpDdXJzb3IgY3Vyc29yKQogICAgIFNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhi
b29sIGhpZGRlblVudGlsTW91c2VNb3ZlcykKICNlbmRpZgpAQCAtNjgsNyArNjgsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50
KSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgd2luZG93UG9pbnQpCiAgICAgUm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCByZWN0KSAtPiAoV2ViQ29yZTo6SW50UmVj
dCBzY3JlZW5GcmFtZSkKICNlbmRpZgpAQCAtMTg3LDcgKzE4Nyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogICAgIEZvbnRBdHRyaWJ1dGVzQ2FsbGJh
Y2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCkBAIC00MDAsNyArNDAwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVp
bnQ2NF90IHdpbmRvd0lEKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKQogICAgIFJlc3Rv
cmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3JvbGxQb3Np
dGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6OlJlY3RFZGdl
czxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKICAgICBSZXN0b3Jl
UGFnZUNlbnRlckFuZFNjYWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gdW5v
YnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQpAQCAtNDg5LDcgKzQ4OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBDb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2Vi
Q29yZTo6VVJMIHVybCwgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+
IG5vdGlmaWNhdGlvbnMpCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHVpbnQ2
NF90IGNsaWVudElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFz
VmlkZW8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHR5
cGVzKTsKICAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQo
c3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgdXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUp
CiAgICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkV2ViQ29udGVudCBjb250ZW50LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgV3JpdGVJ
bWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBhc3RlYm9h
cmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
NyArMjQ1LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAg
ICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyKFt0aGlzXShSZWZD
b3VudGVyRXZlbnQpIHsgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOyB9KQogICAgICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJldlYlByb2Nlc3NQb29sOjp1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9J
bmNyZWFzZUxpbWl0KQogICAgICwgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25U
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NlcykKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZD
b3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICAgICAsIG1fYmFj
a2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRl
UHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgpAQCAtNDk4LDcgKzQ5OCw3IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9jb25maWd1cmF0
aW9uLT5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFN0cmluZyBj
b29raWVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y29va2llU3RvcmFnZURpcmVjdG9yeSgpOwog
ICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb29raWVTdG9y
YWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwpAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxp
emVOZXdXZWJQcm8KICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxl
ZEZyb21EZWZhdWx0cygpOwogI2VuZGlmCiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFUKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBhdXRvIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uID0gWyZdIHsKICAgICAgICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCkpIHsKQEAgLTIwMTAsNyArMjAxMCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBvc3RNZXNzYWdlVG9TZXJ2aWMKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVpbnN0
YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXdO
ZXR3b3JrUHJvY2Vzc1Byb3h5KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZDsgdGFrZSBuZXcg
dG9rZW5zIGZvciB0aGUgbmV3IG5ldHdvcmsgcHJvY2Vzcy4KICAgICBpZiAobV9iYWNrZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3
b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQoKSB7IHJl
dHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNl
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQoYm9vbCBmbGFnKTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMoKTsKICNlbmRpZgogCkBAIC00
MzQsNyArNDM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nl
c3NQb29sQ3JlYXRpb25MaXN0ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYp
OwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIo
dWludDY0X3QgaWRlbnRpZmllcik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGZvcmVncm91bmRXZWJQ
cm9jZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1f
Zm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAgICAgQmFja2dyb3VuZFdl
YlByb2Nlc3NUb2tlbiBiYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyByZXR1cm4g
QmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbihtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci5j
b3VudCgpKTsgfQogI2VuZGlmCkBAIC01MDYsMTEgKzUwNiwxMSBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGxhbmd1YWdlQ2hhbmdlZCh2b2lkKiBjb250ZXh0KTsKICAgICB2b2lkIGxhbmd1
YWdlQ2hhbmdlZCgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5n
IHBhcmVudEJ1bmRsZURpcmVjdG9yeSgpIGNvbnN0OwogICAgIFN0cmluZyBuZXR3b3JraW5nQ2Fj
aGVzRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHdlYkNvbnRlbnRDYWNoZXNEaXJlY3Rv
cnkoKSBjb25zdDsKQEAgLTY4NCw3ICs2ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcg
dWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwogICAgICAgICBTdHJpbmcgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJp
bmcgY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgY29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdlUHJveHkqPj4gbV9zZXNzaW9uVG9QYWdl
c01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlciBtX2ZvcmVn
cm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIg
bV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9y
ZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkT3JDaGVja0Rpc2FibGVkKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTElL
RUxZKFJ1bkxvb3A6OmlzTWFpbigpKSB8fCAhbGlua2VkT25PckFmdGVyKFNES1ZlcnNpb246OkZp
cnN0V2l0aE1haW5UaHJlYWRSZWxlYXNlQXNzZXJ0aW9uSW5XZWJQYWdlUHJveHkpOwogI2VsaWYg
UExBVEZPUk0oTUFDKQogICAgIHJldHVybiBMSUtFTFkoUnVuTG9vcDo6aXNNYWluKCkpIHx8ICFs
aW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RXaXRoTWFpblRocmVhZFJlbGVhc2VBc3Nl
cnRpb25JbldlYlBhZ2VQcm94eSk7CkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogCiAgICAgbV9wcm9jZXNzUG9vbC0+cHJvY2Vzc0Rp
ZEZpbmlzaExhdW5jaGluZyh0aGlzKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChjb25uZWN0aW9uKCkpIHsKICAgICAgICAgaWYgKHhwY19j
b25uZWN0aW9uX3QgeHBjQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigp
KQogICAgICAgICAgICAgbV90aHJvdHRsZXIuZGlkQ29ubmVjdFRvUHJvY2Vzcyh4cGNfY29ubmVj
dGlvbl9nZXRfcGlkKHhwY0Nvbm5lY3Rpb24pKTsKQEAgLTExNDgsNyArMTE0OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQcm9jZXNzU3UKIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGVudW0gRm9yZWdyb3VuZFdlYlByb2Nlc3ND
b3VudGVyVHlwZSB7IH07CiB0eXBlZGVmIFJlZkNvdW50ZXI8Rm9yZWdyb3VuZFdlYlByb2Nlc3ND
b3VudGVyVHlwZT4gRm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwogdHlwZWRlZiBGb3JlZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXI6OlRva2VuIEZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW47CkBA
IC0zNjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJPZlRpbWVzU3VkZGVu
VGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVy
OwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5G
b3JIb2xkaW5nTG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgRm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbiBtX2ZvcmVncm91bmRUb2tl
bjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fYmFja2dyb3VuZFRva2VuOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVySW50ZXJuYWwuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU01B
QykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFDKQogCiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGUuaCIKQEAg
LTExNiw0ICsxMTYsNCBAQCAtICh2b2lkKWRyYXdJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VB
CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU01BQykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFDKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXJJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgIl9XS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NNQUMpCiAKIEBpbnRlcmZhY2UgVUlQcmlu
dEZvcm1hdHRlciAoKQogLSAoQ0dSZWN0KV9wYWdlQ29udGVudFJlY3Q6KEJPT0wpZmlyc3RQYWdl
OwpAQCAtNDEsNCArNDEsNCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BE
RkRvY3VtZW50UmVmIF93a19wcmludGVkRG9jdW1lbnQ7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpICYmICFQTEFURk9STShJT1NNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKElPU01BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+
IFBhZ2VDb25maWd1cmF0aW9uCiAgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3JlID0gdGhpcy0+
bV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhpcy0+bV9zZXNz
aW9uSUQ7CiAgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29weS0+bV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eTsKICNlbmRpZgogICAgIGNvcHktPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5h
YmxlZCA9IHRoaXMtPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpIHsgcmV0dXJu
IG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0KICAgICB2b2lkIHNl
dFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKGJvb2wgdHJlYXRzU0hBMVNp
Z25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpIHsgbV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNh
dGVzQXNJbnNlY3VyZSA9IHRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOyB9
IAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9v
bCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5c1J1bnNB
dEZvcmVncm91bmRQcmlvcml0eTsgfQogICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9yZWdyb3Vu
ZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1fYWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5
OyB9IAogI2VuZGlmCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKIAogICAgIGJvb2wgbV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNh
dGVzQXNJbnNlY3VyZSB7IHRydWUgfTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5IHsg
ZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVk
IHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmPFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGNvcHktPm1fYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5ID0gdGhpcy0+bV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHk7CiAg
ICAgY29weS0+bV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uID0gdGhpcy0+bV9zaG91
bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOwogICAgIGNvcHktPm1fc2hvdWxkQ2FwdHVyZUF1
ZGlvSW5VSVByb2Nlc3MgPSB0aGlzLT5tX3Nob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNvcHktPm1f
Y3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gdGhpcy0+bV9jdERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGU7CiAjZW5kaWYKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9
IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzOyB9CiAgICAgdm9pZCBz
ZXRTaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2Vzcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0lu
VUlQcm9jZXNzKSB7IG1fc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MgPSBzaG91bGRDYXB0
dXJlQXVkaW9JblVJUHJvY2VzczsgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN0RGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOyB9
CiAgICAgdm9pZCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV1RGOjpTdHJp
bmcmIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSkgeyBtX2N0RGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSA9IGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsgfQogI2VuZGlmCkBAIC0yMDEs
NyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWlu
Z0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tV2ViQ29udGVudFNl
cnZpY2VCdW5kbGVJZGVudGlmaWVyOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgV1RGOjpTdHJpbmcgbV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGU7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFT
UyBOU0FycmF5OwogT0JKQ19DTEFTUyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKIE9CSkNfQ0xB
U1MgVUlWaWV3Q29udHJvbGxlcjsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSopIHsgfQogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9M
SU5LUykKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxl
bWVudChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldLSW5zcGVjdG9yLmgiCiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKQEAgLTEzMSw0ICsxMzEsNCBAQCB2b2lkIFdLSW5z
cGVjdG9yVG9nZ2xlRWxlbWVudFNlbGVjdGlvbihXCiAgICAgdG9JbXBsKGluc3BlY3RvclJlZikt
PnRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzYsNyAr
MjY3Niw3IEBAIHZvaWQgV0tQYWdlU2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoV0sKIAogdm9p
ZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9v
bCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0b0ltcGwocGFnZSktPnNldEZvcmNlQWx3YXlzVXNl
clNjYWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw3IEBACiAKIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJS
ZWYpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gV2ViQ29yZTo6UGx1Z2luQmxhY2tsaXN0
Ojppc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSgoX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKFdL
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdJbkJ1bmRsZUlkZW50
aWZpZXJSZWYpKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2Vsc2UKICNpbXBvcnQgPENvcmVT
ZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlm
CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcgogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBh
cHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55
IG1vcmUuCiAgICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBk
YXRhIHdoZW4gdXBncmFkaW5nLgogICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0
IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3Rv
cmUgd2l0aApAQCAtMTE1LDcgKzExNSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmxlZ2FjeURlZmEKICAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl07CiAgICAgaWYgKCFhcHBOYW1lKQogICAgICAgICBhcHBOYW1l
ID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBxdWlyayB1c2Vk
IHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQg
ZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCiAgICAgLy8gUHJlc2VydmluZyBpdCBh
dm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgogICAgIGlmIChX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NB
cHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhCiAgICAgCiAgICAgQVNTRVJUKGFwcE5hbWUpOwog
ICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5T
U3RyaW5nICpjYWNoZURpciA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcyJdOwogI2Vsc2UKICAgICBjaGFyIGNhY2hlRGly
ZWN0b3J5W01BWFBBVEhMRU5dOwpAQCAtMjAxLDcgKzIwMSw3IEBAIFdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmxlZ2FjeURlZmEKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXVEY6OlN0cmluZyBw
YXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwogICAgIGlmIChwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3
IEBAIHN0YXRpYyBXS05hdmlnYXRpb25UeXBlIHRvV0tOYXZpZ2F0aW9uVHkKICAgICByZXR1cm4g
V0tOYXZpZ2F0aW9uVHlwZU90aGVyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUgdG9XS1N5bnRoZXRp
Y0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50
aGV0aWNDbGlja1R5cGUpCiB7CiAgICAgc3dpdGNoIChzeW50aGV0aWNDbGlja1R5cGUpIHsKQEAg
LTEyNyw3ICsxMjcsNyBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7CiAgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5cGUgPSAl
bGQ7IHN5bnRoZXRpY0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24geCA9ICUuMmYgeSA9ICUuMmYg
cmVxdWVzdCA9ICVAOyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIsIE5TU3Ry
aW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLAogICAgICAgICAobG9uZylzZWxmLm5hdmln
YXRpb25UeXBlLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUsIHNlbGYuX2NsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXMueCwgc2VsZi5fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdD
b29yZGluYXRlcy55LAogI2Vsc2UKICAgICAgICAgMEwsIDAuMCwgMC4wLApAQCAtMTU1LDcgKzE1
NSw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICByZXR1cm4gX25hdmlnYXRpb25B
Y3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xp
Y3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtIChXS1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhldGljQ2xp
Y2tUeXBlCiB7CiAgICAgcmV0dXJuIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoX25hdmlnYXRpb25B
Y3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJldmlld0FjdGlvbkl0
ZW1JZGVudGlmaWVycy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogCi0jaWYgV0tfQVBJX0VOQUJMRUQg
JiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIE5TU3RyaW5nICogY29uc3QgV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJPcGVu
ID0gQCJXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllck9wZW4iOwogTlNTdHJpbmcgKiBjb25z
dCBXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllckFkZFRvUmVhZGluZ0xpc3QgPSBAIldLUHJl
dmlld0FjdGlvbkl0ZW1JZGVudGlmaWVyQWRkVG9SZWFkaW5nTGlzdCI7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmV2aWV3RWxlbWVudEluZm8ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJldmlld0VsZW1l
bnRJbmZvLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmV2aWV3RWxlbWVudEluZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3RWxlbWVudElu
Zm9JbnRlcm5hbC5oIgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lm
IFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbXBsZW1lbnRhdGlv
biBXS1ByZXZpZXdFbGVtZW50SW5mbwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lz
dGVtSW50ZXJmYWNlLmg+CkBAIC01OSw5ICs1OSw5IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAog
ICAgIFdlYWtPYmpDUHRyPGlkIDxXS1Byb2Nlc3NHcm91cERlbGVnYXRlPj4gX2RlbGVnYXRlOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWlu
UHRyPFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7Ci0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAK
IHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNvbm5lY3Rpb24oV0tDb250ZXh0UmVmLCBXS0Nvbm5lY3Rp
b25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTIzNiwxNCAr
MjM2LDE0IEBAIC0gKHZvaWQpX3NldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2EKICAgICBf
cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6
OldlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSkucHRyKCksIGhvc3QpOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgKilfZ2VvbG9jYXRpb25Qcm92aWRlcgogewogICAgIGlmICghX2dlb2xv
Y2F0aW9uUHJvdmlkZXIpCiAgICAgICAgIF9nZW9sb2NhdGlvblByb3ZpZGVyID0gYWRvcHROUyhb
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBhbGxvY10gaW5pdFdpdGhQcm9jZXNzUG9vbDoqX3By
b2Nlc3NQb29sLmdldCgpXSk7CiAgICAgcmV0dXJuIF9nZW9sb2NhdGlvblByb3ZpZGVyLmdldCgp
OwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiBAZW5kCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCAiV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLmgiCiAjZW5kaWYKQEAgLTY0LDEwICs2NCwxMCBAQCBzdGF0aWMgV0tQcm9jZXNz
UG9vbCAqc2hhcmVkUHJvY2Vzc1Bvb2w7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2Fk
RGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0ZTsKIAogICAgIFJldGFpblB0cjxfV0tBdXRvbWF0
aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNzaW9uOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1M+IF9nZW9sb2NhdGlvblByb3ZpZGVyOwogICAgIFJldGFpblB0cjxpZCA8X1dLR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlcj4+IF9jb3JlTG9jYXRpb25Qcm92aWRlcjsKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAgLTEzNCwxNCArMTM0LDE0IEBAIC0gKEFQSTo6T2Jq
ZWN0JilfYXBpT2JqZWN0CiAgICAgcmV0dXJuICpfcHJvY2Vzc1Bvb2w7CiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyAqKV9nZW9sb2NhdGlvblByb3ZpZGVyCiB7CiAgICAgaWYgKCFfZ2VvbG9jYXRpb25Q
cm92aWRlcikKICAgICAgICAgX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBhZG9wdE5TKFtbV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIGFsbG9jXSBpbml0V2l0aFByb2Nlc3NQb29sOipfcHJvY2Vzc1Bv
b2xdKTsKICAgICByZXR1cm4gX2dlb2xvY2F0aW9uUHJvdmlkZXIuZ2V0KCk7CiB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBlbmQK
IApAQCAtNDk5LDcgKzQ5OSw3IEBAIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwg
KilzZXIKIAogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wbHVnaW5Qcm9jZXNzZXMoKS5zaXplKCk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIC0gKHZvaWQpX3NldEFsbG93
c0FueVNTTENlcnRpZmljYXRlRm9yU2UKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25Qcm92aWRlcj4pX2NvcmVMb2NhdGlvblByb3ZpZGVyCiB7CiAgICAgcmV0dXJuIF9jb3JlTG9j
YXRpb25Qcm92aWRlci5nZXQoKTsKQEAgLTU2Miw3ICs1NjIsNyBAQCAtICh2b2lkKV9zZXRDb3Jl
TG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKICAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSBj
b3JlTG9jYXRpb25Qcm92aWRlcjsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSw3ICsxMjksNyBAQAogI2ltcG9ydCAiV0tEYXRhRGV0ZWN0b3JUeXBlc0lu
dGVybmFsLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKICNp
bXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAjaW1wb3J0ICJQcm9jZXNz
VGhyb3R0bGVyLmgiCkBAIC0xNjgsOSArMTY4LDkgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9y
b290QW5jZXN0b3JWaWV3QwogLSAoVUlWaWV3Q29udHJvbGxlciAqKV92aWV3Q29udHJvbGxlckZv
clN1cHBvcnRlZEludGVyZmFjZU9yaWVudGF0aW9uczsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3QgdWludDMyX3QgZmly
c3RTREtWZXJzaW9uV2l0aExpbmtQcmV2aWV3RW5hYmxlZEJ5RGVmYXVsdCA9IDB4QTAwMDA7CiBz
dGF0aWMgY29uc3QgU2Vjb25kcyBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dn
aW5nID0gMV9zOwogI2VuZGlmCkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsYmFyTwogCiAgICAgc3RkOjpvcHRpb25hbDxCT09MPiBfcmVzb2x1
dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAgICAgUmV0YWlu
UHRyPFdLU2Nyb2xsVmlldz4gX3Njcm9sbFZpZXc7CkBAIC0zODIsNyArMzgyLDcgQEAgLSAoQk9P
TClfaXNWYWxpZAogICAgIHJldHVybiBfcGFnZSAmJiBfcGFnZS0+aXNWYWxpZCgpOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgaW50MzJf
dCBkZXZpY2VPcmllbnRhdGlvbkZvclVJSW50ZXJmYWNlT3JpZW50YXRpb24oVUlJbnRlcmZhY2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CkBA
IC00NjgsNyArNDY4LDcgQEAgLSAoQk9PTClfaXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUK
IAogc3RhdGljIGJvb2wgc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8oKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBi
b29sIHNob3VsZFJlcXVpcmVVc2VyR2VzdHVyZVRvTG9hZFZpZGVvID0gZHlsZF9nZXRfcHJvZ3Jh
bV9zZGtfdmVyc2lvbigpID49IERZTERfSU9TX1ZFUlNJT05fMTBfMDsKICAgICByZXR1cm4gc2hv
dWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW87CiAjZWxzZQpAQCAtNTE4LDcgKzUxOCw3
IEBAIHN0YXRpYyB2b2lkIHZhbGlkYXRlKFdLV2ViVmlld0NvbmZpZ3VyYXQKICAgICBpZiAoIWNv
bmZpZ3VyYXRpb24uX3Zpc2l0ZWRMaW5rU3RvcmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJjb25maWd1cmF0aW9uLl92aXNp
dGVkTGlua1N0b3JlIGlzIG5pbCJdOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghY29uZmlndXJhdGlvbi5fY29udGVudFByb3ZpZGVy
UmVnaXN0cnkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJjb25maWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSBp
cyBuaWwiXTsKICNlbmRpZgpAQCAtNTk1LDcgKzU5NSw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhl
IFZpZXcncyBpbml0aWFsaXphdGkKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rp
b25LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShjb252ZXJ0U3lzdGVt
TGF5b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0lubGluZU1lZGlh
UGxheWJhY2tdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5z
ZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0Fm
dGVyRnVsbHNjcmVlbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIF9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVu
XSkpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNLZXk6OmlubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0
cmlidXRlXSkpOwpAQCAtNjE3LDcgKzYxNyw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcn
cyBpbml0aWFsaXphdGkKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjptZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2Fs
bHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5XSkpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hdHRhY2htZW50RWxlbWVudEVuYWJsZWRdKSk7CiAK
LSNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
ZGF0YURldGVjdG9yVHlwZXNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJvbVdLRGF0YURldGVjdG9yVHlwZXMoW19jb25maWd1
cmF0aW9uIGRhdGFEZXRlY3RvclR5cGVzXSkpKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtNjM4LDEyICs2MzgsMTIgQEAgICAgIC8vIFdlIGFyZSBp
biB0aGUgVmlldydzIGluaXRpYWxpemF0aQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeUVuY3J5cHRl
ZE1lZGlhQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRdKSk7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
IVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5T
ZXJ2aWNlV29ya2VycyIpKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2Vyc0VuYWJs
ZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShmYWxzZSkpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBD
R1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CiAgICAgX3Njcm9sbFZpZXcgPSBhZG9wdE5TKFtb
V0tTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kc10pOwogICAgIFtfc2Nyb2xs
VmlldyBzZXRJbnRlcm5hbERlbGVnYXRlOnNlbGZdOwpAQCAtNzMxLDcgKzczMSw3IEBAICAgICAv
LyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0aWFsaXphdGkKIAogICAgIF9pY29uTG9hZGluZ0Rl
bGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNl
bGYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W3NlbGYgX3NldFVwU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50XTsKICNlbmRpZgogCkBAIC03
NDAsNyArNzQwLDcgQEAgICAgIC8vIFdlIGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxpemF0aQog
CiAgICAgcGFnZVRvVmlld01hcCgpLmFkZChfcGFnZS5nZXQoKSwgc2VsZik7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfZHJhZ0ludGVyYWN0aW9u
UG9saWN5ID0gX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5RGVmYXVsdDsKIAogICAgIF90aW1lT2ZS
ZXF1ZXN0Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CkBAIC03NTAsMTIgKzc1MCwxMiBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3J3MgaW5pdGlh
bGl6YXRpCiAjZWxzZQogICAgIF9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0ID0gTk87CiAjZW5k
aWYKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIH0KIAogLSAodm9pZClfc2V0VXBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJCYWNrZ3Jv
dW5kVGFza0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbV2ViQmFja2dyb3VuZFRhc2tDb250cm9s
bGVyIHNoYXJlZENvbnRyb2xsZXJdOwogICAgIGlmIChjb250cm9sbGVyLmJhY2tncm91bmRUYXNr
U3RhcnRCbG9jaykKICAgICAgICAgcmV0dXJuOwpAQCAtODI2LDcgKzgyNiw3IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIFtfdGV4dEZpbmRlckNsaWVudCB3aWxsRGVzdHJveVZpZXc6c2VsZl07CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFtfY29udGVudFZpZXcgX3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmpl
Y3RSZWdpc3RyeSkKQEAgLTgzNSw3ICs4MzUsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIF9w
YWdlLT5jbG9zZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW19yZW1vdGVPYmplY3RSZWdpc3RyeSBfaW52YWxpZGF0ZV07CiAgICAgW1tfY29u
ZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIHJlbW92ZVBhZ2U6Kl9wYWdlXTsK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
OnNlbGZdOwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjooVwogICAgIH0pOwogfQogCi0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlv
bjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoVUlJbWFnZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CiAgICAgQ0dSZWN0IHJlY3RJblZpZXdDb29yZGluYXRlcyA9IHNuYXBzaG90Q29uZmln
dXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlvbi5yZWN0KSA/IHNu
YXBzaG90Q29uZmlndXJhdGlvbi5yZWN0IDogc2VsZi5ib3VuZHM7CkBAIC0xMTc2LDcgKzExNzYs
NyBAQCAtIChCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHJldHVybiBfaW1wbC0+YWxsb3dzTGlua1ByZXZpZXcoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykK
KyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIF9hbGxvd3NMaW5rUHJldmll
dzsKICNlbmRpZgogfQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgLSAodm9pZClzZXRBbGxvd3NMaW5r
UHJldmlldzooQk9PTClhbGxvdwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxs
b3dzTGlua1ByZXZpZXcoYWxsb3dzTGlua1ByZXZpZXcpOwogICAgIHJldHVybjsKLSNlbGlmIFBM
QVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9hbGxvd3NM
aW5rUHJldmlldyA9PSBhbGxvd3NMaW5rUHJldmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MTk4LDcgKzExOTgsNyBAQCAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93
CiAgICAgZWxzZQogICAgICAgICBbX2NvbnRlbnRWaWV3IF91bnJlZ2lzdGVyUHJldmlld107CiAj
ZW5kaWYgLy8gSEFWRShMSU5LX1BSRVZJRVcpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIC0gKENHU2l6ZSlfdmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cwpAQCAtMTI4MCw3ICsxMjgwLDcgQEAgLSAodm9pZClfZGlkUmVt
b3ZlQXR0YWNobWVudDooQVBJOjpBdHRhYwogCiAjcHJhZ21hIG1hcmsgaU9TLXNwZWNpZmljIG1l
dGhvZHMKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAt
IChfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kpX2RyYWdJbnRlcmFjdGlvblBvbGljeQogewpAQCAt
MzIyNSw3ICszMjI1LDcgQEAgLSAoQk9PTClfaGF2ZVNldE9ic2N1cmVkSW5zZXRzCiAgICAgcmV0
dXJuIF9oYXZlU2V0T2JzY3VyZWRJbnNldHM7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0VWRU5UUykKIApAQCAtNDQ3Niw3ICs0NDc2LDcgQEAgLSAodm9pZClfc2V0U2hvdWxkU3Vw
cHJlc3NGaXJzdFJlc3BvbmRlcgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQgKF4pKHZvaWQpKV9yZXRhaW5BY3RpdmVGb2N1
c2VkU3RhdGUKIHsKICAgICArK19hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsKQEAgLTQ5
NTQsNyArNDk1NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmQK
IAogLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25z
OihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CiB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9j
dXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9jb3Vu
dFN0cmluZ01hdGNoZXM6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDptYXhDb3VudF07
CiAgICAgICAgIHJldHVybjsKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIC0gKHZvaWQpX2NvdW50U3Ry
aW5nTWF0Y2hlczooTlNTdHJpbmcgKikKIAogLSAodm9pZClfZmluZFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50
ZWdlciltYXhDb3VudAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChfY3VzdG9tQ29udGVudFZpZXcpIHsKICAgICAgICAgW19jdXN0b21Db250
ZW50VmlldyB3ZWJfZmluZFN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1h
eENvdW50XTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk3Niw3ICs0OTc2LDcgQEAgLSAodm9pZClf
ZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbwogCiAtICh2b2lkKV9oaWRlRmluZFVJCiB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9j
dXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRl
RmluZFVJXTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTE4Niw3ICs1MTg2LDcgQEAgLSAoQk9PTClf
c2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbgogCiAtIChOU0FycmF5ICopX3Njcm9sbFBl
cmZvcm1hbmNlRGF0YQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YSogc2Nyb2xsUGVyZkRhdGEgPSBfcGFnZS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkp
CiAgICAgICAgIHJldHVybiBzY3JvbGxQZXJmRGF0YS0+ZGF0YSgpOwogI2VuZGlmCkBAIC01MTk3
LDcgKzUxOTcsNyBAQCAtIChOU0FycmF5ICopX3Njcm9sbFBlcmZvcm1hbmNlRGF0YQogCiAtIChC
T09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gX3BhZ2UtPmFsbG93c01l
ZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjaygpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CkBAIC01
MjA2LDcgKzUyMDYsNyBAQCAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJh
CiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazooQk9PTClm
bGFnCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
X3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhmbGFnKTsKICNlbmRp
ZgogfQpAQCAtNTI3MSw3ICs1MjcxLDcgQEAgLSAodm9pZClfc2V0UGFnZU11dGVkOihfV0tNZWRp
YU11dGVkU3RhdAogCiAjcHJhZ21hIG1hcmsgaU9TLXNwZWNpZmljIG1ldGhvZHMKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogLSAodm9pZClyZW1vdmVGcm9tU3VwZXJ2aWV3CkBAIC01NzM3LDcgKzU3Mzcs
NyBAQCAtICh2b2lkKXNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTooVUlTCiAgICAgX3BhZ2Ut
PnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odG9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKGNvbnRlbnRBdHRyaWJ1dGUpKTsKIH0KIAotI2Vsc2UgLy8gI2lmIFBMQVRGT1JNKElP
UykKKyNlbHNlIC8vICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjcHJhZ21hIG1hcmsgLSBP
UyBYLXNwZWNpZmljIG1ldGhvZHMKIApAQCAtNjAxNCwxNCArNjAxNCwxNCBAQCAtIChOU0RpY3Rp
b25hcnkgKilfY29udGVudHNPZlVzZXJJbnRlcmZhCiAgICAgICAgIHJldHVybiBAeyB1c2VySW50
ZXJmYWNlSXRlbTogQHsgQCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJmb250U2l6
ZSI6IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmZvbnRTaXplXSB9IH07CiAgICAgfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFtf
Y29udGVudFZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcgKil1c2Vy
SW50ZXJmYWNlSXRlbV07CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfcmVxdWVz
dEFjdGl2YXRlZEVsZW1lbnRBdFBvc2l0aW9uOihDR1BvaW50KXBvc2l0aW9uIGNvbXBsZXRpb25C
bG9jazoodm9pZCAoXikoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKikpYmxvY2sKIHsKICAgICBh
dXRvIGluZm9SZXF1ZXN0ID0gV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdChX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pKTsKQEAgLTYyODYsNyArNjI4Niw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm9wZXJ0aWVzT2ZMYXllcldpdGgKICAgICB9OwogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpZiBQTEFURk9STShNQUMpCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9X
S1dlYlZpZXcKQEAgLTY1MjgsNyArNjUyOCw3IEBAIC0gKENHRmxvYXQpX3BhZ2VTY2FsZQogCiAt
ICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOihCT09MKXdpdGhvdXRX
YWl0aW5nRm9yUGFpbnRpbmcgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTooQk9PTCl3
aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50
Vmlld10pIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgdXBkYXRlQmxvY2spOwogICAgICAgICByZXR1cm47CkBAIC02NTQ1LDcgKzY1NDUsNyBAQCAt
ICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uCiAgICAgICAgIGlmICghdXBk
YXRlQmxvY2tDb3B5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmICghd2l0aG91dFdhaXRpbmdGb3JB
bmltYXRlZFJlc2l6ZSAmJiBzdHJvbmdTZWxmLT5fZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAh
PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKSB7CiAgICAg
ICAgICAgICBzdHJvbmdTZWxmLT5fY2FsbGJhY2tzRGVmZXJyZWREdXJpbmdSZXNpemUuYXBwZW5k
KFt1cGRhdGVCbG9ja0NvcHldIHsKICAgICAgICAgICAgICAgICB1cGRhdGVCbG9ja0NvcHkoKTsK
QEAgLTY1NzksNyArNjU3OSw3IEBAIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlV2kKIAogLSAodm9pZClfZG9BZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU6KHZv
aWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgX3Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUNhbGxiYWNrcy5h
cHBlbmQobWFrZUJsb2NrUHRyKHVwZGF0ZUJsb2NrKSk7CiAgICAgW3NlbGYgX3NjaGVkdWxlVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKICNlbHNlCkBAIC02NjAwLDcgKzY2MDAsNyBAQCAtICh2
b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopCiAgICAgfSk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoQ0dSZWN0KV9kcmFn
Q2FyZXRSZWN0CiB7CkBAIC02NjIxLDcgKzY2MjEsNyBAQCAtICh2b2lkKV9zaW11bGF0ZVRleHRF
bnRlcmVkOihOU1N0cmluZyAqCiAgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVUZXh0RW50ZXJl
ZDp0ZXh0XTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAtIChCT09MKV9iZWdpbkJhY2tTd2lwZUZvclRlc3RpbmcKIHsKQEAg
LTY2NzgsNyArNjY3OCw3IEBAIC0gKHZvaWQpX2RlbnlOZXh0VXNlck1lZGlhUmVxdWVzdAogQGVu
ZAogCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS1dlYlZpZXcgKEZ1bGxTY3JlZW5BUEkpCiAKQEAgLTY3MDUsNyArNjcwNSw3IEBA
IC0gKHZvaWQpY2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgogfQogCiBAZW5kCi0jZW5k
aWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExB
VEZPUk0oTUFDKQogCkBAIC02NzYzLDcgKzY3NjMsNyBAQCAtIChJQkFjdGlvbilzdG9wTG9hZGlu
ZzooaWQpc2VuZGVyCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKElPU01BQykKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlcikKIAogLSAoQ2xhc3MpX3ByaW50Rm9ybWF0dGVyQ2xhc3MKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RldmljZS5oPgog
I2VuZGlmCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgVCBtX3ZhbHVlOwogfTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgX1dL
RHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkKIHsKQEAgLTEy
Miw3ICsxMjIsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAg
ICAgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2g7CiAgICAgQk9PTCBfYWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHM7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlclJlZ2lzdHJ5Pj4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OwogICAgIEJPT0wgX2FsbG93
c0lubGluZU1lZGlhUGxheWJhY2s7CiAgICAgQk9PTCBfaW5saW5lTWVkaWFQbGF5YmFja1JlcXVp
cmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU7CkBAIC0xNzIsNyArMTcyLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXQKIAogICAgIF9wYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgX2FsbG93c1BpY3R1cmVJblBpY3R1cmVN
ZWRpYVBsYXliYWNrID0gWUVTOwogI2VuZGlmCkBAIC0xOTgsNyArMTk4LDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXQKICAgICBfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQgPSBOTzsKICAg
ICBfYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gTk87CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcmVzcGVjdHNJbWFnZU9yaWVudGF0aW9uID0g
WUVTOwogICAgIF9wcmludHNCYWNrZ3JvdW5kcyA9IFlFUzsKICNlbmRpZgpAQCAtMjI0LDcgKzIy
NCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzID0gTk87CiAgICAgX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
ID0gWUVTOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgX3NlbGVjdGlvbkdyYW51bGFyaXR5ID0gV0tTZWxlY3Rpb25HcmFudWxhcml0eUR5bmFtaWM7
CiAgICAgX2RyYWdMaWZ0RGVsYXkgPSB0b0RyYWdMaWZ0RGVsYXkoW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gaW50ZWdlckZvcktleTpAIldlYktpdERlYnVnRHJhZ0xpZnRE
ZWxheSJdKTsKICNpZiBQTEFURk9STShXQVRDSE9TKQpAQCAtMjM1LDcgKzIzNSw3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0CiAgICAgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gWUVTOwogI2Vu
ZGlmCiAgICAgX3N5c3RlbVByZXZpZXdFbmFibGVkID0gTk87Ci0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBfbWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBXZWJDb3JlOjpTZXR0aW5nczo6ZGVmYXVs
dE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCk7CiAgICAgX2FsbG93
TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrID0gWUVT
OwpAQCAtMjcxLDcgKzI3MSw3IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICop
Y29kZXIKIAogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2RyYXdzQmFja2dyb3VuZCBmb3JL
ZXk6QCJkcmF3c0JhY2tncm91bmQiXTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFtjb2RlciBlbmNvZGVJbnRlZ2VyOnNlbGYuZGF0YURldGVjdG9y
VHlwZXMgZm9yS2V5OkAiZGF0YURldGVjdG9yVHlwZXMiXTsKICAgICBbY29kZXIgZW5jb2RlQm9v
bDpzZWxmLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgZm9yS2V5OkAiYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2FsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW4gZm9yS2V5OkAiYWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFja0FmdGVyRnVsbHNjcmVlbiJdOwpAQCAtMzA1LDcgKzMwNSw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICoKICAgICBpZiAoW2NvZGVyIGNvbnRhaW5zVmFsdWVG
b3JLZXk6QCJkcmF3c0JhY2tncm91bmQiXSkKICAgICAgICAgc2VsZi5fZHJhd3NCYWNrZ3JvdW5k
ID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJkcmF3c0JhY2tncm91bmQiXTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNlbGYuZGF0YURldGVj
dG9yVHlwZXMgPSBbY29kZXIgZGVjb2RlSW50ZWdlckZvcktleTpAImRhdGFEZXRlY3RvclR5cGVz
Il07CiAgICAgc2VsZi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gW2NvZGVyIGRlY29kZUJv
b2xGb3JLZXk6QCJhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIl07CiAgICAgc2VsZi5fYWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IFtjb2RlciBkZWNvZGVCb29sRm9y
S2V5OkAiYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiJdOwpAQCAtMzM4
LDcgKzMzOCw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZp
Z3VyYXRpb24uX3Zpc2l0ZWRMaW5rU3RvcmUgPSBzZWxmLl92aXNpdGVkTGlua1N0b3JlOwogICAg
IGNvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0gX3JlbGF0ZWRXZWJWaWV3LmdldCgpLmdl
dCgpOwogICAgIGNvbmZpZ3VyYXRpb24uX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2Vz
dHVyZXMgPSBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlcy5nZXQoKS5nZXQo
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25m
aWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSA9IHNlbGYuX2NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5OwogI2VuZGlmCiAKQEAgLTM2Miw3ICszNjIsNyBAQCAtIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fd2FpdHNGb3JQYWludEFmdGVy
Vmlld0RpZE1vdmVUb1dpbmRvdyA9IHNlbGYtPl93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92
ZVRvV2luZG93OwogICAgIGNvbmZpZ3VyYXRpb24tPl9jb250cm9sbGVkQnlBdXRvbWF0aW9uID0g
c2VsZi0+X2NvbnRyb2xsZWRCeUF1dG9tYXRpb247CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayA9IHNlbGYtPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwogICAgIGNvbmZp
Z3VyYXRpb24tPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gc2Vs
Zi0+X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW47CiAgICAgY29uZmln
dXJhdGlvbi0+X2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
ID0gc2VsZi0+X2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
OwpAQCAtMzgyLDcgKzM4Miw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQog
ICAgIGNvbmZpZ3VyYXRpb24tPl9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNN
YW5hZ2VyID0gc2VsZi0+X3JlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFn
ZXI7CiAgICAgY29uZmlndXJhdGlvbi0+X3BhZ2VHcm91cCA9IHNlbGYuX3BhZ2VHcm91cDsKICNl
bmRpZgotI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25maWd1
cmF0aW9uLT5fZGF0YURldGVjdG9yVHlwZXMgPSBzZWxmLT5fZGF0YURldGVjdG9yVHlwZXM7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfVEFSR0VUX1BMQVlCQUNLKQpAQCAtNDQ4LDcgKzQ0
OCw3IEBAIC0gKHZvaWQpc2V0V2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGEKIAogc3RhdGlj
IE5TU3RyaW5nICpkZWZhdWx0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gW0AiTW9i
aWxlLyIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6W1VJRGV2aWNlIGN1cnJlbnREZXZpY2VdLmJ1
aWxkVmVyc2lvbl07CiAjZWxzZQogICAgIHJldHVybiBuaWw7CkBAIC01MTgsNyArNTE4LDcgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKilfY29udGVudFByb3ZpZGVyUmVnaXN0cnkKIHsK
ICAgICByZXR1cm4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmdldChbc2VsZl0geyByZXR1cm4g
YWRvcHROUyhbW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGFsbG9jXSBpbml0V2l0
aENvbmZpZ3VyYXRpb246c2VsZl0pOyB9KTsKQEAgLTY0OSw3ICs2NDksNyBAQCAtICh2b2lkKV9z
ZXRBbGxvd3NNZXRhUmVmcmVzaDooQk9PTClhbGxvCiAgICAgX2FsbG93c01ldGFSZWZyZXNoID0g
YWxsb3dzTWV0YVJlZnJlc2g7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIC0gKEJPT0wpX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eQogewog
ICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlv
cml0eSgpOwpAQCAtNzIwLDcgKzcyMCw3IEBAIC0gKHZvaWQpX3NldFN5c3RlbVByZXZpZXdFbmFi
bGVkOihCT09MKWUKICAgICBfc3lzdGVtUHJldmlld0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IC0gKEJPT0wpX2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkCiB7CkBAIC0xMDE0LDcgKzEw
MTQsNyBAQCAtIChCT09MKV9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS0RlcHJlY2F0ZWQpCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpbWVkaWFQbGF5
YmFja0FsbG93c0FpclBsYXkKIHsKICAgICByZXR1cm4gc2VsZi5hbGxvd3NBaXJQbGF5Rm9yTWVk
aWFQbGF5YmFjazsKQEAgLTEwNDUsNyArMTA0NSw3IEBAIC0gKHZvaWQpc2V0UmVxdWlyZXNVc2Vy
QWN0aW9uRm9yTWVkaWFQbGEKICAgICBzZWxmLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9u
Rm9yUGxheWJhY2sgPSByZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID8gV0tBdWRp
b3Zpc3VhbE1lZGlhVHlwZUFsbCA6IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAoKQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRDb250ZW50UHJvdmlkZXJSZWdpc3RyeTopIFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0
U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTGVuZ3Ro
Qm94Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMgPFVJU2Nyb2xsVmlld0RlbGVnYXRl
PgogI2VuZGlmCiAKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IFByaW50SW5mbzsKICAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9wYWdlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdDsKIC0gKHZv
aWQpX3Byb2Nlc3NXaWxsU3dhcDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzczsKQEAgLTE4
MCwxNSArMTgwLDE1IEBAIHN0cnVjdCBQcmludEluZm87CiAKIFdLV2ViVmlldyogZnJvbVdlYlBh
Z2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXS1dlYlZpZXcgKEZ1bGxTY3JlZW5BUEkpCiAt
KEJPT0wpaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CiAtKFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgKilmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKIC0odm9pZCljbG9zZUZ1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogQGVuZAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRG
T1JNKElPU01BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFD
KQogQGludGVyZmFjZSBXS1dlYlZpZXcgKF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcikKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPF9XS1dlYlZpZXdQcmludFByb3ZpZGVyPiBf
cHJpbnRQcm92aWRlcjsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lt
cG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFVJS2l0
L1VJSW1hZ2UuaD4KICNlbmRpZgogCkBAIC00NSw3ICs0NSw3IEBACiAgICAgQ0dQb2ludCBfaW50
ZXJhY3Rpb25Mb2NhdGlvbjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9JRDsKICAgICBSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IF9pbWFnZTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gX3VpSW1hZ2U7
CiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX3VzZXJJbmZvOwogI2VuZGlmCkBAIC01NCw3
ICs1NCw3IEBACiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogKyAoaW5zdGFuY2V0eXBlKWFjdGl2YXRlZEVsZW1lbnRJbmZvV2l0aEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJilpbmZvcm1hdGlvbgogewogICAgIHJldHVybiBbW1tzZWxmIGFs
bG9jXSBfaW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZvcm1hdGlv
bl0gYXV0b3JlbGVhc2VdOwpAQCAtMTAzLDcgKzEwMyw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhUeXBlOihfV0tBY3RpdmEKICAgICBfdHlwZSA9IHR5cGU7CiAgICAgX2ltYWdlID0gaW1h
Z2U7CiAgICAgX0lEID0gSUQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgX3VzZXJJbmZvID0gYWRvcHROUyhbdXNlckluZm8gY29weV0pOwogI2VuZGlm
CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCAtIChDR1BvaW50KV9pbnRlcmFjdGlvbkxvY2F0aW9uCiAg
ICAgcmV0dXJuIF9pbnRlcmFjdGlvbkxvY2F0aW9uOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0RpY3Rpb25hcnkgKil1c2VySW5mbwogewog
ICAgIHJldHVybiBfdXNlckluZm8uZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50
SW5mb0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogI2VuZGlmCiAjaW1w
b3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIgpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogQGludGVyZmFjZSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAoKQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiArIChpbnN0YW5jZXR5
cGUpYWN0aXZhdGVkRWxlbWVudEluZm9XaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b246KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm9y
bWF0aW9uOwogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
JilpbmZvcm1hdGlvbjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oIgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBXS19BUElf
RU5BQkxFRCAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGltcGxlbWVudGF0aW9uIF9XS0Nv
bnRleHRNZW51RWxlbWVudEluZm8KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
Ikdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIgpAQCAt
MTc0LDYgKzE3NCw2IEBAIC0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3QK
IAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9u
SW50ZXJuYWwuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBjbGFzcyBXS0FjdGlvblNoZWV0QXNzaXN0YW50
OwogQGNsYXNzIFdLQ29udGVudFZpZXc7CkBAIC00MCw2ICs0MCw2IEBACiAKIEBlbmQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAz
LDcgKzMwMyw3IEBAIC0gKHZvaWQpc2V0U3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGkKICAg
ICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRTdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1p
bmF0aW9uT25TeXN0ZW1DaGFuZ2Uoc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lz
dGVtQ2hhbmdlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogLSAoTlNTdHJpbmcgKilDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUKIHsKICAgICBy
ZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y3REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50
UgogICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9y
ICopPiBfc2Vzc2lvbkJsb2NrOwogCiAgICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0YXRlOwotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgQmxvY2tQdHI8dm9pZCAo
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqKT4gX3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbjsKICAgICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqKT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwogICAgIEJsb2NrUHRy
PHZvaWQgKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBTT0ZUX0xJTktfQ0xBU1Mo
UGFzc0tpdCwgUEtQYXltZW50UmVxdWVzCiBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXlt
ZW50U3VtbWFyeUl0ZW0pOwogU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRo
b2QpOwogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIFNPRlRfTElO
S19GUkFNRVdPUksoQ29udGFjdHMpCiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9z
dGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29u
dGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAqKTsKQEAgLTc2
LDcgKzc2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycgogI2Vu
ZGlmCiAKIHR5cGVkZWYgdm9pZCAoXlBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbikoQk9PTCBp
c1ZhbGlkLCBOU0Vycm9yICplcnJvcik7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkKIGV4dGVybiAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwogU09GVF9M
SU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
biwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmlu
ZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50
c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxp
Y2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpOwogI2Vsc2UKQEAgLTEwMSw3
ICsxMDEsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkgPSBudWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICAgICAgX3Bh
eW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vsc2UKICAgICAgICAgX3Bh
eW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFp
bHVyZSk7CkBAIC0xNDksMTEgKzE0OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAwKQorI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9B
TExPV0VEID49IDExMDAwMCkKIAogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
IGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgaGFuZGxlcjoodm9pZCAo
XikoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uCiB7Ci0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewogICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE2OCw3ICsxNjgsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsCiAKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxl
ciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9k
IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICp1
cGRhdGUpKWNvbXBsZXRpb24KIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7CiAgICAgICAgIGNv
bXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0
ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE4MSw3ICsxODEsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsCiB9CiAKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJv
bGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5n
TWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVw
ZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7CiAgICAg
ICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRo
b2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0
KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xOTUsNyArMTk1LDcgQEAgLSAodm9pZClwYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbAogCiAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGhh
bmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVw
ZGF0ZSkpY29tcGxldGlvbgogewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKICAgICAgICAgY29t
cGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBd
IHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0yMDks
NyArMjA5LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbAogCiAj
ZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKIAogLSAodm9pZClw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVu
dCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cykpY29tcGxldGlvbgogewpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICB9CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5N
YWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRp
b24oKSkgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgfSkuZ2V0KCldOwogfQogCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvUEtD
b250YWN0RmllbGRzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpDb250YWN0RmllbGRzJiBjb250YWN0RmllbGRzKQogewogICAgIFZlY3RvcjxOU1N0cmluZyAq
PiByZXN1bHQ7CkBAIC00ODQsNyArNDg0LDcgQEAgc3RhdGljIFJldGFpblB0cjxQS1NoaXBwaW5n
TWV0aG9kPiB0b1BLUwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAgICAgCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvTlNT
ZXQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MpCiB7CiAgICAgaWYgKHN0cmluZ3MuaXNF
bXB0eSgpKQpAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvTlNT
ZXQoY29uc3QgVmUKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTMwNCkgXAotICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMCAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01B
WF9BTExPV0VEID49IDExMDMwMCkKKyAgICB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMzAwKQogc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElU
eXBlIHRvQVBJVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6UmVx
dWVzdGVyIHJlcXVlc3RlcikKIHsKICAgICBzd2l0Y2ggKHJlcXVlc3RlcikgewpAQCAtNTI3LDcg
KzUyNyw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFIKICAgICAg
ICAgW3Jlc3VsdCBzZXRUaHVtYm5haWxVUkw6bGlua0ljb25VUkxzWzBdXTsKIAogI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDQpIFwKLSAgICB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAzMDAg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApCisgICAgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDMwMCAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDMwMCkKICAg
ICBbcmVzdWx0IHNldEFQSVR5cGU6dG9BUElUeXBlKHBheW1lbnRSZXF1ZXN0LnJlcXVlc3Rlcigp
KV07CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0PiB0b1BLUGF5bWVudFIKICAgICBbcmVzdWx0IHNldEN1cnJlbmN5Q29kZTpwYXltZW50UmVx
dWVzdC5jdXJyZW5jeUNvZGUoKV07CiAgICAgW3Jlc3VsdCBzZXRCaWxsaW5nQ29udGFjdDpwYXlt
ZW50UmVxdWVzdC5iaWxsaW5nQ29udGFjdCgpLnBrQ29udGFjdCgpXTsKICAgICBbcmVzdWx0IHNl
dFNoaXBwaW5nQ29udGFjdDpwYXltZW50UmVxdWVzdC5zaGlwcGluZ0NvbnRhY3QoKS5wa0NvbnRh
Y3QoKV07Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBbcmVz
dWx0IHNldFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRhY3RGaWVsZHMocGF5
bWVudFJlcXVlc3QucmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07CiAgICAg
W3Jlc3VsdCBzZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFjdEZpZWxk
cyhwYXltZW50UmVxdWVzdC5yZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07
CiAjZWxzZQpAQCAtNTcxLDcgKzU3MSw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0
b1BLUGF5bWVudFIKICAgICAgICAgW3Jlc3VsdCBzZXRBcHBsaWNhdGlvbkRhdGE6YXBwbGljYXRp
b25EYXRhLmdldCgpXTsKICAgICB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIFtyZXN1bHQgc2V0U3VwcG9ydGVkQ291bnRyaWVzOnRvTlNTZXQocGF5bWVu
dFJlcXVlc3Quc3VwcG9ydGVkQ291bnRyaWVzKCkpLmdldCgpXTsKICNlbmRpZgogCkBAIC01ODQs
NyArNTg0LDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UgogICAg
IGlmICghY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
KS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKICAgICAgICAgW3Jlc3VsdCBz
ZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6Y29uZmlndXJhdGlvbi5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKV07CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24uY3REYXRh
Q29ubmVjdGlvblNlcnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6KV0pCiAgICAg
ICAgIFtyZXN1bHQgc2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOmNvbmZpZ3VyYXRpb24u
Y3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCldOwogI2VuZGlmCkBAIC01OTIsNyArNTkyLDcg
QEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogc3Rh
dGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBzd2l0Y2ggKHN0YXR1cykgewpAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKIAogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29yZTo6aXNGaW5h
bFN0YXRlUmVzdWx0KHJlc3VsdCk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKICAgICBhdXRvIHBrUGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJy
b3JzKS5nZXQoKSA6IEBbIF1dKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0LmdldCgpKTsKQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgaWYgKHVwZGF0ZSkKICAgICAgICAgbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFy
eUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJ
dGVtcyk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGF1
dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRl
bXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlw
cGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQpAQCAtNzk3LDcgKzc5Nyw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29t
cGxldGlvbiA9IG51bGxwdHI7CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAw
MDApCiBzdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRh
Y3RVcGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgaWYgKCF1cGRhdGUgfHwgdXBkYXRlLT5lcnJvcnMu
aXNFbXB0eSgpKQpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3IKICAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBXVEZNb3ZlKHNoaXBwaW5nTWV0aG9kcyk7
CiAgICAgfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBh
dXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7CiAgICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpKTsK
ICNlbHNlCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcgogICAgIGlmICh1cGRhdGUpCiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBhdXRvIHBrUGF5bWVudE1ldGhv
ZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCld
KTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVwZGF0ZS5nZXQo
KSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBUFBMRV9QQVkp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9y
dCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
Y29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8TW9i
aWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlFdmVu
dENvZGVzSU9TLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lv
cy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3Mv
V2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJXZWJBdXRvbWF0aW9uU2Vzc2lv
bk1hY3Jvcy5oIgpAQCAtMTcyLDQgKzE3Miw0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha09iakNQ
dHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBVU0UoU1lTVEVNX1BSRVZJRVcpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
VVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rp
dml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIERvd25sb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogdm9p
ZCBEb3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBwcmV2
aWV3IiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKQEAgLTI3OCw3
ICsyNzgsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbihECiAKIHZv
aWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0lGKGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIFVJUHJvY2VzcyBpcyByZWxlYXNp
bmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcgZG93bmxv
YWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxwdHI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MYXllclJlcHJlc2VudGF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGF5ZXJSZXBy
ZXNlbnRhdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9MYXllclJlcHJlc2VudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgTGF5ZXJSZXByZXNlbnRhdGlvbl9oCiAjZGVmaW5lIExheWVyUmVwcmVz
ZW50YXRpb25faAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgVUlWaWV3OwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlkRmlyc3RQYWludCgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VSZWFzb24g
eyBMb2FkQ29tcGxldGVkLCBTY3JlZW5Mb2NrZWQgfTsKICAgICB2b2lkIHJlbGVhc2VOZXR3b3Jr
QWN0aXZpdHlUb2tlbihOZXR3b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VSZWFzb24pOwogI2VuZGlm
CkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9j
ZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNz
SXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tlbkFmdGVy
TG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tlbihOZXR3b3JrQWN0
aXZpdHlUb2tlblJlbGVhc2VSZWFzb246OkxvYWRDb21wbGV0ZWQpOyB9CiAjZW5kaWYKIApAQCAt
MjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFVwZGF0ZUhp
c3RvcnlUaXRsZUZvclVSTCA6IDE7CiAgICAgfSBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHM7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQcm9jZXNz
VGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2FjdGl2aXR5VG9rZW47CiAgICAg
UnVuTG9vcDo6VGltZXI8TmF2aWdhdGlvblN0YXRlPiBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcg
QEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uU3RhdGUoV0tXZWJWaQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCiAgICAgLCBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMoKQogICAgICwg
bV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzKCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIoUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9r
ZW5BZnRlckxvYWRDb21wbGV0aW9uKQogI2VuZGlmCiB7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6d2lsbENoYW5nZUlzTG9hZGluCiAgICAgW21fd2ViVmlldyB3
aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJsb2FkaW5nIl07CiB9CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNl
TmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uIHJl
YXNvbikKIHsKICAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKQEAgLTEwODksNyArMTA4OSw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNlTmV0d29ya0FjdGkKIAogdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OmRpZENoYW5nZUlzTG9hZGluZygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fd2ViVmlldy0+X3BhZ2UtPnBhZ2VMb2Fk
U3RhdGUoKS5pc0xvYWRpbmcoKSkgewogICAgICAgICAvLyBXZSBkbyBub3QgdGFrZSBhIG5ldHdv
cmsgYWN0aXZpdHkgdG9rZW4gaWYgYSBsb2FkIHN0YXJ0cyBhZnRlciB0aGUgc2NyZWVuIGhhcyBi
ZWVuIGxvY2tlZC4KICAgICAgICAgaWYgKFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja10pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzksMTMgKzM5LDEzIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg+CiAjZWxzZQogI2luY2x1ZGUg
PFdlYkNvcmUvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdHlwZWRlZiBXZWJDb3JlOjpQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZTsKICNlbHNlCiB0eXBlZGVmIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
YyBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKQEAgLTI0NSw0ICsyNDUsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIG1l
c3NhZ2VzIC0+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSB7CiAgICAgQ3VycmVudFRpbWVD
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9z
dFRpbWUpCiAgICAgQnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBidWZmZXJlZFRpbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2ltcG9ydCAiUGxheWJhY2tT
ZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgpAQCAtNjA3LDQgKzYwNyw0IEBAICAgICByZXR1cm4gJmludGVyZmFj
ZTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmKSBm
aW5hbDsKICAgICAgICAgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgICAgICB2b2lkIHByaW50
RnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYpIGZpbmFsOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEhBVkUoQVBQX0xJTktTKQogICAg
ICAgICBib29sIHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gKikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0
cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkTm90SGFu
ZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwogICAgICAgICBV
SVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBmaW5hbDsKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAg
ICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgZmluYWw7CiAKQEAgLTIw
MSw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdDaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JVUkxNYWluRnJhbWVVUkxGcmFtZUlkZW50aWZpZXJEZWNpc2lvbkhhbmRs
ZXIgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZSA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENoYW5nZUZvbnRBdHRyaWJ1dGVzIDogMTsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9M
SU5LUykKICAgICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9y
RWxlbWVudCA6IDE7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRp
YUZvcm1hdC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbAogICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Z1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZTopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW50ZXJGdWxsc2Ny
ZWVuID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRF
bnRlckZ1bGxzY3JlZW46KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEV4aXRG
dWxsc2NyZWVuID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXdEaWRFeGl0RnVsbHNjcmVlbjopXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3U2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEluY2x1ZGVBcHBMaW5r
QWN0aW9uc0ZvckVsZW1lbnQ6KV07CiAjZW5kaWYKQEAgLTkxMSw3ICs5MTEsNyBAQCBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPSBwYWdlLnByZWZlcmVuY2VzKCkubW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogICAgIGF1dG8gcmVxdWVzdENhbWVyYUF1dGhvcml6YXRp
b24gPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW3RoaXMsICZmcmFtZSwgcHJvdGVj
dGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJW
aWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KSwgdXNpbmdNb2NrQ2FwdHVyZURldmljZXNdKCkg
ewogCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRF
eGl0RnVsbHNjCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXdEaWRFeGl0RnVsbHNjcmVlbjptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KICAgICAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9M
SU5LUykKIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEluY2x1ZGVBcHBMaW5rQWN0
aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmVsZW1lbnRJbmZvKQogewpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lv
bkNoZWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogZW51bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3QgewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZpcnN0V2l0aE5ldHdvcmtDYWNo
ZSA9IERZTERfSU9TX1ZFUlNJT05fOV8wLAogICAgIEZpcnN0V2l0aE1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBEWUxEX0lPU19WRVJTSU9OXzEwXzAsCiAgICAgRmly
c3RXaXRoRXhjZXB0aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMgPSBEWUxE
X0lPU19WRVJTSU9OXzExXzAsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
ZXJzaW9uQ2hlY2tzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZlcnNpb25DaGVja3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgYm9vbCBsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbiBzZGtWZXJzaQogICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKICAgICAgc3RkOjpjYWxsX29uY2Uob25jZSwgW10g
ewogICAgICAgICBib29sIGlzU2FmYXJpID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlv
bjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIGlzU2FmYXJpID0gdHJ1ZTsKICNlbGlm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzcsMTMgKzM3LDEzIEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJDb3Jl
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg+CiAjZWxzZQogI2luY2x1ZGUgPFdlYkNv
cmUvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdHlwZWRlZiBXZWJDb3JlOjpWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTsK
ICNlbHNlCiB0eXBlZGVmIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyBQbGF0
Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTsKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzVmlkZW8o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlkZW9E
aW1lbnNpb25zOyB9Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgZmluYWw7
CiAgICAgVUlWaWV3Q29udHJvbGxlciAqY3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xs
ZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciopIGZpbmFsOwogI2VuZGlmCkBAIC0xODYsNSArMTg2
LDUgQEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShB
VktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4g
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IHsKICAgICBTZXRIYXNWaWRlbyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShB
VktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW1wb3J0ICJBUElV
SUNsaWVudC5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNDIsNyArNDIsNyBA
QAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQ
SS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgpAQCAtNTQsNyArNTQsNyBA
QCBAaW50ZXJmYWNlIFdLTGF5ZXJIb3N0VmlldyA6IFBsYXRmb3JtVmllCiAKIEBpbXBsZW1lbnRh
dGlvbiBXS0xheWVySG9zdFZpZXcKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogKyAoQ2xhc3MpbGF5ZXJDbGFzcyB7CiAgICAgcmV0dXJuIFtDQUxheWVySG9z
dCBjbGFzc107CiB9CkBAIC03OSw3ICs3OSw3IEBAIC0gKENBTGF5ZXJIb3N0ICopbGF5ZXJIb3N0
IHsKIAogQGVuZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBAaW50ZXJmYWNlIFdLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250
cm9sbGVyCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9sbGVyOihB
VlBsYXllclZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIgTlNfREVTSUdOQVRFRF9JTklU
SUFMSVpFUjsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5pYk5hbWU6KE5TU3RyaW5nICopbmli
TmFtZU9yTmlsIGJ1bmRsZTooTlNCdW5kbGUgKiluaWJCdW5kbGVPck5pbCBOU19VTkFWQUlMQUJM
RTsKQEAgLTEyNCw3ICsxMjQsNyBAQCAtIChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBQTEFURk9S
TShJT1MpICYmICFIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZF
KEFWS0lUKQogCiBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmKQogewpAQCAtMjA1LDcgKzIw
NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmdWxsc2MKICAgICAgICAg
bV9tYW5hZ2VyLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobV9jb250ZXh0SWQsIG1vZGUpOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBVSVZpZXdDb250
cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcigpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTQ3Nyw3ICs0NzcsNyBAQCAgICAgc3Rk
Ojp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNCiAgICAgICAgIFtbdmlldyBsYXllcl0g
c2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNlU2NhbGUs
IGludmVyc2VTY2FsZSwgMSldOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLnJlbW90
ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKTsKICAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNj
cmVlbigqbW9kZWwtPmxheWVySG9zdFZpZXcoKSwgaW5pdGlhbFJlY3QsIHBhcmVudFZpZXcsIHZp
ZGVvRnVsbHNjcmVlbk1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpOwogI2Vs
c2UKQEAgLTUxNyw3ICs1MTcsNyBAQCAgICAgICAgIGlmIChvdGhlckludGVyZmFjZS0+aGFzTW9k
ZShpbnRlCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuc3VyZUludGVy
ZmFjZShjb250ZXh0SWQpLmV4aXRGdWxsc2NyZWVuKGZpbmFsUmVjdCk7CiAjZWxzZQogICAgIElu
dFJlY3QgZmluYWxXaW5kb3dSZWN0OwpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXRJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW5saW5lUmVjdCwgYm9vbCB2aXNpYmxlKQogewpAQCAtNTY4LDcgKzU2OCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXIKIHsKICAgICBtX3BhZ2Ut
PmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkucHJl
cGFyZWRUb1JldHVyblRvSW5saW5lKHZpc2libGUsIGlubGluZVJlY3QpOwogI2Vsc2UKICAgICBJ
bnRSZWN0IGlubGluZVdpbmRvd1JlY3Q7CkBAIC02NDUsNyArNjQ1LDcgQEAgICAgIGludGVyZmFj
ZS0+c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJGcmFtZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZs
b2F0UmVjdCBmcmFtZSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbWFjaF9wb3J0X25hbWVfdCBm
ZW5jZVBvcnQgPSBbVUlXaW5kb3cgX3N5bmNocm9uaXplRHJhd2luZ0Fjcm9zc1Byb2Nlc3Nlc107
CiAjZWxzZQogICAgICAgICBNYWNoU2VuZFJpZ2h0IGZlbmNlU2VuZFJpZ2h0OwpAQCAtNjc5LDQg
KzY3OSw0IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2MKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlHZXN0
dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xBU1MgVUlWaWV3OwogT0JKQ19DTEFTUyBXS1N3aXBlVHJh
bnNpdGlvbkNvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NoYXJlU2hlZXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAj
ZWxzZQpAQCAtNzcsNyArNzcsNyBAQCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29u
c3QgV2ViCiAgICAgCiAgICAgaWYgKGRhdGEudXJsKSB7CiAgICAgICAgIE5TVVJMICp1cmwgPSAo
TlNVUkwgKilkYXRhLnVybC52YWx1ZSgpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIWRhdGEuc2hhcmVEYXRhLnRpdGxlLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHVybC5fdGl0bGUgPSBkYXRhLnNoYXJlRGF0YS50aXRsZTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYktpdC9XS1Bh
Z2VMb2FkVHlwZXMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0aW9ucy5oPgpAQCAtNjgs
NyArNjgsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTIs
NiArNTIsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmll
d0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKICNpbXBvcnQgIldL
UERGVmlldy5oIgpAQCAtMTA3LDYgKzEwNyw2IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9taW1lVHlw
ZXNXaXRoQ3VzdG9tQ28KIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSQogICAgIHBhZ2VDbGllbnQo
KS5zdGFydERyYWcoZHJhZ0l0ZW0sIGRyYWdJbWFnZUhhbmRsZSk7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiwgdWludDY0X3QpCiB7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldERyYWdDYXJldFJlY3QoY29ucwogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VEYXRh
SW50ZXJhY3Rpb25DYXJldFJlY3QocHJldmlvdXNSZWN0LCBkcmFnQ2FyZXRSZWN0KTsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YQogICAgIG5ld0NoYW5nZUNv
dW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRl
eCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0
cmluZz4mIHR5cGVzKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlwZXMsIGluZGV4KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBO
U1N0cmluZyAqV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gCiBOU1N0cmluZyAqV2ViS2l0
SlNDSklURW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXRKU0NKSVRFbmFibGVkRGVmYXVsdHNL
ZXkiOwogTlNTdHJpbmcgKldlYktpdEpTQ0ZUTEpJVEVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2Vi
S2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5IjsKIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0
aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlv
biA9IEAiTlNBcHBsaWNhdGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRl
cmZhY2VOb3RpZmljYXRpb24iOwogI2VuZGlmCiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoCiAgICAgc2V0TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50PigpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcGF0aCA9IHBhdGhGb3JQcm9jZXNzQ29udGFpbmVyKCk7
CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZl
UGF0aAogewogICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgg
PSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBy
ZXNvdXJjZVBhdGhdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29va2llU3Rv
cmFnZURpcmVjdG9yeSgpKTsKICAgICBtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24od2ViQ29udGVudENhY2hlc0RpcmVjdG9yeSgpKTsKICAgICBtX3Jlc29sdmVkUGF0aHMu
Y29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5KCkp
OwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVcKICAgICBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVy
ID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJEZWZhdWx0c0tleV07CiAKICNpZiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBhcmFtZXRlcnMu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoW0NBUmVt
b3RlTGF5ZXJTZXJ2ZXIgc2hhcmVkU2VydmVyXS5zZXJ2ZXJQb3J0KTsKICNlbmRpZgogI2VuZGlm
CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplVwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmluZyhb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc1NES1ZlcnNpb24gPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1f
cmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNv
bHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKIApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVcKICAgICAgICAgd2ViUlRDRW5hYmxlZCA9IFtkZWZhdWx0cyBib29sRm9yS2V5
OkAiRXhwZXJpbWVudGFsUGVlckNvbm5lY3Rpb25FbmFibGVkIl07CiAKICAgICBib29sIGlzU2Fm
YXJpID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQogICAg
ICAgICBpc1NhZmFyaSA9IHRydWU7CiAjZWxpZiBQTEFURk9STShNQUMpCkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgcGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRp
b24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogICAgIHBhcmFtZXRlcnMu
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT5z
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYXJhbWV0ZXJzLmN0RGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZSA9IG1fY29uZmlndXJhdGlvbi0+Y3REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlKCk7CiAjZW5kaWYKIApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW52YWxpZGF0ZUMKICAgICB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
KCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6cGFyZW50QnVuZGxlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF0gc3RyaW5nQnlTdGFu
ZGFyZGl6aW5nUGF0aF07CkBAIC0zNzQsNyArMzc0LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29s
Ojpjb250YWluZXJUZW1wb3JhcgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMoKQogewogICAgIE5TVXNlckRlZmF1
bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CkBA
IC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N1cHByZXNzaW9u
RQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBMaXN0ZW4gZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkgY2hhbmdlcyBhbmQgcHJvcGFnYXRl
IHRoZW0gdG8gdGhlIFdlYlByb2Nlc3MuCiAgICAgbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNl
cnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJG
b3JOYW1lOldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNl
ckludGVyZmFjZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsIHF1ZXVlOltOU09wZXJhdGlvblF1ZXVl
IGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RlKSB7CiAgICAg
ICAgIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShbW1tub3RlIHVzZXJJbmZvXSBvYmplY3RGb3JL
ZXk6QCJBWEVuaGFuY2VkVXNlckludGVyZmFjZSJdIGJvb2xWYWx1ZV0pOwpAQCAtNDMzLDEyICs0
MzMsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpbwogICAgIH1d
OwogI2VuZGlmCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZp
Y2F0aW9uT2JzZXJ2ZXJzKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6bV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07ICAgIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6
bV9hdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnROb3RpZmljYXRpb25PYnNlcnZlci5nZXQoKV07CiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpt
X2F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbk5vdGlmaWNhdGlvbk9ic2VydmVyLmdldCgpXTsK
QEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZp
Y2F0CiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zY3Jv
bGxlclN0eWxlTm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCi0jZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogc3Rh
dGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9j
b2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRl
cjo6cGxhdGZvcm1TZXREZWZhdQogICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBHYW1lcGFkUHJvdmlkZXI6OnNl
dFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KSk7CiAjZWxpZiBkZWZpbmVkKF9fTFA2NF9fKQogICAgIGlmICh1c2VHYW1lQ29udHJvbGxlckZy
YW1ld29yaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2Ft
ZXBhZFByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2lvcy9VSUdhbWVwYWRQcm92aWRlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogCi0jaWYgRU5BQkxFKEdBTUVQQUQpICYm
IFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgi
CkBAIC00NSw0ICs0NSw0IEBAIFdlYlBhZ2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3IKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nl
c3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUoY29uc3QgUHJv
CiAKIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9TLCBsZWFrIGEgYm9vc3Qgb250byBhbGwg
Y2hpbGQgcHJvY2Vzc2VzCiAgICAgVU5VU0VEX1BBUkFNKGxhdW5jaE9wdGlvbnMpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRMZWFrQm9vc3Qo
Y29uc3QgUHJvY2VzCiBzdGF0aWMgTlNTdHJpbmcgKnN5c3RlbURpcmVjdG9yeVBhdGgoKQogewog
ICAgIHN0YXRpYyBOU1N0cmluZyAqcGF0aCA9IFteewotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFU
T1IpCisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpCiAgICAgICAgIGNoYXIgKnNp
bXVsYXRvclJvb3QgPSBnZXRlbnYoIlNJTVVMQVRPUl9ST09UIik7CiAgICAgICAgIHJldHVybiBz
aW11bGF0b3JSb290ID8gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcy9TeXN0ZW0vIiwg
c2ltdWxhdG9yUm9vdF0gOiBAIi9TeXN0ZW0vIjsKICNlbHNlCkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIC8vIDIuIFdoZW4gQXBw
bGVMYW5ndWFnZXMgaXMgcGFzc2VkIGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudCBmb3IgVUkgcHJv
Y2Vzcywgb3Igc2V0IGluIGl0cyBwcmVmZXJlbmNlcywgd2Ugc2hvdWxkIHJlc3BlY3QgaXQgaW4g
Y2hpbGQgcHJvY2Vzc2VzLgogICAgIGF1dG8gaW5pdGlhbGl6YXRpb25NZXNzYWdlID0gYWRvcHRP
U09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAg
IF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKGluaXRpYWxpemF0aW9uTWVzc2FnZS5nZXQoKSk7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2xp
ZW50cyB0aGF0IHNldCB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXhwbGljaXRseSBkbyBu
b3QgaGF2ZSB0aGUgdmFsdWVzIGF1dG9tYXRpY2FsbHkgZm9yd2FyZGVkIGJ5IGxpYnhwYy4KICAg
ICBhdXRvIGNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzID0gYWRvcHRPU09iamVjdCh4cGNf
ZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAgIGlmIChjb25zdCBj
aGFyKiBlbnZpcm9ubWVudEhPTUUgPSBnZXRlbnYoIkhPTUUiKSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAog
I2luY2x1ZGUgIlNlY0l0ZW1TaGltUHJveHkuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+CiAjZW5kaWYKIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmMKICAgICAgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCh0cnVlKTsKICNlbmRpZgogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmICh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB0aGlzLT5j
b25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSkKICAgICAgICAgbV90aHJvdHRsZXIuZGlkQ29u
bmVjdFRvUHJvY2Vzcyh4cGNfY29ubmVjdGlvbl9nZXRfcGlkKGNvbm5lY3Rpb24pKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0tPbmVTaG90RGlz
cGxheUxpbmtIYW5kbGVyICpkaXNwbGF5TGlua0hhbmRsZXIoKTsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKIAogLy8gRklYTUU6IE1hYyB3aWxsIG5lZWQgc29tZXRoaW5nIHNpbWlsYXI7IHdl
IHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBzaGFyZSB0aGlzIHdpdGggRGlzcGxheVJlZnJlc2hN
b25pdG9yIHdpdGhvdXQKIC8vIGJyZWFraW5nIFdlYktpdDEgYmVoYXZpb3Igb3IgV2ViS2l0Mi1X
ZWJLaXQxIGNvZXhpc3RlbmNlLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogQGludGVyZmFjZSBXS09uZVNob3REaXNwbGF5TGlua0hhbmRsZXIgOiBOU09iamVj
dCB7CiAgICAgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KiBfZHJhd2lu
Z0FyZWFQcm94eTsKICAgICBDQURpc3BsYXlMaW5rICpfZGlzcGxheUxpbms7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6flJlbW90ZQogICAgIG1f
Y2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9kaXNwbGF5TGlua0hhbmRsZXIgaW52
YWxpZGF0ZV07CiAjZW5kaWYKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlSG9zdD4gUmVtCiB9CiAKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogV0tPbmVTaG90RGlzcGxheUxpbmtIYW5kbGVyICpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwbGF5TGlua0hhbmRsZXIoKQogewogICAgIGlm
ICghbV9kaXNwbGF5TGlua0hhbmRsZXIpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpjbwogICAgIG1fd2ViUGFnZVByb3h5LmRpZENvbW1p
dExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlvbik7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChtX3dlYlBhZ2VQcm94eS5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCktPmhhc0ZpeGVk
T3JTdGlja3koKSkgewogICAgICAgICAvLyBJZiB3ZSBnb3QgYSBuZXcgbGF5ZXIgZm9yIGEgZml4
ZWQgb3Igc3RpY2t5IG5vZGUsIGl0cyBwb3NpdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzIGlzIHBy
b2JhYmx5IHN0YWxlLiBXZSBuZWVkIHRvIHJlLXJ1biB0aGUgInZpZXdwb3J0IiBjaGFuZ2VkIGxv
Z2ljIHRvIHVkcGF0ZSBpdCB3aXRoIG91ciBVSS1zaWRlIHN0YXRlLgogICAgICAgICBGbG9hdFJl
Y3QgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QgPSBtX3dlYlBhZ2VQcm94eS5jb21wdXRlQ3VzdG9t
Rml4ZWRQb3NpdGlvblJlY3QobV93ZWJQYWdlUHJveHkudW5vYnNjdXJlZENvbnRlbnRSZWN0KCks
IG1fd2ViUGFnZVByb3h5LnVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdC
b3VuZHMoKSwgbV93ZWJQYWdlUHJveHkuY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSwgbV93ZWJQ
YWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCksIEZyYW1lVmlldzo6TGF5b3V0Vmlld3Bv
cnRDb25zdHJhaW50OjpVbmNvbnN0cmFpbmVkLCBtX3dlYlBhZ2VQcm94eS5zY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5KCktPnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvCiAKICAgICBtX3dl
YlBhZ2VQcm94eS5sYXllclRyZWVDb21taXRDb21wbGV0ZSgpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHN0ZDo6ZXhjaGFuZ2UobV9kaWRV
cGRhdGVNZXNzYWdlU3RhdGUsIE5lZWRzRGlkVXBkYXRlKSA9PSBNaXNzZWRDb21taXQpCiAgICAg
ICAgIGRpZFJlZnJlc2hEaXNwbGF5KCk7CiAgICAgW2Rpc3BsYXlMaW5rSGFuZGxlcigpIHNjaGVk
dWxlXTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OnNlCiBGbG9hdFBvaW50IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omlu
ZGljYXRvckxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV93ZWJQYWdlUHJveHkuZGVsZWdh
dGVzU2Nyb2xsaW5nKCkpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgRmxvYXRQb2ludCB0aWxlZE1hcExvY2F0aW9uID0gbV93ZWJQYWdlUHJv
eHkudW5vYnNjdXJlZENvbnRlbnRSZWN0KCkubG9jYXRpb24oKS5leHBhbmRlZFRvKEZsb2F0UG9p
bnQoKSk7CiAgICAgICAgIHRpbGVkTWFwTG9jYXRpb24gPSB0aWxlZE1hcExvY2F0aW9uLmV4cGFu
ZGVkVG8obV93ZWJQYWdlUHJveHkuZXhwb3NlZENvbnRlbnRSZWN0KCkubG9jYXRpb24oKSk7CiAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OnVwCiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkuZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKICAg
ICAgICAgRmxvYXRSZWN0IHNjYWxlZEV4cG9zZWRSZWN0OwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBzY2FsZWRFeHBvc2VkUmVjdCA9IG1fd2Vi
UGFnZVByb3h5LmV4cG9zZWRDb250ZW50UmVjdCgpOwogI2Vsc2UKICAgICAgICAgaWYgKHZpZXdF
eHBvc2VkUmVjdCgpKQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6ZGkKIAogICAgIGlmIChtX2RpZFVwZGF0ZU1lc3NhZ2VTdGF0ZSAhPSBO
ZWVkc0RpZFVwZGF0ZSkgewogICAgICAgICBtX2RpZFVwZGF0ZU1lc3NhZ2VTdGF0ZSA9IE1pc3Nl
ZENvbW1pdDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgW2Rpc3BsYXlMaW5rSGFuZGxlcigpIHBhdXNlXTsKICNlbmRpZgogICAgICAgICByZXR1
cm47CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Ojp3YQogICAgICAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXRPdmVycmlkZUFjdGl2aXR5U3RhdGVV
cGRhdGVUaW1lb3V0Il0pCiAgICAgICAgICAgICByZXR1cm4gU2Vjb25kcyhbdmFsdWUgZG91Ymxl
VmFsdWVdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApOwogI2Vsc2UKICAg
ICAgICAgcmV0dXJuIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUwKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXll
ckV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFVJS2l0
L1VJVmlldy5oPgogI2VuZGlmCiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIGlkTGF5ZXIgOiBtX2xh
eWVycykgewogICAgICAgICBtX2FuaW1hdGlvbkRlbGVnYXRlcy5yZW1vdmUoaWRMYXllci5rZXkp
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBb
aWRMYXllci52YWx1ZS5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICNlbHNlCiAgICAgICAg
IFthc0xheWVyKGlkTGF5ZXIudmFsdWUuZ2V0KCkpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKQEAg
LTIzOCw3ICsyMzgsNyBAQCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
CiAgICAgcmV0dXJuIFtbbGF5ZXIgdmFsdWVGb3JLZXk6V0tMYXllcklEUHJvcGVydHlLZXldIHVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogTGF5ZXJPclZpZXcgKlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0
ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJv
cGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllcyopCiB7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+JiBsYXllciA9IG1fbGF5
ZXJzLmFkZChwcm9wZXJ0aWVzLmxheWVySUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKQEAg
LTI5Myw3ICsyOTMsNyBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9yb290TGF5ZXIg
cmVtb3ZlRnJvbVN1cGVydmlld107CiAjZWxzZQogICAgIFthc0xheWVyKG1fcm9vdExheWVyKSBy
ZW1vdmVGcm9tU3VwZXJsYXllcl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbwogICAgIG1fcmVxdWVzdGVkU2Nyb2xsSW5mbyA9IG51
bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2Rl
TGF5ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25zdCBSZW1vdGVMYXllclRy
ZWVIb3N0JiBsYXllclRyZWVIb3N0KQogewogICAgIGZvciAoYXV0byYgY3Vyck5vZGUgOiBzdGF0
ZVRyZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzYwogICAgIGlmICghbV9wcm9wYWdhdGVzTWFp
bkZyYW1lU2Nyb2xscyAmJiBzY3JvbGxlZE5vZGVJRCA9PSByb290U2Nyb2xsaW5nTm9kZUlEKCkp
CiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIG1fd2ViUGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxWaWV3RGlkU2Ny
b2xsKCk7CiAjZW5kaWYKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvcjo6U2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShzY3JvbGxl
ZE5vZGVJRCwgbmV3U2Nyb2xsUG9zaXRpb24sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24g
PT0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIHByb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xsczsgfQogICAgIGJvb2wgaGFzRml4ZWRPclN0
aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS0+aGFzRml4ZWRPclN0aWNreSgp
OyB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSBjb25zdDsKICAgICB2
b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwogICAgIHZvaWQgc2Ny
b2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nVHJlZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaD4KICNlbHNlCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmUKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXZWJDb3JlOjpG
bG9hdFJlY3QgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6Zml4ZWRQb3NpdGlvblJlY3QoKQogewogICAg
IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3VzdG9tRml4ZWRQb3NpdGlvblJl
Y3QoKTsKQEAgLTExNCwxMyArMTE0LDEzIEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gUmVtb3Rl
U2Nyb2xsaW5nVHIKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBNYWluRnJhbWVT
Y3JvbGxpbmdOb2RlOgogICAgIGNhc2UgU3ViZnJhbWVTY3JvbGxpbmdOb2RlOgotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRlKCp0aGlzLCBub2RlVHlwZSwgbm9k
ZUlEKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2RlSUQpOwogI2VuZGlmCiAgICAgY2Fz
ZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAjZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ1RyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGZpeGVkUG9zaXRpb25S
ZWN0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFBhbkdl
c3R1cmUoKSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0U2Ny
b2xsKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlSG9zdC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXcu
aD4KQEAgLTI0MSw0ICsyNDEsNCBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2ltcG9ydCAiTGF5
ZXJSZXByZXNlbnRhdGlvbi5oIgpAQCAtMjE3LDQgKzIxNyw0IEBAIENHUG9pbnQgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eToKIAogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAK
QEAgLTYwLDQgKzYwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQogCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgiCkBAIC04OSw0ICs4OSw0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUkKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQogCiAjaW5jbHVkZSA8VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgpAQCAtODUsNCArODUsNCBAQCBwcml2YXRlOgog
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAog
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVBhbkdl
c3R1cmVSZWNvZ25pemVyLmg+CkBAIC0yODksNCArMjg5LDQgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNvbnN0IHVu
aW9uIHsKIGNvbnN0IHNpemVfdCBFUzI1NktleVNpemVJbkJ5dGVzID0gMzI7CiBjb25zdCBzaXpl
X3QgYXV0aERhdGFQcmVmaXhGaXhlZFNpemUgPSAzNzsgLy8gaGFzaCgzMikgKyBmbGFncygxKSAr
IGNvdW50ZXIoNCkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNzZWMtYXV0aGVudGljYXRvci1k
YXRhCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBy
cElkLCBjb25zdCB1aW50OF90IGZsYWdzLCB1aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSkKIHsKQEAgLTExNiw3ICsx
MTYsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3RvcihOCiAgICAgcmVz
dWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbAogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJbml0
KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZDsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1w
bGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCBhcyBv
ZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVzaWRl
bnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KICAgICAvLyBT
a2lwIFN0ZXAgOSBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTE5Miw3
ICsxOTIsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoCiAgICAg
bV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKICAgICAgICAgU3RyaW5nOjpmb3JtYXQoIkFs
bG93ICVzIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBmb3IgJXMiLCByZXF1ZXN0
RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZC51dGY4KCkuZGF0YSgpLCByZXF1ZXN0RGF0YSgp
LmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUudXRmOCgpLmRhdGEoKSksCiAgICAgICAgIFdURk1v
dmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25z
ZW50IGNvbnNlbnQpCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVj
ZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25zZW50ID09IExv
Y2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25k
KEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25z
ZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmUKICAgICAgICAgd2Vha1RoaXMtPmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKHByaXZhdGVLZXksIGNlcnRpZmljYXRlcywg
ZXJyb3IpOwogICAgIH07CiAgICAgbV9jb25uZWN0aW9uLT5nZXRBdHRlc3RhdGlvbihyZXF1ZXN0
RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlv
bnMudXNlci5uYW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUoY2FsbGJhY2spKTsKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
fQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
QXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkgKmNlcnRpZmljYXRlcywgTlNF
cnJvciAqZXJyb3IpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2VyQ29uc2Vu
dGVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkF0dGVzdGVkOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsKICAgICAgICAgcmVjZWl2ZVJl
c3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIl9zIH0pOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZU1ha2VDcmUKICAgICB9CiAKICAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3Jl
ZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0
ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCku
c2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKLSNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIExv
Y2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQ7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGUgZm9s
bG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1nZXQt
YXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgMiBhcyBy
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0ZXAgOCBh
cyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTQ3NSw3ICs0NzUsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgU3RyaW5nOjpm
b3JtYXQoIkxvZyBpbnRvICVzIHdpdGggJXMuIiwgcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9u
cy5ycElkLnV0ZjgoKS5kYXRhKCksIHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25UYWddKSwKICAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRy
b2xSZWYpc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250
cm9sXSwKICAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOwotI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENv
bm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNl
cmhhbmRsZSkKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZl
ZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbnNlbnQgPT0gTG9jYWxD
b25uZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQu
Il9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZQogCiAgICAgLy8gU3RlcCAxMy4KICAgICByZWNl
aXZlUmVzcG9uZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUo
Y3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIGZhbHNlLCBudWxscHRy
LCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEu
c2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUu
c2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VyaGFuZGxlLmRhdGEoKSwgdXNlcmhhbmRs
ZS5zaXplKCkpIH0pOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29u
LCBVc2VyQ29uc2VudENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2Uo
KSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAq
KT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBMb2Nh
bENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbgogdm9pZCBMb2NhbENvbm5lY3Rpb246Omdl
dFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFj
Y2Vzc0NvbnRyb2wsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9j
TEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZv
aWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNv
bgogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJ
ZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBB
dHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgLy8g
RGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIGlzIG5vdCBhdmFsaWFibGUgaW4gaU9TIHNpbXVsYXRv
ci4KLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAg
ICAvLyBBcHBsZSBBdHRlc3RhdGlvbgogICAgIEFTU0VSVChoYXNoLnNpemUoKSA8PSAzMik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsU2VydmljZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2Vy
dmljZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBMb2NhbFNlcnZpY2U6Okxv
Y2FsU2VydmljZShPYnNlcnZlciYgb2JzCiBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUo
KQogewogLy8gRklYTUUoMTgyNzcyKQotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgU3RyaW5nIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6ZGF0YQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGxhdGZv
cm1NYXliZUV4Y2x1ZGVGcm9tQmFja3VwKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9xdWV1ZTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHBsYXRmb3JtTWF5
YmVFeGNsdWRlRnJvbUJhY2t1cCgpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBib29sIG1faGFzRXhj
bHVkZWRGcm9tQmFja3VwIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL2lvcy9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJWZXJzaW9uQ2hl
Y2tzLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QAogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CkBA
IC0xMTIsNCArMTEyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
RU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5oIgogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TKQorI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KQEAgLTMxMiw0
ICszMTIsNCBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJlCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYg
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTM4LDQgKzM4LDQgQEAgcHVibGljOgogCiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9J
bnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCiAKQEAgLTQ1LDQgKzQ1LDQgQEAgSW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXI6On5JbnB1dFZpZXdVcGRhdAogICAgIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvTGF5ZXJSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvTGF5ZXJSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0xheWVyUmVwcmVzZW50YXRpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiTGF5ZXJSZXByZXNlbnRhdGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KIENBTGF5ZXIgKmFz
TGF5ZXIoTGF5ZXJPclZpZXcgKnZpZXcpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGFnZUNsaWVudEltcGxDb2Nv
YS5oIgogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtMjI4LDQgKzIy
OCw0IEBAIHByaXZhdGU6CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQSURhdGEuaCIKICNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKQEAgLTg0NCw2ICs4NDQsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpyZXF1ZXN0UGFzc3dvcmRGb3JRCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICN1bmRl
ZiBNRVNTQUdFX0NIRUNLCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vz
c0Fzc2VydGlvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvY2Vzc0Fz
c2VydGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgIkFzc2VydGlvblNlcnZpY2VzU1BJLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBMQVRGT1JN
KElPU19TSU1VTEFUT1JfRkFNSUxZKQogCiB1c2luZyBXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb25D
bGllbnQ7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6
c2V0Q2xpZW50KFByCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZWxzZSAvLyBQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQorI2Vsc2UgLy8gUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkp
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0yOTcsNiArMjk3LDYgQEAgdm9pZCBQcm9jZXNz
QW5kVUlBc3NlcnRpb246OnNldENsaWVudChQcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X1NJTVVMQVRPUl9GQU1JTFkpCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2VJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJfaAogI2RlZmluZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyX2gK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAg
LTYyLDYgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNlbmRpZiAvLyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIG1lc3NhZ2VzIC0+IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIg
ewogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBX
ZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJlUmVj
dCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2Nh
bGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvck1lc3NhZ2VzLmgiCkBAIC0xMzAsNCArMTMwLDQgQEAgdm9pZCBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyOjptYWduaQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlRleHRDaGVja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVUlL
aXRTUEkuaCIKQEAgLTI3NSw0ICsyNzUsNCBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAi
QVBJTmF2aWdhdGlvbi5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMzk0LDQg
KzM5NCw0IEBAIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb21wbGV0ZVNpbXUKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FjdGlvblNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQWN0aW9uU2hlZXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlBbGVy
dENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJUG9wb3ZlckNvbnRyb2xsZXIuaD4KQEAg
LTU3LDQgKzU3LDQgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tBY3Rpb25TaGVldAog
LSAodm9pZCl1cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9uOwogQGVuZAogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tBY3Rpb25TaGVldC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CkBAIC0yNTksNCArMjU5LDQgQEAgLSAodm9pZClkaWRSb3RhdGUKIAogQGVuZAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FjdGlvblNoZWV0QXNzaXN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkdlc3R1cmVUeXBlcy5o
IgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldC5oIgpAQCAtODIsNCArODIsNCBAQCBzdHJ1Y3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiAtIChOU0FycmF5ICopY3VycmVudEF2YWls
YWJsZUFjdGlvblRpdGxlczsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2lt
cG9ydCAiVENDU1BJLmgiCkBAIC02MzYsNCArNjM2LDQgQEAgLSAodm9pZCljbGVhbnVwU2hlZXQK
IAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlv
blN0YXRlVHJhY2tpbmdWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAKQEAgLTM4LDQgKzM4
LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lmgi
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFs
LmgiCkBAIC0xMDQsNCArMTA0LDQgQEAgLSAoVUlWaWV3ICopX2NvbnRlbnRWaWV3CiAKIEBlbmQK
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCkBAIC03MTAsNCArNzEw
LDQgQEAgLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERvY3VtZW50CiAKICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TTUFDKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKIApAQCAtNDIwLDQgKzQyMCw0
IEBAIERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUUKICsgKENsYXNzKV9m
aWxlVXBsb2FkUGFuZWxDbGFzczsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQSVVJQ2xp
ZW50LmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTY1NTMsNCArNjU1Myw0IEBAICsg
KFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3QKIAogQGVuZAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPEZvdW5kYXRp
b24vTlNPYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KQEAgLTQ1LDQgKzQ1LDQg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAtKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBmcmFt
ZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rp
b248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKXZpZXc7
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBvcnQgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCkBAIC0zNTUsNCArMzU1LDQgQEAgLSAoQk9PTClzaG91bGRDbGVh
ckNhY2hlCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3Vy
aXR5T3JpZ2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkwuaD4KQEAgLTU2LDQg
KzU2LDQgQEAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
SW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNv
Z25pemVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0IDxVSUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2Rl
U2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXpl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJ
S2l0L1VJR2VzdHVyZVJlY29nbml6ZXJTdWJjbGFzcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNjgsNCArNjgs
NCBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgCiAKIEBlbmQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL0NBRGlzcGxheUxpbmsuaD4KQEAgLTYzOSw0ICs2MzksNCBAQCAtICh2b2lkKWRpZEZp
bmlzaFNjcm9sbGluZwogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAKQEAgLTM4LDQgKzM4LDQg
QEAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZQYWdl
TnVtYmVySW5kaWNhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtMjExLDQgKzIxMSw0IEBAIC0gKHZvaWQpX21h
a2VSb3VuZGVkQ29ybmVycwogCiBAZW5kCiAKLSNlbmRpZiAvKiBQTEFURk9STShJT1MpICovCisj
ZW5kaWYgLyogUExBVEZPUk0oSU9TX0ZBTUlMWSkgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KIApAQCAtMzksNCArMzksNCBAQAogCiBAZW5kCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXS1Bhc3N3b3JkVmlldy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRl
bnRWaWV3LmgiCkBAIC0xODcsNCArMTg3LDQgQEAgLSAodm9pZClkaWRFbmRFZGl0aW5nUGFzc3dv
cmQ6KFVJVGV4dEZpZQogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIK
IApAQCAtNDIsNCArNDIsNCBAQAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtMzg1LDQgKzM4NSw0
IEBAIC0gKENHUG9pbnQpX3B1aWNfY29udGVudE9mZnNldEZvckNyb3duSW4KIAogQGVuZAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1
cmVSZWNvZ25pemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLU3ludGhldGljQ2xpY2tUYXBHZXN0dXJlUmVjb2duaXplci5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1
cmVSZWNvZ25pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29n
bml6ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeW50
aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29n
bml6ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxV
SUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyU3ViY2xhc3MuaD4KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkV2ZW50Lmg+CiAKQEAgLTM3LDQgKzM3LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tXZWJF
dmVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC02Niw0
ICs2Niw0IEBAIC0gKFVJRXZlbnQgKil1aUV2ZW50CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNp
bXBvcnQgIldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIgpAQCAtNTksNCArNTksNCBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKIAotI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKICNp
bXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgpAQCAtMzczLDQgKzM3Myw0IEBAIC0g
KHZvaWQpdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmkKIAogQGVuZAogCi0jZW5kaWYg
Ly8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgpAQCAtMTE0NSw0ICsxMTQ1LDQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlcXVlc3RQYXNzd29yZEZvcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUHJvY2Vz
c1Byb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KIApAQCAtNDIsNCArNDIsNCBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtl
eWJvYXJkQWNjZXNzCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNr
ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKIApAQCAtNTIsNSArNTIsNSBAQCBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGlj
eSA6IHVpbnQ4X3Q7CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFC
TEUoQUlSUExBWV9QSUNLRVIpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5B
QkxFKEFJUlBMQVlfUElDS0VSKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91
dGVQaWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiV0tBaXJQbGF5Um91dGVQaWNrZXIuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBv
cnQgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CkBAIC0yMjEsNCArMjIxLDQgQEAgLSAodm9pZClz
aG93RnJvbVZpZXc6KFVJVmlldyAqKXZpZXcgcm91dAogCiAjZW5kaWYKIAotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
aWxlVXBsb2FkUGFuZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxl
ci5oPgogCkBAIC01MCw0ICs1MCw0IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHk7CiAtICh2b2lkKWZpbGVVcGxvYWRQYW5lbERpZERpc21pc3M6KFdLRmlsZVVwbG9hZFBh
bmVsICopZmlsZVVwbG9hZFBhbmVsOwogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBs
b2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiV0tGaWxlVXBsb2FkUGFuZWwuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElBcnJheS5oIgogI2lt
cG9ydCAiQVBJRGF0YS5oIgpAQCAtNzIzLDQgKzcyMyw0IEBAIC0gKEJPT0wpcGxhdGZvcm1TdXBw
b3J0c1BpY2tlclZpZXdDb250cm8KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNv
bnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtQ29sb3JDb250cm9sLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCiAKQEAgLTMzLDQgKzMzLDQgQEAKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVuZAogCi0jZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0Zvcm1Db2xvckNvbnRyb2wuaCIK
IAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
IlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCkBAIC0xMjYsNCArMTI2LDQg
QEAgLSAodm9pZCllbmRFZGl0aW5nCiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9y
UGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
ICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgogCkBAIC00MSw0
ICs0MSw0IEBAIE9CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1Db2xvclBpY2tlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRm9ybUNvbG9yUGlja2VyLmgiCiAKLSNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTMxNiw0ICszMTYs
NCBAQCAtICh2b2lkKWRpZFBhbkNvbG9yczooVUlHZXN0dXJlUmVjb2duaXplCiAKIEBlbmQKIAot
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bUlucHV0Q29udHJvbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldL
Rm9ybVBlcmlwaGVyYWwuaCIKIApAQCAtMzMsNCArMzMsNCBAQAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJv
bC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJV
SUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtMzY1LDQgKzM2NSw0IEBA
IC0gKFVJVmlldyAqKWNvbnRyb2xWaWV3CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVBvcG92ZXJDb250cm9sbGVyLmg+CiAKQEAgLTU1
LDQgKzU1LDQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAtICh2b2lkKWFj
Y2Vzc29yeURvbmU7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0Zv
cm1Qb3BvdmVyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKQEAg
LTE4MSw0ICsxODEsNCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9s
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgiCiAjaW1wb3J0
ICJVSUtpdFNQSS5oIgpAQCAtNDksNCArNDksNCBAQCBDR0Zsb2F0IGFkanVzdGVkRm9udFNpemUo
Q0dGbG9hdCB0ZXh0V2lkCiAtICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4IGlu
Q29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOihC
T09MKWV4dGVuZGluZ1NlbGVjdGlvbjsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1TZWxlY3RDb250cm9sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJVSUtpdFNQ
SS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtMTIxLDQgKzEyMSw0IEBAIC0gKE5T
U3RyaW5nICopc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZQogCiBAZW5kCiAKLSNlbmRpZiAgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmICAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNr
ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXS0Zvcm1QZXJpcGhl
cmFsLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVBpY2tlclZpZXcuaD4KQEAgLTM4LDQgKzM4LDQgQEAK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVu
ZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0
UGlja2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tGb3Jt
U2VsZWN0UGlja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIK
QEAgLTQ1Miw0ICs0NTIsNCBAQCAtICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4
IGluCiAKIEBlbmQKIAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtU2VsZWN0UG9wb3Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKICNpbXBvcnQgIldLRm9ybVBv
cG92ZXIuaCIKQEAgLTM3LDQgKzM3LDQgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgVUlUYWJsZVZpZXdDb250cm9sbGVyICp0YWJsZVZpZXdDb250cm9sbGVyOwogQGVuZAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0UG9wb3Zlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tGb3JtU2Vs
ZWN0UG9wb3Zlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCkBA
IC00NjMsNCArNDYzLDQgQEAgLSAodm9pZClzZWxlY3RSb3c6KE5TSW50ZWdlcilyb3dJbmRleCBp
bgogCiBAZW5kCiAKLSNlbmRpZiAgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmICAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3Jl
ZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljLmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYm
IFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCkBAIC04Myw0ICs4
Myw0IEBAIGRvdWJsZSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWM6OmF0dGUKIAogfQogCi0j
ZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1
bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5j
bHVkZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNjMsNCArNjMsNCBAQCBwcml2YXRlOgogCiB9CiAK
LSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KIApAQCAtNTEsNCArNTEsNCBAQCBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmIC8vIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldL
RnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgIkZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpYy5oIgpAQCAtNTgxLDQgKzU4MSw0IEBAIC0gKHZvaWQpX3Nob3dQaGlzaGluZ0Fs
ZXJ0CiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
SU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
PFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCIKIAogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKQEAgLTEwNDMsNCArMTA0Myw0IEBAIC0gKHZvaWQpX2ludGVyYWN0
aXZlUGluY2hEaXNtaXNzQ2hhbmdlZDoKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvQVZLaXRTUEkuaD4KQEAgLTM4LDQgKzM4LDQgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldLRnVsbHNjcmVlblN0YWNrVmlldy5oIgogCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtODQsNCArODQsNCBAQCAtICh2b2lkKWxheW91dFN1YnZp
ZXdzCiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgc2Vz
c2lvbkhpc3RvcnlFCiBjb25zdCB1aW50MzJfdCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YVZlcnNp
b24gPSAyOwogCiAvLyBNYXhpbXVtIHNpemUgZm9yIHN1YmZyYW1lIHNlc3Npb24gZGF0YS4KLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBtYXhpbXVtU2Vzc2lvblN0YXRlRGF0YVNpemUgPSAyICogMTAyNCAqIDEwMjQ7CiAj
ZWxzZQogc3RhdGljIGNvbnN0IHVpbnQzMl90IG1heGltdW1TZXNzaW9uU3RhdGVEYXRhU2l6ZSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKQEAgLTE0Niw3ICsxNDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBIaXN0b3J5RW50cnlEYXRhRW5jb2Rl
ciYgb3BlcmF0b3I8PChXZWJDb3JlOjpGbG9hdFJlY3QgdmFsdWUpCiAgICAgewogICAgICAgICAq
dGhpcyA8PCB2YWx1ZS54KCk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
RnJhbWVTdGF0ZU5vZGUoSGlzdG9yeQogCiAgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRlLnRhcmdl
dDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBpT1Mgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRlIGVuY29k
ZXIuCiAgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50UmVjdDsKICAgICBl
bmNvZGVyIDw8IGZyYW1lU3RhdGUudW5vYnNjdXJlZENvbnRlbnRSZWN0OwpAQCAtNjMzLDcgKzYz
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEhpc3RvcnlFbnRyeURhdGFE
ZWNvZGVyJiBvcGVyYXRvcj4+KFdlYkNvcmU6OkZsb2F0UmVjdCYgdmFsdWUpCiAgICAgewogICAg
ICAgICB2YWx1ZSA9IFdlYkNvcmU6OkZsb2F0UmVjdCgpOwpAQCAtOTQyLDcgKzk0Miw3IEBAIHN0
YXRpYyB2b2lkIGRlY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoSGkKIAogICAgIGRlY29kZXIgPj4g
ZnJhbWVTdGF0ZS50YXJnZXQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogaU9TIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vz
c2lvbiBzdGF0ZSBkZWNvZGVyLgogICAgIGRlY29kZXIgPj4gZnJhbWVTdGF0ZS5leHBvc2VkQ29u
dGVudFJlY3Q7CiAgICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLnVub2JzY3VyZWRDb250ZW50UmVj
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdU
b1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1Rv
QWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogCkBAIC04Miw0ICs4Miw0IEBAIHByaXZhdGU6
CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRFJBV0lOR19BUkVBX1BST1hZKFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHksIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlv
bikKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19G
QU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2Fn
ZXMuaCIKQEAgLTIyMCw0ICsyMjAsNCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TbmFwc2hv
dENhY2hlU2l6ZSA9IDUwICogKDEwMjQgKiAxMDI0KTsKICNlbHNlCiBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1TbmFwc2hvdENhY2hlU2l6ZSA9IDQwMCAqICgxMDI0ICogMTAyNCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5oIgogCkBAIC03NjIsNCArNzYyLDQgQEAgLSAodm9pZClfd2F0Y2hk
b2dUaW1lckZpcmVkOihOU1RpbWVyICopdAogCiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3
IEBAIFdlYlByb2Nlc3MmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpCiAKIFdlYlByb2Nlc3M6Oldl
YlByb2Nlc3MoKQogICAgIDogbV9ldmVudERpc3BhdGNoZXIoRXZlbnREaXNwYXRjaGVyOjpjcmVh
dGUoKSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAs
IG1fdmlld1VwZGF0ZURpc3BhdGNoZXIoVmlld1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0ZSgpKQog
I2VuZGlmCiAgICAgLCBtX3dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIoV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Y3JlYXRlKCkpCkBAIC0yNDUsOSArMjQ1LDkgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogI2VuZGlmCiAKICAgICBtX2V2
ZW50RGlzcGF0Y2hlci0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV92aWV3VXBkYXRlRGlz
cGF0Y2hlci0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV93ZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9u
KTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMzE3LDcgKzMxNyw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBwZXIgZGF0YSBzdG9yZSwgbm90IHBlciBwcm9j
ZXNzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLT5zZXREZWZhdWx0T3JpZ2luUXVvdGEoMjVVTEwgKiAxMDI0ICogMTAyNCk7CiAj
ZW5kaWYKIApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVw
ZGF0ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2Vv
bG9jYXRpb25QZXJtaXNzaW9ucygpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKSB7CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmFjdHVh
bFByZXBhcmVUb1N1c3BlbmQoCiAgICAgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBh
Y2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbih0cnVlKTsKICNlbmRpZgog
CkBAIC0xNDA5LDcgKzE0MDksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1
c3BlbmQoCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nl
c3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOwogICAgIHNldEFsbExheWVyVHJl
ZVN0YXRlc0Zyb3plbihmYWxzZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBhY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlv
bihmYWxzZSk7CiAjZW5kaWYKICAgICAKQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgY2FuY2VsTWFya0FsbExheWVyc1ZvbGF0aWxl
KCk7CiAgICAgc2V0QWxsTGF5ZXJUcmVlU3RhdGVzRnJvemVuKGZhbHNlKTsKICAgICAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhY2Nlc3NpYmlsaXR5
UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbihmYWxzZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjAz
LDcgKzIwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZFByZXdhcm1JbmZvcm1hdGlvbihj
b25zdCBXZWJDb3JlOjpVUkwmKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CiAj
ZW5kaWYKIApAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNhY2hlU3RvcmFn
ZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdl
UHJvdmlkZXIuZ2V0KCk7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVByb2Nlc3NTdXNwZW5kZWROb3RpZmljYXRp
b24oYm9vbCk7CiAjZW5kaWYKIApAQCAtMzk0LDcgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCiAgICAgUmVmUHRyPEV2ZW50
RGlzcGF0Y2hlcj4gbV9ldmVudERpc3BhdGNoZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBtX3Zp
ZXdVcGRhdGVEaXNwYXRjaGVyOwogI2VuZGlmCiAgICAgUmVmUHRyPFdlYkluc3BlY3RvckludGVy
cnVwdERpc3BhdGNoZXI+IG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNv
bnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5
UG9pbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9F
bnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgog
I2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lz
dGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJ
Lmg+CiAjZW5kaWYKQEAgLTQzLDEwICs0MywxMCBAQCB2b2lkIFdlYkNvbnRlbnRTZXJ2aWNlSW5p
dGlhbGl6ZXIoeHBjX2NvCiAgICAgLy8gdGhlIHRoaXMgcHJvY2VzcyBkb24ndCB0cnkgdG8gaW5z
ZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVz
OjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIv
V2ViUHJvY2Vzc1NoaW0uZHlsaWIiKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEdTSW5pdGlhbGl6ZSgpOwogICAgIEluaXRXZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplcjxX
ZWJLaXQ6OldlYlByb2Nlc3MsIFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU+
KGFkb3B0T1NPYmplY3QoY29ubmVjdGlvbiksIGluaXRpYWxpemVyTWVzc2FnZSwgcHJpb3JpdHlC
b29zdE1lc3NhZ2UpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNj
cmVlbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg+CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjZW5kaWYKIApAQCAtODYs
NyArODYsNyBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6CiAKIHZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBMT0coRnVsbHNj
cmVlbiwgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyICVwIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hh
bmdlKCkiLCB0aGlzKTsKIAogICAgIGF1dG8qIGN1cnJlbnRQbGF5YmFja0NvbnRyb2xzRWxlbWVu
dCA9IG1fcGFnZS0+cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpLmN1cnJlbnRQbGF5YmFja0NvbnRy
b2xzRWxlbWVudCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OndpbGxFbnRlckZ1bGwKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYkZ1bGxTY3JlZW5NYW5h
Z2VyICVwIHdpbGxFbnRlckZ1bGxTY3JlZW4oKSAtIGVsZW1lbnQgJXAiLCB0aGlzLCBtX2VsZW1l
bnQuZ2V0KCkpOwogCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLndlYmtpdFdpbGxFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3BhZ2UtPmhpZGVQYWdlQmFubmVycygp
OwogI2VuZGlmCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwpAQCAt
MTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbFMK
IAogICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KG1fZWxlbWVudC5nZXQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBhdXRvKiBjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbnQgPSBtX3Bh
Z2UtPnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKS5jdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1l
bnQoKTsKICAgICBzZXRQSVBTdGFuZGJ5RWxlbWVudChpczxIVE1MVmlkZW9FbGVtZW50PihjdXJy
ZW50UGxheWJhY2tDb250cm9sc0VsZW1lbnQpID8gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4o
Y3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVtZW50KSA6IG51bGxwdHIpOwogI2VuZGlmCkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsUwog
CiAgICAgbV9maW5hbEZyYW1lID0gc2NyZWVuUmVjdE9mQ29udGVudHMobV9lbGVtZW50LmdldCgp
KTsKICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCkud2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgbV9wYWdlLT5zaG93UGFnZUJhbm5lcnMoKTsKICNlbmRpZgog
ICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuYmVnYW5FeGl0RnVs
bFNjcmVlbihtX3BhZ2UuZ2V0KCksIG1fZmluYWxGcmFtZSwgbV9pbml0aWFsRnJhbWUpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTEgKzExNywxMSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucygpCiB7CiAgICAgbV9wcm9jZXNzLnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
aWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJik7CiAg
ICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCByZXNldFBlcm1pc3Npb25zKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAg
ICAgSGFzaFNldDxXZWJQYWdlKj4gbV9wYWdlU2V0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXIgewogICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb24gcG9zaXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0
cmluZyBlcnJvck1lc3NhZ2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopaHRt
bElGcmFtZUUKICAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9ub2RlSGFuZGxlLT5odG1sSUZy
YW1lRWxlbWVudENvbnRlbnRGcmFtZSgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAoVUlJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
czooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucwogewogICAgIHJldHVybiBbc2VsZiByZW5kZXJl
ZEltYWdlV2l0aE9wdGlvbnM6b3B0aW9ucyB3aWR0aDpuaWxdOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRCb3R0b21PdmVyaGFuZ0lt
YWdlKAogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRIZWFkZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZiBiYW5uZXJSZWYpCiB7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRIZWFkZXJQYWdlQmFubmVyKHRvSW1wbChiYW5uZXJSZWYpKTsKQEAgLTQz
MCw3ICs0MzAsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldEZvb3RlckJhbm5lcihXS0J1bmRsCiB7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb290ZXJQYWdlQmFubmVyKHRvSW1wbChiYW5uZXJS
ZWYpKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tC
dW5kbGVQYWdlQmFubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlQmFubmVyTWFjLmgiCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5lci5oIgpAQCAtMTEyLDQgKzExMiw0
IEBAIENBTGF5ZXIgKldLQnVuZGxlUGFnZUJhbm5lckdldExheWVyKFdLQnUKICAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwocGFnZUJhbm5lciktPmxheWVyKCk7CiB9CiAKLSNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0ICJXS0RPTURvY3VtZW50
LmgiCiAjaW1wb3J0ICJXS0RPTVRleHQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVicy5oPgogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTk1LDcgKzU5NSw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQg
PFdLV2ViUHIKIAogICAgICAgICAgICAgYXV0byBhcGlGcm9tUmFuZ2UgPSBmcm9tUmFuZ2UgPyBh
ZG9wdE5TKFtbV0tET01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDpmcm9tUmFuZ2VdKSA6IG5p
bDsKICAgICAgICAgICAgIGF1dG8gYXBpVG9SYW5nZSA9IHRvUmFuZ2UgPyBhZG9wdE5TKFtbV0tE
T01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDp0b1JhbmdlXSkgOiBuaWw7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBVSVRleHRTdG9y
YWdlRGlyZWN0aW9uIGFwaUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0g
PyBVSVRleHRTdG9yYWdlRGlyZWN0aW9uQmFja3dhcmQgOiBVSVRleHRTdG9yYWdlRGlyZWN0aW9u
Rm9yd2FyZDsKICNlbHNlCiAgICAgICAgICAgICBOU1NlbGVjdGlvbkFmZmluaXR5IGFwaUFmZmlu
aXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0gPyBOU1NlbGVjdGlvbkFmZmluaXR5
VXBzdHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgRnJhbWVTdGF0ZSB0b0Zy
YW1lU3RhdGUoY29uc3QgSGlzCiAgICAgICAgIGZyYW1lU3RhdGUuaHR0cEJvZHkgPSBXVEZNb3Zl
KGh0dHBCb2R5KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50UmVjdCA9IGhpc3RvcnlJdGVt
LmV4cG9zZWRDb250ZW50UmVjdCgpOwogICAgIGZyYW1lU3RhdGUudW5vYnNjdXJlZENvbnRlbnRS
ZWN0ID0gaGlzdG9yeUl0ZW0udW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CiAgICAgZnJhbWVTdGF0
ZS5taW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0gaGlzdG9yeUl0ZW0u
bWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpOwpAQCAtMTY4LDcgKzE2
OCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYKICAgICAgICAg
aGlzdG9yeUl0ZW0uc2V0Rm9ybURhdGEodG9Gb3JtRGF0YShodHRwQm9keSkpOwogICAgIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGhpc3RvcnlJ
dGVtLnNldEV4cG9zZWRDb250ZW50UmVjdChmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50UmVjdCk7
CiAgICAgaGlzdG9yeUl0ZW0uc2V0VW5vYnNjdXJlZENvbnRlbnRSZWN0KGZyYW1lU3RhdGUudW5v
YnNjdXJlZENvbnRlbnRSZWN0KTsKICAgICBoaXN0b3J5SXRlbS5zZXRNaW5pbXVtTGF5b3V0U2l6
ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKGZyYW1lU3RhdGUubWluaW11bUxheW91dFNpemVJblNj
cm9sbFZpZXdDb29yZGluYXRlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwogI2VuZGlmCiBw
cml2YXRlOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigidW51c2VkLXByaXZhdGUtZmllbGQiKQogI2Vu
ZGlmCiAgICAgV2ViUGFnZSAqbV9wYWdlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICNlbmRpZgogfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCi0jaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnMK
IAogRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OwogI2Vsc2UKICNpZiBQTEFURk9STShNQUMpCkBAIC01NjIsNyArNTYyLDcgQEAgSW50UmVjdCBX
ZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3VG9TY3JlZQogICAgIHJldHVybiBtX3BhZ2Uucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0eVNj
cmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIHJldHVy
biBtX3BhZ2UuYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOwpAQCAtODE3LDcg
KzgxNyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpsb2FkSWNvbkZvckZpbGVzKGMKICAgICBs
b2FkZXIuaWNvbkxvYWRlZChjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewpAQCAtOTUwLDcg
Kzk1MCw3IEBAIFJlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gV2ViQ2hyb21lQ2wKIAogI2Vu
ZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKIHsKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y2xlYXJQ
bGF5YmFja0NvbnRyCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVl
bkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIHN0YW5kYnkpCiB7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChzdGFu
ZGJ5IHx8IG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CiAjZWxzZQogICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRQogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBGbG9hdFNpemUgV2ViQ2hyb21lQ2xp
ZW50OjpzY3JlZW5TaXplKCkgY29uc3QKIHsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjppbnB1dEVsZW1lbnREaWRSZXMKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2UgeyBVc2VyRGF0YSB7IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpIH0gfSk7CiB9CiAKLSNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3Qg
Y29udGV4dElkKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
Y29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBmaW5hbDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7
CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTE1NCw3ICsxNTQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgpIGZpbmFs
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
c2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKFdlYkNvcmU6OkZyYW1lJiwgYm9vbCkgZmluYWw7
CiAgICAgdm9pZCBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoV2ViQ29yZTo6RnJhbWUmKSBmaW5hbDsK
QEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoV2Vi
Q29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUljb25Mb2FkZXImKSBmaW5hbDsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDdXJzb3Io
Y29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgZmluYWw7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5V
bnRpbE1vdXNlTW92ZXMoYm9vbCkgZmluYWw7CiAjZW5kaWYKQEAgLTIzMiwxMCArMjMyLDEwIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBWaWRlb1RyaWdnZXIgfAogICAgICAgICAgICAgUGx1Z2lu
VHJpZ2dlcnwKICAgICAgICAgICAgIENhbnZhc1RyaWdnZXIgfAotI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgICAgIFNjcm9sbGFibGVOb25NYWluRnJhbWVUcmlnZ2VyIHwKICNlbmRpZgot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAg
QW5pbWF0ZWRPcGFjaXR5VHJpZ2dlciB8IC8vIEFsbG93IG9wYWNpdHkgYW5pbWF0aW9ucyB0byB0
cmlnZ2VyIGNvbXBvc2l0aW5nIG1vZGUgZm9yIGlQaG9uZTogPHJkYXI6Ly9wcm9ibGVtLzc4MzA2
Nzc+CiAjZW5kaWYKICAgICAgICAgICAgIEFuaW1hdGlvblRyaWdnZXIpOwpAQCAtMjQ3LDExICsy
NDcsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I+IGNyZWF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKFdlYkNvcmU6OlBhZ2UmKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCBlbGVtZW50RGlkUmVmb2N1cyhXZWJDb3JlOjpFbGVtZW50JikgZmluYWw7CiAj
ZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBib29sIHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBmaW5hbDsKICAg
ICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudCYpIGZpbmFsOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFi
bGVTdWRkZW5UZXJtaW5hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1p
bmF0aW9uKCkgZmluYWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgZmluYWw7
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0IGZpbmFs
OwpAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlucHV0RWxlbWVudERp
ZFJlc2lnblN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
JikgZmluYWw7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQo
dWludDY0X3QgLypjb250ZXh0SWQqLykgZmluYWw7CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudCh1aW50NjRfdCAvKmNvbnRleHRJZCovKSBmaW5hbDsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcih1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgYm9vbCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw3ICs0MDUsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4CiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShtX3BhZ2Us
IGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpLCB3ZWJGcmFtZSk7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHNob3VsZFNob3dVbmljb2RlTWVudSgpIGZpbmFsOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0YXJ0RGVsYXlpbmdBbmRD
b2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKICAgICB2b2lkIHN0
b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIGZpbmFs
OwogICAgIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTGEKIAogICAgIHdlYlBhZ2UtPnJlY29tcHV0ZVNob3J0Q2lyY3Vp
dEhvcml6b250YWxXaGVlbEV2ZW50c1N0YXRlKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB3ZWJQYWdlLT51cGRhdGVTZWxlY3Rpb25BcHBlYXJh
bmNlKCk7CiAjZW5kaWYKIApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZnJhbWVMb2FkQ29tcAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
Vmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5zYXZlUGFnZVN0YXRlKGhpc3RvcnlJ
dGVtKTsKICNlbHNlCkBAIC0xMjc4LDcgKzEyNzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzYXZlVmlld1N0YXRlCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVW
aWV3U3RhdGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIEZyYW1lJiBmcmFtZSA9ICptX2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBIaXN0b3J5
SXRlbSogY3VycmVudEl0ZW0gPSBmcmFtZS5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0o
KTsKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpKSB7CkBAIC0xNDM0LDcg
KzE0MzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9DCiAgICAg
aWYgKHdlYlBhZ2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT52aWV3KCktPnNldFZpZXdFeHBvc2VkUmVjdCh3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT52aWV3
RXhwb3NlZFJlY3QoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXREZWxlZ2F0
ZXNTY3JvbGxpbmcodHJ1ZSk7CiAjZW5kaWYKIApAQCAtMTY1Miw3ICsxNjUyLDcgQEAgT2JqZWN0
Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OgogICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1
cm4gT2JqZWN0Q29udGVudFR5cGU6OkZyYW1lOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gaU9TIGNhbiByZW5kZXIgUERGIGluIDxvYmplY3Q+
LzxlbWJlZD4gdmlhIFBERkRvY3VtZW50SW1hZ2UuCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gT2Jq
ZWN0Q29udGVudFR5cGU6OkltYWdlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5h
bDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29s
IGZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogI2VuZGlmCiAgICAg
dm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKSBmaW5hbDsKQEAgLTg1LDcgKzg1LDcgQEAgcHJp
dmF0ZToKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIGJvb2wg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlJikgZmluYWw7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJv
cGVydGllcyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CkBAIC0xOTcsNyArMTk3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6
Q2FjaGVkRnJhbWUqKSBmaW5hbDsKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21D
YWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkUmVzdG9yZUZyYW1lSGll
cmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXku
aD4KICNlbmRpZgogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OmhpZ2hsaWdodCgpCiAgICAgaWYgKCFtX3BhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1faGlnaGxp
Z2h0T3ZlcmxheSkgewogICAgICAgICBhdXRvIGhpZ2hsaWdodE92ZXJsYXkgPSBQYWdlT3Zlcmxh
eTo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgbV9oaWdobGlnaHRPdmVybGF5ID0gaGlnaGxpZ2h0
T3ZlcmxheS5wdHIoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aGlnaGxpZ2h0KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdobGlnaHQo
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKG1faGlnaGxpZ2h0T3ZlcmxheSkKICAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5wYWdl
T3ZlcmxheUNvbnRyb2xsZXIoKS51bmluc3RhbGxQYWdlT3ZlcmxheSgqbV9oaWdobGlnaHRPdmVy
bGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwogI2Vsc2UKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YW5pbWF0aW9uRW5kZWRGCiAgICAgbV9wYWlu
dFJlY3RMYXllcnMucmVtb3ZlKCpub25Db25zdExheWVyKTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNo
b3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBtX3BhZ2UtPnNob3dJbnNwZWN0b3JJbmRp
Y2F0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJy
aWRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUlu
c3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0TnVt
YmVyT2ZGaQogICAgIHJldHVybiBudW1iZXJPZkZpbGVzOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OjpS
ZXBseSh0eXBlcyksIDApOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRTdHJpbmcKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1cm4gdmFsdWU7CiB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHdyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChj
b25zdCBXZWJDb3JlOjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNo
cm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJv
bWVDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRHJhd2luZ0FyZWEuaCIK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0xNjEsNCArMTYxLDQgQEAgUmVmUHRyPEljb24+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JD
bGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xp
ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIldlYkVkaXRvckNsaWVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQg
PFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgpAQCAtOTMsNCArOTMsNCBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6b3ZlcmZsb3dTY3JvbGxQb3NpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZy
YW1lTG9hZGVyQ2xpZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbXBvcnQgPFdlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJQYWdlLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogCkBAIC04MCw0ICs4MCw0IEBAIFJlZlB0cjxQcmV2aWV3TG9h
ZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWQKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNlbmRpZgogCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0
IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lk
IFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoCiAgICAgbV9wYWdlLT5kaWRDb25j
bHVkZUVkaXREYXRhSW50ZXJhY3Rpb24oKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWEKIHsKICAgICBzd2l0Y2ggKHBh
cmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdB
cmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRf
dCAvKmxheWVySUQqLywgY29uc3QgU3RyaW5nJiAvKmtleSovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWRkRmVuY2UoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JikgeyB9CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9
IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3Qg
U3QKICAgICAvLyBpT1Mgd2lsbCByZXZlYWwgdGhlIHNlbGVjdGlvbiB0aHJvdWdoIGEgZGlmZmVy
ZW50IG1lY2hhbmlzbSwgYW5kCiAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBzZW5kaW5nIHRoZSBu
b24tcGFpbnRlZCBzZWxlY3Rpb24gY2hhbmdlIHRvIHRoZSBVSSBwcm9jZXNzCiAgICAgLy8gc28g
dGhhdCBpdCBkb2VzIG5vdCBjbGVhciB0aGUgc2VsZWN0aW9uIG91dCBmcm9tIHVuZGVyIHVzLgot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNvcmVPcHRp
b25zLmFkZChEb05vdFJldmVhbFNlbGVjdGlvbik7CiAjZW5kaWYKIApAQCAtMzE3LDcgKzMxNyw3
IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogICAgIGhpZGVGaW5kSW5kaWNh
dG9yKCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxl
Y3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkZp
bmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgiCiAjZW5kaWYKIApAQCAtMTAwLDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSW5kZXggdmFsdWUgaXMgLTEgaWYgbm90IGZvdW5kIG9yIGlm
IG51bWJlciBvZiBtYXRjaGVzIGV4Y2VlZHMgcHJvdmlkZWQgbWF4aW11bS4KICAgICBpbnQgbV9m
b3VuZFN0cmluZ01hdGNoSW5kZXggeyAtMSB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBhZ2VPdmVybGF5PiBtX2Zp
bmRJbmRpY2F0b3JPdmVybGF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaW5kSW5kaWNhdG9yT3Zl
cmxheUNsaWVudElPUz4gbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudDsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2VuZGlmCiAKQEAgLTUzLDcg
KzUzLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25z
dCBkb3VibGUgbWluaW11bVNjYWxlRGlmZmVyZW5jZUZvclpvb21pbmcgPSAwLjM7CiAjZW5kaWYK
IApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmRp
c3BhCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUob3JpZ2luLCB0YXJnZXRSZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGZpdEVudGly
ZVJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OkRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCB0YXJnZXRS
ZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGZpdEVudGlyZVJlY3QsIHZpZXdwb3J0TWluaW11bVNj
YWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOwogI2VuZGlmCiB9CkBAIC05MSw3ICs5MSw3IEBA
IHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKICAgICBkb3VibGUgdmll
d3BvcnRNaW5pbXVtU2NhbGU7CiAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlOwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fd2Vi
UGFnZS5wbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSkgewog
ICAgICAgICBhdXRvIHRleHRMZWdpYmlsaXR5U2NhbGVzID0gY29tcHV0ZVRleHRMZWdpYmlsaXR5
U2NhbGVzKHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAgICAg
ICAgIGlmICghdGV4dExlZ2liaWxpdHlTY2FsZXMpIHsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlCiAgICAgICAgIGRpc3BhdGNoRGlk
Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4sIHRhcmdl
dFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgdmlzaWJsZUNvbnRlbnRSZWN0LCB0cnVlLCB2aWV3
cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAgICAgSW50UG9pbnQgb3JpZ2luSW5Db250ZW50c1NwYWNlID0gbV93ZWJQYWdl
Lm1haW5GcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3VuZGVkSW50UG9pbnQob3JpZ2lu
KSk7CiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmln
aW5JbkNvbnRlbnRzU3BhY2UpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKICAgICBkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxlQ29u
dGVudFJlY3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGlt
dW1TY2FsZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogc3RydWN0IEZvbnRTaXplQW5kQ291bnQgewogICAgIHVuc2lnbmVkIGZvbnRTaXplOwpA
QCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
Pj4KICAgICByZXR1cm4gbV9jYWNoZWRUZXh0TGVnaWJpbGl0eVNjYWxlczsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lk
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVab29tSW5mb3JtYXRpb25Gb3JO
b2RlKE5vZGUmIG5vZGUsIEZsb2F0UG9pbnQmIG9yaWdpbiwgRmxvYXRSZWN0JiByZW5kZXJSZWN0
LCBib29sJiBpc1JlcGxhY2VkLCBkb3VibGUmIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUm
IHZpZXdwb3J0TWF4aW11bVNjYWxlKQogewpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKIAogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fY2FjaGVkVGV4dExlZ2liaWxpdHlTY2FsZXMu
cmVzZXQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVpvb21JbmZvcm1h
dGlvbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9yaWdpbiwg
V2ViQ29yZTo6RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sJiBpc1JlcGxhY2VkLCBkb3VibGUm
IHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKICAg
ICB2b2lkIGNvbXB1dGVNaW5pbXVtQW5kTWF4aW11bVZpZXdwb3J0U2NhbGVzKGRvdWJsZSYgdmll
d3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSYgdmlld3BvcnRNYXhpbXVtU2NhbGUpIGNvbnN0Owog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2liaWxpdHlT
Y2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGlt
dW1TY2FsZSk7CiAjZW5kaWYKIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNo
b2xkOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBtX2NhY2hlZFRl
eHRMZWdpYmlsaXR5U2NhbGVzOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIHsKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiAKICAgICBTZXRSZW5kZXJUcmVlU2l6
ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVy
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5j
bHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKQEAgLTg5LDQgKzg5LDQgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hW
aXNpYgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RJT1NfaAogI2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TX2gKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAi
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCIKIApAQCAtMzYsNiArMzYsNiBAQAog
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1NfaApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1Mu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtODEsNSArODEsNSBAQCAt
IChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2luCiAKIEBlbmQKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdWludDY0X3QgZmly
c3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExvYWQ7IH0KICAg
ICB2b2lkIHNldEZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCh1
aW50NjRfdCB0cmFuc2FjdGlvbklEKSB7IG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0
ZXJEaWRDb21taXRMb2FkID0gdHJhbnNhY3Rpb25JRDsgfQogI2VuZGlmCkBAIC0xODksNyArMTg5
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50NjRfdCBt
X2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCB7IDAgfTsKICNl
bmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vCiAgICAgbV9maWxlQ2hvb3Nlci0+Y2hv
b3NlRmlsZXMoZmlsZXMpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxl
c1dpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNv
bnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgV2ViQ29yZTo6SWNvbiogZGlzcGxheUljb24pCiB7
CiAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlTWVkaWFGaWxlcyhmaWxlcywgZGlzcGxheVN0cmlu
ZywgZGlzcGxheUljb24pOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CiAgICAg
dm9pZCBkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNX
aXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlTdHJpbmcsIFdlYkNvcmU6Okljb24qKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CkBAIC0zODAsNyAr
MzgwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgICwg
bV9wYWdlU2Nyb2xsZWRIeXN0ZXJlc2lzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0
ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIHBhZ2VTdG9w
cGVkU2Nyb2xsaW5nKCk7IH0sIHBhZ2VTY3JvbGxIeXN0ZXJlc2lzRHVyYXRpb24pCiAgICAgLCBt
X2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCkKICAgICAsIG1fY2FuUnVuTW9kYWwocGFyYW1ldGVycy5jYW5SdW5N
b2RhbCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAs
IG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUocGFyYW1ldGVycy5pZ25vcmVzVmlld3BvcnRTY2Fs
ZUxpbWl0cykKICAgICAsIG1fc2NyZWVuU2l6ZShwYXJhbWV0ZXJzLnNjcmVlblNpemUpCiAgICAg
LCBtX2F2YWlsYWJsZVNjcmVlblNpemUocGFyYW1ldGVycy5hdmFpbGFibGVTY3JlZW5TaXplKQpA
QCAtMzk5LDcgKzM5OSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQ
YWcKIAogICAgIG1fcGFnZUdyb3VwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdy
b3VwKHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFNo
b3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KHRydWUpOwogI2VuZGlmCiAKQEAgLTQ5Nyw3
ICs0OTcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnCiAgICAg
bV9wYWdlLT5zZXRHcm91cE5hbWUobV9wYWdlR3JvdXAtPmlkZW50aWZpZXIoKSk7CiAgICAgbV9w
YWdlLT5zZXREZXZpY2VTY2FsZUZhY3RvcihwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yKTsK
ICAgICBtX3BhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24obV91c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBtX3BhZ2UtPnNldFRleHRBdXRvc2l6aW5nV2lkdGgocGFyYW1ldGVycy50
ZXh0QXV0b3NpemluZ1dpZHRoKTsKICNlbmRpZgogCkBAIC02MjEsNyArNjIxLDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKHBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cyk7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHBhcmFtZXRlcnMudmll
d3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUsIHBhcmFtZXRlcnMudmlld3BvcnRDb25m
aWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yKTsKICAgICBzZXRNYXhpbXVtVW5vYnNjdXJl
ZFNpemUocGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUpOwogI2VuZGlmCkBAIC03MTUs
MTIgKzcxNSwxMiBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAgICAgZm9yIChhdXRvKiBwbHVnaW5W
aWV3IDogbV9wbHVnaW5WaWV3cykKICAgICAgICAgcGx1Z2luVmlldy0+d2ViUGFnZURlc3Ryb3ll
ZCgpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAobV9oZWFkZXJCYW5uZXIpCiAgICAgICAgIG1faGVhZGVyQmFubmVyLT5kZXRhY2hGcm9t
UGFnZSgpOwogICAgIGlmIChtX2Zvb3RlckJhbm5lcikKICAgICAgICAgbV9mb290ZXJCYW5uZXIt
PmRldGFjaEZyb21QYWdlKCk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsK
IApAQCAtNzM2LDcgKzczNiw3IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkKICAgICB3ZWJQYWdlQ291
bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogICAgIAotI2lmIChQTEFURk9STShJT1MpICYmIEhB
VkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBpZiAo
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXItPmludmFsaWRhdGUoKTsKIApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgdm9pZCBXZWJQYWdlOjpz
Y2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjbwogICAgIGRvdWJsZSB0b3RhbFNjYWxlID0gc2NhbGUg
KiB2aWV3U2NhbGVGYWN0b3IoKTsKICAgICBib29sIHdpbGxDaGFuZ2VTY2FsZUZhY3RvciA9IHRv
dGFsU2NhbGUgIT0gdG90YWxTY2FsZUZhY3RvcigpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHdpbGxDaGFuZ2VTY2FsZUZhY3Rvcikgewog
ICAgICAgICBpZiAoIW1faW5EeW5hbWljU2l6ZVVwZGF0ZSkKICAgICAgICAgICAgIG1fZHluYW1p
Y1NpemVVcGRhdGVIaXN0b3J5LmNsZWFyKCk7CkBAIC0xODQyLDcgKzE4NDIsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4CiAgICAgICAgIHJldHVybjsKICAgICBt
X3VzZUZpeGVkTGF5b3V0ID0gZml4ZWQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRGaXhlZEVsZW1lbnRz
TGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGZpeGVkKTsKICNlbmRpZgogCkBAIC0xODgwLDcgKzE4ODAs
NyBAQCBJbnRTaXplIFdlYlBhZ2U6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiAKIHZvaWQgV2Vi
UGFnZTo6ZGlzYWJsZWRBZGFwdGF0aW9uc0RpZENoYW5nZShjb25zdCBPcHRpb25TZXQ8RGlzYWJs
ZWRBZGFwdGF0aW9ucz4mIGRpc2FibGVkQWRhcHRhdGlvbnMpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldERpc2FibGVkQWRhcHRhdGlvbnMoZGlzYWJsZWRBZGFwdGF0aW9ucykpCiAgICAgICAg
IHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICNlbHNlCkBAIC0xODkwLDcgKzE4OTAs
NyBAQCB2b2lkIFdlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuCiAKIHZvaWQgV2Vi
UGFnZTo6dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JiB2aWV3cG9ydEFyZ3VtZW50cykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS5zaG91bGRJZ25vcmVNZXRh
Vmlld3BvcnQoKSAmJiBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRWaWV3cG9ydEFyZ3VtZW50
cyh2aWV3cG9ydEFyZ3VtZW50cykpCiAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5n
ZWQoKTsKICNlbmRpZgpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZwogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1Mp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgVU5VU0VEX1BBUkFNKHZpZXdwb3J0
QXJndW1lbnRzKTsKICNlbmRpZgogfQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgdm9pZCBXZWJQYWdl
Ojpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKAogICAgIGluamVjdGVkQnVuZGxlLT5kaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZSh0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzcy50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2U6OnNl
dEhlYWRlclBhZ2VCYW5uZXIoUGFnZUJhbm5lciogcGFnZUJhbm5lcikKIHsKQEAgLTIwNDUsNyAr
MjA0NSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGUKICNlbmRp
ZgogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJl
Y3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewpAQCAtMjI0MCw3ICsyMjQwLDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzbmFwc2hvdE5vZGUoVwogCiB2b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9pbkR5
bmFtaWNTaXplVXBkYXRlKQogICAgICAgICBtX2R5bmFtaWNTaXplVXBkYXRlSGlzdG9yeS5jbGVh
cigpOwogI2VuZGlmCkBAIC0yNDkzLDEyICsyNDkzLDEyIEBAIHZvaWQgV2ViUGFnZTo6bW91c2VF
dmVudChjb25zdCBXZWJNb3VzZUUKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWhhbmRs
ZWQgJiYgbV9oZWFkZXJCYW5uZXIpCiAgICAgICAgIGhhbmRsZWQgPSBtX2hlYWRlckJhbm5lci0+
bW91c2VFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoIWhhbmRsZWQgJiYgbV9mb290ZXJCYW5u
ZXIpCiAgICAgICAgIGhhbmRsZWQgPSBtX2Zvb3RlckJhbm5lci0+bW91c2VFdmVudChtb3VzZUV2
ZW50KTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAgICAgaWYgKCFoYW5kbGVkKSB7CiAgICAgICAgIEN1cnJlbnRFdmVudCBjdXJy
ZW50RXZlbnQobW91c2VFdmVudCk7CkBAIC0zMDQ0LDcgKzMwNDQsNyBAQCBJbnRSZWN0IFdlYlBh
Z2U6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgCiAgICAgcmV0dXJuIHNjcmVlblJlY3Q7CiB9CiAg
ICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBJbnRQb2lu
dCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYg
cG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CkBAIC0zMjk3LDcgKzMyOTcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYm90aCBhIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgKGdlbmVyYXRlZCkgYW5kIGEg
c2V0dGluZy4gSXQgc2hvdWxkIHBpY2sgb25lLgogICAgIHNldHRpbmdzLnNldEludGVyYWN0aXZl
Rm9ybVZhbGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9pZ25vcmVWaWV3
cG9ydFNjYWxpbmdDb25zdHJhaW50cyA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6aWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHNLZXkoKSk7CiAgICAg
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q2FuSWdub3JlU2NhbGluZ0NvbnN0cmFpbnRzKG1f
aWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMpOwogICAgIHNldEZvcmNlQWx3YXlzVXNl
clNjYWxhYmxlKG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgfHwgc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZUtleSgpKSk7
CkBAIC0zMzQ4LDcgKzMzNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUo
UmVtb3RlCiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRNaW5TdGFibGVMYXlvdXRWaWV3cG9ydE9y
aWdpbihmcmFtZVZpZXctPm1pblN0YWJsZUxheW91dFZpZXdwb3J0T3JpZ2luKCkpOwogICAgIGxh
eWVyVHJhbnNhY3Rpb24uc2V0TWF4U3RhYmxlTGF5b3V0Vmlld3BvcnRPcmlnaW4oZnJhbWVWaWV3
LT5tYXhTdGFibGVMYXlvdXRWaWV3cG9ydE9yaWdpbigpKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0U2NhbGVX
YXNTZXRCeVVJUHJvY2VzcyhzY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkpOwogICAgIGxheWVyVHJh
bnNhY3Rpb24uc2V0TWluaW11bVNjYWxlRmFjdG9yKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZSgpKTsKICAgICBsYXllclRyYW5zYWN0aW9uLnNldE1heGltdW1TY2FsZUZhY3Rv
cihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSk7CkBAIC0zMzc5LDcgKzMz
NzksNyBAQCB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlCiAKIHZvaWQg
V2ViUGFnZTo6ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUoTW9ub3RvbmljVGltZSB0aW1lc3RhbXAp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KG1fb2xkZXN0Tm9uU3RhYmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1RpbWVzdGFtcCAhPSBN
b25vdG9uaWNUaW1lKCkpIHsKICAgICAgICAgU2Vjb25kcyBlbGFwc2VkID0gdGltZXN0YW1wIC0g
bV9vbGRlc3ROb25TdGFibGVVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzVGltZXN0YW1wOwogICAg
ICAgICBtX29sZGVzdE5vblN0YWJsZVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNUaW1lc3RhbXAg
PSBNb25vdG9uaWNUaW1lKCk7CkBAIC0zNDI5LDcgKzM0MjksNyBAQCB2b2lkIFdlYlBhZ2U6Omlu
c3BlY3RvckZyb250ZW5kQ291bnRDaGFuCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDaGFuZ2VJbnNwZWN0b3JGcm9udGVuZENvdW50KGNvdW50KSk7CiB9CiAKLSNpZiAoUExB
VEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFW
RShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBXZWJQYWdlOjpwbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKQEAgLTM0NTQs
NyArMzQ1NCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGEKIAog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgV2ViUGFnZTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxs
b3dzKQogewogICAgIG1fcGFnZS0+c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNr
KGFsbG93cyk7CkBAIC0zNzczLDcgKzM3NzMsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYW5nZVNlbGVj
dGVkSW5kZXgoaW50MzJfCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENoYW5nZVNlbGVjdGVk
SW5kZXgoaW5kZXgpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3Bs
YXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgU3RyaW5n
JiBkaXNwbGF5U3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25EYXRhKQogewog
ICAgIGlmICghbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKQEAgLTM4MzMsNyArMzgz
Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QoKQogewogfQpAQCAtMzg3Miw3ICszODcyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXZv
a2VVc2VyTWVkaWFEZXZpY2VTYW5kYgogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBA
IC0zOTYzLDcgKzM5NjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dChGCiAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQo
dGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpjbGVhclNl
bGVjdGlvbigpCiB7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwpAQCAtNDAzMSw3ICs0MDMxLDcgQEAgdm9pZCBX
ZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1f
dmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci0+bWFpbkZyYW1lRGlkTGF5b3V0KCk7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50U2l6
ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7CiAgICAgICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwg
bmV3Q29udGVudFNpemUpOwpAQCAtNTExNiw3ICs1MTE2LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXNl
dEFzc2lzdGVkTm9kZUZvckZyYW1lKAogICAgIGlmICghbV9hc3Npc3RlZE5vZGUpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgfHwgbV9hc3Npc3RlZE5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZS0+Y29yZUZyYW1lKCkpIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdG9wQXNzaXN0aW5nTm9kZSgpKTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRFZGl0YWJsZUVsZW1lbnRJ
c0ZvY3VzZWQoZmFsc2UpKTsKQEAgLTUxMzQsNyArNTEzNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZWxl
bWVudERpZEZvY3VzKFdlYkNvcmU6Ok4KICAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBub2RlOwog
ICAgICAgICBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uIHw9IG1fdXNlcklz
SW50ZXJhY3Rpbmc7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgaWYgKG5vZGUtPmRvY3Vt
ZW50KCkud2Via2l0SXNGdWxsU2NyZWVuKCkpCkBAIC01MTY2LDcgKzUxNjYsNyBAQCB2b2lkIFdl
YlBhZ2U6OmVsZW1lbnREaWRCbHVyKFdlYkNvcmU6Ok5vCiAgICAgICAgIFJlZlB0cjxXZWJQYWdl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1
ck5vdGlmaWNhdGlvbikgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
ZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZmFsc2UpKTsKQEAgLTUzNTAsNyArNTM1MCw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQKIAogdm9pZCBXZWJQYWdl
Ojp3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmIGZyYW1lKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZnJh
bWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MzYwLDcgKzUzNjAsNyBA
QCB2b2lkIFdlYlBhZ2U6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVuCiAKIHZvaWQgV2ViUGFn
ZTo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmIGZyYW1lKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZnJh
bWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MzcyLDcgKzUzNzIsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50CiAKIHZvaWQgV2ViUGFn
ZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZnJhbWUtPnNldEZpcnN0TGF5ZXJUcmVlVHJh
bnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZChkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYT4oKm1fZHJhd2luZ0FyZWEpLm5leHRUcmFuc2FjdGlvbklEKCkpOwogICAgIGNhbmNl
bFBvdGVudGlhbFRhcEluRnJhbWUoKmZyYW1lKTsKICNlbmRpZgpAQCAtNTQwNCw3ICs1NDA0LDcg
QEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcgogICAgICAgICBpZiAo
cGFnZSAmJiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICAgICAgc2NhbGVQ
YWdlKDEsIEludFBvaW50KCkpOwogICAgIH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBtX2hhc1JlY2VpdmVkVmlzaWJsZUNvbnRlbnRSZWN0c0FmdGVy
RGlkQ29tbWl0TG9hZCA9IGZhbHNlOwogICAgIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzcyA9IGZh
bHNlOwogICAgIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IgPSBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogI2luY2x1ZGUgIldlYlByaW50T3BlcmF0aW9u
R3RrLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnRIYXNoLmg+CkBAIC0zMDAsMTMgKzMwMCwx
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3BlY3RvckZyb250ZW5kQ291bnRDaGFuZ2VkKHVu
c2lnbmVkKTsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKTsKICAgICBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyJiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAgICAgdm9pZCB2
aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEFsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjayhib29sKTsKICAgICBib29sIGFsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrOyB9CiAjZW5kaWYKQEAgLTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB3aW5kb3dJc0ZvY3VzZWQoKSBjb25zdDsKICAgICBib29sIHdpbmRvd0FuZFdlYlBhZ2VBcmVG
b2N1c2VkKCkgY29uc3Q7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKik7CiAgICAg
UGFnZUJhbm5lciogaGVhZGVyUGFnZUJhbm5lcigpOwogICAgIHZvaWQgc2V0Rm9vdGVyUGFnZUJh
bm5lcihQYWdlQmFubmVyKik7CkBAIC01NDYsNyArNTQ2LDcgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1Rv
QWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKQEAg
LTU2MSw3ICs1NjEsNyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXImIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4g
bV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsgfQogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNh
dmVQYWdlU3RhdGUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKICAgICB2b2lkIHJlc3RvcmVQYWdl
U3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKICNlbmRpZgpAQCAtNTgwLDcgKzU4
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21t
YW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQsIENh
bGxiYWNrSUQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdDsKQEAgLTY2OCw3ICs2NjgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sKTsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lk
IGRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZl
bnQsIDE+JiBxdWV1ZSk7CiAjZW5kaWYKIApAQCAtODI1LDcgKzgyNSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQs
IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6
RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCiAKQEAgLTg5NCw3ICs4OTQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRlID0gZmFs
c2UpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBkb3VibGUgc2NhbGVGYWN0b3IpOwogICAgIHZvaWQgc2V0TWF4aW11bVVu
b2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0RGV2
aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CkBAIC0xMTIzLDcgKzExMjMsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0Vmll
d3BvcnREZWZhdWx0Q29uZmlndXJhdGlvbihXZWJGcmFtZSogbWFpbkZyYW1lLCBib29sIGhhc01v
YmlsZURvY1R5cGUgPSBmYWxzZSk7CiAgICAgZW51bSBjbGFzcyBab29tVG9Jbml0aWFsU2NhbGUg
eyBObywgWWVzIH07CiAgICAgdm9pZCB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKFpvb21U
b0luaXRpYWxTY2FsZSA9IFpvb21Ub0luaXRpYWxTY2FsZTo6Tm8pOwpAQCAtMTE0MSw3ICsxMTQx
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9yR3JhbnVs
YXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04p
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAg
ICAgdm9pZCByZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24pOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uKTsKICNlbmRpZgpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNv
bnN0OwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBpY29uRGF0YSk7CiAjZW5kaWYKIApAQCAtMTM4OCw3ICsxMzg4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0
Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQog
Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQodWludDY0X3QsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0Owog
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UodWludDY0X3QsIGJv
b2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QsIGJv
b2wpOwpAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWx3YXlzU2hv
d3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNTaG93c1Zl
cnRpY2FsU2Nyb2xsZXIgeyBmYWxzZSB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2lnbm9yZVZpZXdwb3J0U2NhbGluZ0NvbnN0cmFp
bnRzIHsgZmFsc2UgfTsKICNlbmRpZgogCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCBwcml2YXRlOgog
ICAgIHVpbnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlZlB0cjxQYWdl
QmFubmVyPiBtX2hlYWRlckJhbm5lcjsKICAgICBSZWZQdHI8UGFnZUJhbm5lcj4gbV9mb290ZXJC
YW5uZXI7CiAjZW5kaWYKQEAgLTE1NTAsMTIgKzE1NTAsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAgICAgUmVmUHRyPFJlbW90ZVdlYklu
c3BlY3RvclVJPiBtX3JlbW90ZUluc3BlY3RvclVJOwogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYg
SEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIFJl
ZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiAg
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX3N0YXJ0aW5nR2VzdHVyZVJhbmdlOwogI2Vu
ZGlmCkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNQZW5kaW5n
Qmx1ck5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdFZGl0b3JT
dGF0ZVVwZGF0ZSB7IGZhbHNlIH07CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1cnJlbnRXb3Jk
UmFuZ2U7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1faW50ZXJhY3Rpb25Ob2RlOwogICAg
IFdlYkNvcmU6OkludFBvaW50IG1fbGFzdEludGVyYWN0aW9uTG9jYXRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRXhlY3V0ZUVkaXRDb21tYW5k
V2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIEtleUV2ZW50KFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBl
dmVudCkKICAgICBNb3VzZUV2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwgZG91Ymxl
IHNjYWxlRmFjdG9yKQogICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9h
dFNpemUgc2l6ZSkKICAgICBTZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVu
dGF0aW9uKQpAQCAtMjkxLDcgKzI5MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogI2VuZGlmCiAKICAgICAjIE9wZW4gcGFuZWwuCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxX
aXRoRGlzcGxheVN0cmluZ0FuZEljb24oVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMsIFN0cmluZyBk
aXNwbGF5U3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgaWNvbkRhdGEpCiAjZW5kaWYKICAgICBE
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChWZWN0b3I8U3RyaW5nPiBmaWxlVVJMcykKQEAgLTM1
MSw3ICszNTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBX
ZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgRGVsYXllZAog
I2VuZGlmCiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChTdHJpbmcg
cmVzdWx0KQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBXaWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOwogI2VuZGlmCiAKQEAg
LTQ2Nyw3ICs0NjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAog
ICAgIFNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIHNob3VsZERpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50cykKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUGxheWJhY2tUYXJnZXRTZWxlY3Rl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
IHRhcmdldCkKICAgICBQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQogICAgIFNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGRQbGF5KQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1D
QUwKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiAgICAgY2FzZSBMYXll
ckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M6CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4
dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
aWYgKGxheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyKSB7CiAgICAgICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IGNvbnRleHQuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICAgICAg
ICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29udmVydFJlY3Q6dG9MYXll
cjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRhcjovL3Byb2JsZW0vMTgz
MTY1NDI+LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNCArODksMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFj
Y2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5n
JiBrZXksIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIGNvbnN0IFN0cmluZyYga2V5
KSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlk
ZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZv
aWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3Rl
TGF5ZXJUCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywgJlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKICAgICB3ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRp
bmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5n
cygpLnNldERlbGVnYXRlc1BhZ2VTY2FsaW5nKHRydWUpOwogI2VuZGlmCiAgICAgbV9yb290TGF5
ZXItPnNldE5hbWUoImRyYXdpbmcgYXJlYSByb290Iik7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUAogICAgIERlYnVnUGFnZU92ZXJs
YXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3JlUGFnZSgpKTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpCiB7CiAgICAgbV93ZWJQYWdlLnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpzZXRWaWV3CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogfQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXZWJDb3JlOjpGbG9hdFJlY3Qg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0CiB7
CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpOwpA
QCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0
ZVMKIAogICAgIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3QgPSBtX3ZpZXdFeHBvc2VkUmVjdDsK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KG1fdmlld0V4cG9zZWRSZWN0KSB7CiAgICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQg
PSBmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihmcmFtZVZpZXctPnNjcm9sbFBv
c2l0aW9uKCkpOwogICAgICAgICBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0LnZhbHVlKCkubW92
ZUJ5KHNjcm9sbE9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8Y29u
ZmlnLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCAiRmluZENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZpbmRJbmRpY2F0b3JPdmVybGF5
Q2xpZW50SU9TLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlJT1MuaCIKICNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgi
CkBAIC0zMTIwLDQgKzMxMjAsNCBAQCB2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1NlbmRVc2VyTWVk
aWFQZXJtCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCkBAIC0xNzAsNSArMTcwLDUgQEAg
cHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19EUkFXSU5HX0FSRUEoVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEsIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbikK
IAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oIgpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnVwZGEKIAogICAgIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3QgPSBt
X3ZpZXdFeHBvc2VkUmVjdDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0KSB7CiAgICAgICAgIFNjcm9sbE9m
ZnNldCBzY3JvbGxPZmZzZXQgPSBmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihm
cmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICBtX3Njcm9sbGVkVmlld0V4cG9z
ZWRSZWN0LnZhbHVlKCkubW92ZUJ5KHNjcm9sbE9mZnNldCk7CkBAIC04ODgsNCArODg4LDQgQEAg
Ym9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTExMTIsNyArMTExMiw3IEBAIHZvaWQgV2ViUGFnZTo6ZGF0YURldGVjdG9yc0RpZEhpZGVVSShQ
YWcKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVk
KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0
LnR5cGUoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KQEAgLTE3MSw0ICsxNzEsNCBA
QCBwcm90ZWN0ZWQ6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKIG1lc3NhZ2VzIC0+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgewogICAgIFBsYXkodWludDY0
X3QgY29udGV4dElkKQogICAgIFBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2ltcG9y
dCAiQXR0YWNobWVudC5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2Vz
LmgiCkBAIC01MTUsNCArNTE1LDQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRQ
bGF5aW5nTwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CkBAIC0xNjIsNSArMTYyLDUgQEAgcHJv
dGVjdGVkOgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyIHsKICAgICBSZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxs
c2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKICAgICBSZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogCi0jaWYgKFBM
QVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhB
VkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQogCiAjaW1wb3J0ICJBdHRhY2htZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBA
IC0yMjMsNyArMjIzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDbGll
bgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjphdktpdEVuYWJsZWQoKTsKICNlbHNlCkBAIC0yMzMsNyArMjMzLDcgQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZAogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRo
aXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAg
ICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBh
Z2VJRCgpKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZEV4aXRGdWxsCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+
IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJm
YWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5wYWdlSUQoKSk7CkBAIC01ODUsNCArNTg1LDQgQEAgICAgIGlmIChhdXRvKiBjb250ZXh0
ID0gaW50ZXJmYWNlLT5sYXllcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxOCArNzIsMTggQEAKICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RJT1MuaCIKICNpbXBvcnQgPFVJS2l0L1VJQWNjZXNzaWJpbGl0eS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oPgogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEFYUnVu
dGltZS9BWERlZmluZXMuaD4KICNpbXBvcnQgPEFYUnVudGltZS9BWE5vdGlmaWNhdGlvbkNvbnN0
YW50cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogI2RlZmluZSBrQVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uIDAKICNlbmRpZgog
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0ZW5zaW9uSGFuZGxlKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBh
cmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
CiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICphcHBsaWNh
dGlvbk5hbWU7CiAgICAgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0
KCJpbnNwZWN0b3ItcHJvY2VzcyJfcykgPT0gIjEiKQogICAgICAgICBhcHBsaWNhdGlvbk5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgSW5zcGVj
dG9yIiwgIlZpc2libGUgbmFtZSBvZiBXZWIgSW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3MuIFRoZSBh
cmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVy
cy51aVByb2Nlc3NOYW1lXTsKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Rl
cldpdGhBY2Nlc3NpYmlsaXR5KCkKICNpZiBVU0UoQVBQS0lUKQogICAgIFtOU0FjY2Vzc2liaWxp
dHlSZW1vdGVVSUVsZW1lbnQgc2V0UmVtb3RlVUlBcHA6WUVTXTsKICNlbmRpZgotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICphY2Nlc3Np
YmlsaXR5QnVuZGxlUGF0aCA9IFsoTlNTdHJpbmcgKilHU1N5c3RlbVJvb3REaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi9TeXN0ZW0vTGlicmFyeS9BY2Nlc3NpYmlsaXR5QnVu
ZGxlcy9XZWJQcm9jZXNzTG9hZGVyLmF4YnVuZGxlIl07CiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CiAgICAgaWYgKCFbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOmFjY2Vzc2liaWxpdHlCdW5k
bGVQYXRoXSBsb2FkQW5kUmV0dXJuRXJyb3I6JmVycm9yXSkKQEAgLTM2Nyw3ICszNjcsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogUmV0YWluUHRyPENGRGF0YVJl
Zj4gV2ViUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1ZGl0X3Rva2Vu
X3QgYXVkaXRUb2tlbjsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpIHx8ICFwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5nZXRBdWRpdFRva2VuKGF1ZGl0VG9rZW4pKQpAQCAtMzg4LDcgKzM4OCw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QKICNlbHNlCiAgICAgTlNCdW5k
bGUgKndlYktpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21T
dHJpbmcoQCJXS1ZpZXciKV07CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShJT1NNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU01BQykK
ICAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aChbd2Vi
S2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQi
IG9mVHlwZTpAInNiIl0pOwogI2Vsc2UKICAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRPdmVycmlk
ZVNhbmRib3hQcm9maWxlUGF0aChbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20u
YXBwbGUuV2ViUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9p
ZCBfV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaQogICAgIHJldHVybiBzZXRDcmFz
aFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpaW5mb1N0cmluZyk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0eVByb2Nlc3NTdXNwZW5kZWRO
b3RpZmljYXRpb24oYm9vbCBzdXNwZW5kZWQpCiB7CiAgICAgVUlBY2Nlc3NpYmlsaXR5UG9zdE5v
dGlmaWNhdGlvbihrQVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBAeyBAInBpZCIgOiBA
KGdldHBpZCgpKSwgQCJzdXNwZW5kZWQiIDogQChzdXNwZW5kZWQpIH0pOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJhcnkubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJhcnkubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNo
aW1MaWJyYXJ5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNlY0l0ZW1TaGltTGlicmFyeS5oIgog
CkBAIC03MCw0ICs3MCw0IEBAIHZvaWQgV2ViS2l0U2VjSXRlbVNoaW1Jbml0aWFsaXplKGNvbnN0
IFMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0
byBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZl
UGVuZGluZ1JlcXVlc3RzKToKKwogMjAxOC0xMC0xMSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQ1VSUkVOVF9BUkNIIHNob3VsZCBub3QgYmUgdXNlZCBpbiBS
dW4gU2NyaXB0IHBoYXNlLgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4KICNlbmRpZgogCkBAIC0zODgsNyArMzg4
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfSk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2
b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAg
ICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCksIDAsIFNRTElU
RV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7CkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2luCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHJlYWQgaW4gYWxsIG9yaWdpbnMgZnJvbSB0aGUgZGF0YWJhc2UuIik7CiAKICAgICBpZiAo
bV9kYXRhYmFzZS5pc09wZW4oKSkgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICB0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlKTsKICNl
bmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIUZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewogICAgICAgICAvLyBJbiB0aGUgY2Fz
ZSB3aGVyZSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVsZXRlIHRoZSBkYXRhYmFzZSBmaWxlIChl
Lmcgc29tZSBvdGhlciBwcm9ncmFtCiAgICAgICAgIC8vIGxpa2UgYSB2aXJ1cyBzY2FubmVyIGlz
IGFjY2Vzc2luZyBpdCksIG1ha2Ugc3VyZSB0byByZW1vdmUgYWxsIGVudHJpZXMuCkBAIC01NDMs
MTEgKzU0MywxMSBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvCiAg
ICAgfQogCiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB0cnVuY2F0ZURhdGFiYXNl
RmlsZShtX2RhdGFiYXNlKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwogICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMyArNDAsMTMgQEAKICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIC8vIE1hdGNoIHRoZSBw
YXJhbGxlbCBjb25uZWN0aW9uIGNvdW50IHVzZWQgYnkgdGhlIG5ldHdvcmtpbmcgbGF5ZXIuCiBz
dGF0aWMgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
YXhSZXF1ZXN0c0luRmxpZ2h0Rm9yTm9uSFRUUFByb3RvY29scyA9IDIwOwogI2Vsc2UKIC8vIExp
bWl0aW5nIHRoaXMgc2VlbXMgdG8gcmVncmVzcyBwZXJmb3JtYW5jZSBpbiBzb21lIGxvY2FsIGNh
c2VzIHNvIGxldCdzIGp1c3QgbWFrZSBpdCBsYXJnZS4KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdQogICAgIFN1YnJlc291cmNlTG9hZGVy
OjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZlB0
cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpIG11dGFibGUgewogICAgICAg
ICBpZiAobG9hZGVyKQogICAgICAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSk7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIFNp
bmNlIHdlIGRlZmVyIGxvYWRlciBpbml0aWFsaXphdGlvbiB1bnRpbCBzY2hlZHVsaW5nIG9uIGlP
UywgdGhlIGZyYW1lCiAgICAgICAgIC8vIGxvYWQgZGVsZWdhdGUgdGhhdCB3b3VsZCBiZSBjYWxs
ZWQgaW4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgpIG9uCiAgICAgICAgIC8vIG90aGVyIHBv
cnRzIG1pZ2h0IGJlIGNhbGxlZCBpbiBzY2hlZHVsZUxvYWQoKSBpbnN0ZWFkLiBPdXIgY29udHJh
Y3QgdG8KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVMCiB7CiAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIElmIHRoZXJlJ3MgYSB3ZWIg
YXJjaGl2ZSByZXNvdXJjZSBmb3IgdGhpcyBVUkwsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUg
dGhlIGxvYWQgc2luY2UgaXQgd2lsbCBuZXZlciB0b3VjaCB0aGUgbmV0d29yay4KICAgICBpZiAo
IWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpICYmIHJlc291cmNlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5hcmNoaXZlUmVzb3VyY2VGb3JVUkwocmVzb3VyY2VMb2FkZXItPmlPU09yaWdp
bmFsUmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2Fk
aW5nKCk7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnNjaGVkdWxlTAogICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0ID0gaG9zdEZvclVSTChy
ZXNvdXJjZUxvYWRlci0+aU9TT3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIENyZWF0ZUlmTm90Rm91
bmQpOwogI2Vsc2UKICAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3QgPSBob3N0Rm9yVVJMKHJlc291
cmNlTG9hZGVyLT51cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCk7CkBAIC0xNjEsNyArMTYxLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAogICAgIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKChw
cmlvcml0eSA+IFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cgfHwgIXJlc291cmNlTG9hZGVyLT5p
T1NPcmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgKHBy
aW9yaXR5ID09IFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cgJiYgIWhhZFJlcXVlc3RzKSkgJiYg
IWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1
ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkuCiAgICAgICAgIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKGhvc3QsIHByaW9yaXR5KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlCiAgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0
ID0gaG9zdEZvclVSTChyZXNvdXJjZUxvYWRlci0+dXJsKCkpOwogICAgIGlmIChob3N0KQogICAg
ICAgICBob3N0LT5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJlc291cmNlTG9hZGVyOjp1cmwoKSBkb2Vz
bid0IHN0YXJ0IHJldHVybmluZyB0aGUgY29ycmVjdCB2YWx1ZSB1bnRpbCB0aGUgbG9hZCBzdGFy
dHMuIElmIHdlIGdldCBjYW5jZWxlZCBiZWZvcmUgdGhhdCwgd2UgbmVlZCB0byBsb29rIGZvciBv
cmlnaW5hbFJlcXVlc3QgdXJsIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IFJlc291cmNlTG9hZGVy
Ojp1cmwoKSBzaG91bGQgYmUgbWFkZSB0byByZXR1cm4gYSBzZW5zaWJsZSB2YWx1ZSBhdCBhbGwg
dGltZXMuCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlci0+aU9TT3JpZ2luYWxSZXF1ZXN0KCkuaXNO
dWxsKCkpIHsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2VydmVQZW5kCiAKICAgICAgICAgICAgIHJlcXVlc3RzUGVuZGluZy5yZW1vdmVGaXJzdCgp
OwogICAgICAgICAgICAgaG9zdC0+YWRkTG9hZEluUHJvZ3Jlc3MocmVzb3VyY2VMb2FkZXIuZ2V0
KCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpIHsKICAgICAgICAgICAg
ICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CisKKyAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUubToKKyAgICAgICAgKiBE
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZS5tOgorICAgICAgICAq
IERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLm06CisgICAg
ICAgICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5tOgorICAgICAg
ICAqIE1pc2MvTWVtb3J5TWVhc3VyZS5tbToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tOgorICAgICAgICAqIE1pc2MvV2ViTlNTdHJpbmdFeHRyYXNJT1MubToKKyAg
ICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToKKyAgICAgICAgKFdlYktpdFBsYXRmb3Jt
U3lzdGVtUm9vdERpcmVjdG9yeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51
SU9TLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElP
Uy5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblJlY3QubToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZVZpZXdXQUtDb21wYXRpYmlsaXR5Lm06CisgICAgICAgICogV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcuaDoKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlBsYWluV2hpdGVWaWV3Lm1tOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMv
V2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUubQko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5oIgogCkBAIC02Miw3ICs2
Miw3IEBAIC0gKEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICoKICAgICByZXR1
cm4gWUVTOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBzaG91
bGRIYW5kbGVFdmVudDooTlNFdmVudCAqKWV2ZW50IGluRnJhbWU6KFdlYkZyYW1lICopZnJhbWUK
IHsKICAgICByZXR1cm4gWUVTOwpAQCAtODAsNCArODAsNCBAQCAtICh2b2lkKXdpbGxTZW5kU3Vi
bWl0RXZlbnRUb0Zvcm06KERPTUhUCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0
ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUuaCIKIApA
QCAtMTU3LDQgKzE1Nyw0IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRM
YXkKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdh
dGVzL1dlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291cmNlTG9h
ZERlbGVnYXRlLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLm0JKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgIldlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogCkBAIC0xMDIs
NCArMTAyLDQgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKXdlYlZpZXc6KFdlYlZpZQogCiBA
ZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdFVJS2l0RGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSUtpdERlbGVnYXRlLm0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdFVJS2l0RGVsZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRGVmYXVsdFVJS2l0
RGVsZWdhdGUuaCIKIApAQCAtMjkxLDQgKzI5MSw0IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcgYWRkTWUKIH0KIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9NZW1vcnlNZWFzdXJlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL01pc2MvTWVtb3J5TWVhc3VyZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9NZW1vcnlNZWFzdXJlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiTWVtb3J5TWVhc3VyZS5oIgogCkBAIC04Miw0ICs4Miw0IEBAIE1lbW9yeU1lYXN1cmU6On5N
ZW1vcnlNZWFzdXJlKCkKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3Zp
ZGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyLmgiCiAKQEAgLTIwMiw0ICsyMDIsNCBAQCAtICh2b2lkKXNldEVuYWJs
ZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgogCkBA
IC0zNzEsNCArMzcxLDQgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiB9CiBAZW5kCiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViTlNTdHJpbmdFeHRyYXNJT1MubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYk5TU3RyaW5nRXh0
cmFzSU9TLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViTlNTdHJpbmdFeHRyYXNJT1MubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViTlNTdHJpbmdF
eHRyYXNJT1MuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCkBAIC0yMTIsNSArMjEyLDUg
QEAgLSAoTlNVUkwgKilfd2ViX2Jlc3RVUkxGb3JVc2VyVHlwZWRTdHJpbgogCiBAZW5kCiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJVSUtpdFN1cHBvcnQuaCIKIApA
QCAtMTAzLDcgKzEwMyw3IEBAIGludCBXZWJLaXRHZXRMYXN0TGluZUJyZWFrSW5CdWZmZXIoVUNo
YXIKIAogY29uc3QgY2hhciAqV2ViS2l0UGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KHZvaWQp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfU0lNVUxB
VE9SX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgY2hhciAqcGxhdGZvcm1TeXN0ZW1Sb290RGly
ZWN0b3J5ID0gbmlsOwogICAgIGlmICghcGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KSB7CiAg
ICAgICAgIGNoYXIgKnNpbXVsYXRvclJvb3QgPSBnZXRlbnYoIklQSE9ORV9TSU1VTEFUT1JfUk9P
VCIpOwpAQCAtMTU0LDQgKzE1NCw0IEBAIENHUGF0aFJlZiBXZWJLaXRDcmVhdGVQYXRoV2l0aFNo
cmlua1dyYXAKICAgICByZXR1cm4gQ0dQYXRoUmV0YWluKFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRo
U2hyaW5rV3JhcHBlZFJlY3RzKHJlY3RzLCByYWRpdXMpLnBsYXRmb3JtUGF0aCgpKTsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1BvcHVwTWVudUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpbXBvcnQgIlBvcHVwTWVudUlPUy5oIgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01MSw0ICs1MSw0IEBAIHZvaWQgUG9wdXBNZW51SU9TOjpkaXNjb25uZWN0Q2xpZW50
KCkKICAgICBtX3BvcHVwQ2xpZW50ID0gMDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJ
T1MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3
ICsyMSw3IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNDgsNCArNDgsNCBAQCBib29sIFNlYXJjaFBvcHVwTWVudUlPUzo6ZW5h
YmxlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViQ2hyb21l
Q2xpZW50LmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJX
ZWJDaHJvbWVDbGllbnRJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIlBvcHVw
TWVudUlPUy5oIgpAQCAtMzk1LDQgKzM5NSw0IEBAIGludCBXZWJDaHJvbWVDbGllbnRJT1M6OmRl
dmljZU9yaWVudGF0aW8KIH0KICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIldlYkZpeGVkUG9zaXRpb25Db250ZW50LmgiCiAjaW1wb3J0ICJXZWJGaXhlZFBvc2l0aW9u
Q29udGVudEludGVybmFsLmgiCkBAIC0xOTUsNCArMTk1LDQgQEAgLSAoQk9PTCloYXNGaXhlZE9y
U3RpY2t5UG9zaXRpb25MYXllcnMKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkZyYW1lSU9TLmgiCiAKQEAgLTk1MCw0ICs5
NTAsNCBAQCAtIChDR1JlY3QpZWxlbWVudFJlY3RBdFBvaW50OihDR1BvaW50KXBvCiAKIEBlbmQK
IAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViR2VvbG9j
YXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgpAQCAtNjIs
NCArNjIsNCBAQCAtICh2b2lkKWRlYWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAi
V2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yLmgiCkBAIC0xMzQsNCAr
MTM0LDQgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlVwogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sLCBib29sKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFw
cGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViTUlNRVR5cGVSZWdpc3RyeS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJNSU1F
VHlwZVJlZ2lzdHJ5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJXZWJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKQEAgLTU1LDQgKzU1LDQgQEAgKyAoQk9PTClp
c1N1cHBvcnRlZE1lZGlhTUlNRVR5cGU6KE5TU3RyaQogCiBAZW5kCiAKLSNlbmRpZiAgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmICAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uUmVjdC5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVj
dGlvblJlY3QubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uUmVjdC5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJT
ZWxlY3Rpb25SZWN0LmgiCiAKQEAgLTIwMSw0ICsyMDEsNCBAQCAtIChOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uCiAKIEBlbmQKIAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJW
aXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlZpc2libGVQb3NpdGlvbi5o
IgogI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaCIKQEAgLTYyMiw0ICs2MjIs
NCBAQCAtIChXZWJWaXNpYmxlUG9zaXRpb24gKillbmRQb3NpdGlvbgogCiBAZW5kCiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViRnJhbWVWaWV3V0FLQ29tcGF0aWJp
bGl0eS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2Vi
RnJhbWVWaWV3V0FLQ29tcGF0aWJpbGl0eS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYkZyYW1lVmlld1dBS0NvbXBhdGliaWxpdHkubQko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiV2ViRnJhbWVWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlZp
ZXdQcml2YXRlLmgiCkBAIC0zOSw0ICszOSw0IEBAIC0gKHZvaWQpZnJhbWVTaXplQ2hhbmdlZAog
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViUERGVmll
d0lPUy5oIgogI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgiCkBAIC0zOTYsNCArMzk2
LDQgQEAgc3RhdGljIGludCBjb21wYXJlUGFnZVJlY3RzKGNvbnN0IHZvaWQgKgogICAgIHJldHVy
biBDR1JlY3RHZXRNaW5ZKCprZXlSZWN0KSA+IENHUmVjdEdldE1heFkoKmFycmF5UmVjdCkgPyAx
IDogLTE7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld1BsYWNlaG9sZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiV2ViUERGVmlld1BsYWNlaG9sZGVyLmgiCiAKQEAgLTQ3Niw0ICs0
NzYsNCBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgCiAKIEBlbmQK
IAotI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBQTEFURk9STShJT1NfRkFN
SUxZKSAqLwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldo
aXRlVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcv
V2ViUGxhaW5XaGl0ZVZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb2N1bWVudElu
dGVybmFsLmg+CiAKIEBjbGFzcyBXZWJEYXRhU291cmNlOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hp
dGVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIldl
YlBsYWluV2hpdGVWaWV3LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KQEAgLTgxLDQgKzgxLDQgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZWxl
bWVudEF0UG9pbnQ6KE5TUG9pbgogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3OCBAQAorMjAxOC0xMC0xOCAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggZnJvbSBQTEFU
Rk9STShJT1MpIHRvIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgICgtW0RPTU5v
ZGUgYm91bmRpbmdCb3hdKToKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTC5tbToKKyAgICAgICAgKiBET00vRE9NSW50ZXJuYWwubW06CisgICAgICAg
ICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0
aW9ucy5tbToKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVu
dURlbGVnYXRlLm1tOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdEVkaXRp
bmdEZWxlZ2F0ZS5tOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFBvbGlj
eURlbGVnYXRlLm06CisgICAgICAgICgtW1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSB3ZWJWaWV3
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cmVxdWVzdDpmcmFtZTpkZWNpc2lvbkxp
c3RlbmVyOl0pOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSB3ZWJWaWV3Q2xvc2U6XSk6CisgICAg
ICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXdGb2N1czpdKToKKyAgICAgICAgKC1b
V2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlld1VuZm9jdXM6XSk6CisgICAgICAgICgtW1dlYkRl
ZmF1bHRVSURlbGVnYXRlIHdlYlZpZXdJc1Jlc2l6YWJsZTpdKToKKyAgICAgICAgKC1bV2ViRGVm
YXVsdFVJRGVsZWdhdGUgd2ViVmlldzpzZXRSZXNpemFibGU6XSk6CisgICAgICAgICgtW1dlYkRl
ZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6c2V0RnJhbWU6XSk6CisgICAgICAgICgtW1dlYkRlZmF1
bHRVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21w
dDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvQmFj
a0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW06Cisg
ICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgICgrW1dlYkJh
Y2tGb3J3YXJkTGlzdCBpbml0aWFsaXplXSk6CisgICAgICAgIChidW1wZXJDYXJCYWNrRm9yd2Fy
ZEhhY2tOZWVkZWQpOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAg
KC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkSXRlbTpkaXNjYXJkRHVwbGljYXRlOl0pOgorICAgICAg
ICAoLVtXZWJIaXN0b3J5IF9zZW5kTm90aWZpY2F0aW9uOmVudHJpZXM6XSk6CisgICAgICAgICgt
W1dlYkhpc3RvcnkgbG9hZEZyb21VUkw6ZXJyb3I6XSk6CisgICAgICAgICgtW1dlYkhpc3Rvcnkg
c2F2ZVRvVVJMOmVycm9yOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06
CisgICAgICAgIChXS05vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCk6CisgICAgICAgICgrW1dlYkhp
c3RvcnlJdGVtIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZy
b21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJVUkxz
V2l0aFRpdGxlcy5tOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dl
YkNhY2hlIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAg
ICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBNaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1t
OgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0aWFsaXplXSk6CisgICAgICAg
ICgrW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGluaXRpYWxpemVMb29rdXBUYWJsZV0pOgorICAgICAg
ICAqIE1pc2MvV2ViSWNvbkRhdGFiYXNlLm1tOgorICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW06CisgICAgICAgICgrW05TU3RyaW5nIF93ZWJraXRfbG9jYWxDYWNoZURpcmVj
dG9yeVdpdGhCdW5kbGVJZGVudGlmaWVyOl0pOgorICAgICAgICAqIE1pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oOgorICAgICAgICAqIE1pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5tbToKKyAgICAg
ICAgKFdlYktpdExpbmtlZE9uT3JBZnRlcik6CisgICAgICAgIChXZWJLaXRMaW5rVGltZVZlcnNp
b24pOgorICAgICAgICAqIE1pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tOgorICAgICAgICAq
IE1pc2MvV2ViTlNDb250cm9sRXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU0NvbnRyb2xF
eHRyYXMubToKKyAgICAgICAgKiBNaXNjL1dlYk5TRXZlbnRFeHRyYXMubToKKyAgICAgICAgKiBN
aXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAgICogTWlzYy9XZWJOU0ltYWdl
RXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU0ltYWdlRXh0cmFzLm06CisgICAgICAgICog
TWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICogTWlzYy9XZWJOU1ByaW50
T3BlcmF0aW9uRXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU1ByaW50T3BlcmF0aW9uRXh0
cmFzLm06CisgICAgICAgICogTWlzYy9XZWJOU1ZpZXdFeHRyYXMubToKKyAgICAgICAgKiBNaXNj
L1dlYk5TV2luZG93RXh0cmFzLm06CisgICAgICAgICogUGFuZWxzL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaDoKKyAgICAgICAgKiBQYW5lbHMvV2ViQXV0aGVudGljYXRpb25QYW5lbC5tOgorICAg
ICAgICAqIFBhbmVscy9XZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5tOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KCtbV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGluaXRpYWxpemVdKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNl
UGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkphdmFQbHVnSW4uaDoKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAgICAgICAqIFBs
dWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2lu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3
V2l0aEFyZ3VtZW50czpmcm9tUGx1Z2luUGFja2FnZTpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2lu
Q29udHJvbGxlciBhZGRQbHVnaW46XSk6CisgICAgICAgICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIg
ZGVzdHJveVBsdWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBkZXN0cm95
QWxsUGx1Z2luc10pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06Cisg
ICAgICAgICgrW1dlYlBsdWdpbkRhdGFiYXNlIF9kZWZhdWx0UGx1Z0luUGF0aHNdKToKKyAgICAg
ICAgKiBQbHVnaW5zL1dlYlBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYlBsdWdpblBh
Y2thZ2UgaW5pdFdpdGhQYXRoOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlQWxsRGF0YWJhc2Vz
XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCk6Cisg
ICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViU3Rv
cmFnZU1hbmFnZXIgZGVsZXRlQWxsT3JpZ2luc10pOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6
ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRp
b25DYWNoZS5tbToKKyAgICAgICAgKGFwcGxpY2F0aW9uQ2FjaGVCdW5kbGVJZGVudGlmaWVyKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0
KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlUG9wdXBNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2hvdWxkUGFp
bnRFbnRpcmVDb250ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c3VwcG9ydHNG
dWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoK1tXZWJVbmRvU3RlcCBp
bml0aWFsaXplXSk6CisgICAgICAgICh1cGRhdGVGb250UGFuZWwpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpkaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2FuY2Vs
ZWRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCk6CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvT3JSZWRvU3RlcCk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZy
b21QYXJlbnQyKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaFdpbGxDbG9zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzYXZlVmlld1N0YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZSk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29uc3QpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoK1tX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQ
YW5lbC5tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5t
bToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OnByb2dyZXNzRmluaXNoZWQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAqIFdlYkluc3BlY3Rv
ci9XZWJOb2RlSGlnaGxpZ2h0Lmg6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdo
bGlnaHQubW06CisgICAgICAgICgtW1dlYk5vZGVIaWdobGlnaHQgaW5pdFdpdGhUYXJnZXRWaWV3
Omluc3BlY3RvckNvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dlYk5vZGVIaWdobGlnaHQgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJOb2RlSGlnaGxpZ2h0IGF0dGFjaF0pOgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5oOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgaW5pdFdpdGhXZWJOb2RlSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXZWJOb2RlSGln
aGxpZ2h0VmlldyBkZWFsbG9jXSk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdo
bGlnaHRlci5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodGVyIGhpZ2hsaWdodF0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKCtbV2ViQXJjaGl2ZVBy
aXZhdGUgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViQ2xpcFZpZXcuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJEYXRhU291cmNl
UHJpdmF0ZTo6V2ViRGF0YVNvdXJjZVByaXZhdGUpOgorICAgICAgICAoK1tXZWJEYXRhU291cmNl
IGluaXRpYWxpemVdKToKKyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0lt
YWdlVHlwZU9taXNzaW9uOl0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtlUmVwcmVz
ZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGluZy5tbToKKyAgICAgICAgKENhbGxEZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRGVsZWdhdGVS
ZXR1cm5pbmdGbG9hdCk6CisgICAgICAgIChDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKToK
KyAgICAgICAgKENhbGxVSURlbGVnYXRlKToKKyAgICAgICAgKENhbGxVSURlbGVnYXRlUmV0dXJu
aW5nRmxvYXQpOgorICAgICAgICAoQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKToKKyAg
ICAgICAgKENhbGxGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRnJhbWVMb2FkRGVs
ZWdhdGVSZXR1cm5pbmdCb29sZWFuKToKKyAgICAgICAgKENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0
ZSk6CisgICAgICAgIChDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRm9y
bURlbGVnYXRlKToKKyAgICAgICAgKENhbGxGb3JtRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tOgorICAgICAgICAoLVtX
ZWJEZXZpY2VPcmllbnRhdGlvbiBpbml0V2l0aENhblByb3ZpZGVBbHBoYTphbHBoYTpjYW5Qcm92
aWRlQmV0YTpiZXRhOmNhblByb3ZpZGVHYW1tYTpnYW1tYTpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkRvY3VtZW50SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRvY3VtZW50TG9h
ZGVyTWFjLm1tOgorICAgICAgICAobmVlZHNEYXRhTG9hZFdvcmthcm91bmQpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZvcm1EZWxlZ2F0ZS5tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisgICAgICAgICgtW1dlYkZyYW1lIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zm
c2NyZWVuXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF91bm1hcmtBbGxNaXNzcGVsbGluZ3NdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpjb250ZW50c09ubHk6XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpm
b3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc2Nyb2xsRE9NUmFuZ2VU
b1Zpc2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFja2dyb3VuZENvbG9yXSk6
CisgICAgICAgICgtW1dlYkZyYW1lIGFjY2Vzc2liaWxpdHlSb290XSk6CisgICAgICAgIChuZWVk
c01pY3Jvc29mdE1lc3NlbmdlckRPTURvY3VtZW50V29ya2Fyb3VuZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZUludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcu
bW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2V0RG9jdW1lbnRWaWV3Ol0pOgorICAgICAg
ICAoK1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBfdmlld0NsYXNzRm9yTUlNRVR5cGU6XSk6CisgICAgICAg
ICgtW1dlYkZyYW1lVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXZWJGcmFtZVZp
ZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfZmlyc3RSZXNwb25kZXJJ
c0Zvcm1Db250cm9sXSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBrZXlEb3duOmtleURvd246
XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfaXNTY3JvbGxhYmxlXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgaGl0VGVzdDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaW5pdFdp
dGhGcmFtZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBhZGRTdWJ2aWV3Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtb3Vz
ZURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1vdXNlVXA6XSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxl
Y3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6c2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViSW5kaWNh
dGVMYXllci5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06
CisgICAgICAgICogV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5oOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJQREZS
ZXByZXNlbnRhdGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
bW06CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKToKKyAg
ICAgICAgKFdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6V2ViUHJlZmVyZW5jZXNQcml2YXRlKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgaW5pdFdpdGhJZGVudGlmaWVyOnNlbmRDaGFuZ2VOb3Rp
ZmljYXRpb246aW5pdFdpdGhJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJk
UHJlZmVyZW5jZXNdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfdmFsdWVGb3JLZXk6XSk6CisgICAgICAgICgtW1dl
YlByZWZlcmVuY2VzIF9zZXRTdHJpbmdWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIF9zZXRJbnRlZ2VyVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBfc2V0VW5zaWduZWRJbnRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIF9zZXRGbG9hdFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldEJvb2xWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2Vz
IF9zZXRMb25nTG9uZ1ZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZl
cmVuY2VzIF9wb3N0Q2FjaGVNb2RlbENoYW5nZWROb3RpZmljYXRpb25dKToKKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dKToKKyAg
ICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoK1tX
ZWJSZXNvdXJjZVByaXZhdGUgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRlcmF0
b3IubW06CisgICAgICAgICgrW1dlYlRleHRJdGVyYXRvclByaXZhdGUgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKHNob3VsZEVuYWJsZUxvYWRE
ZWZlcnJpbmcpOgorICAgICAgICAoc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cyk6CisgICAgICAg
IChzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMpOgorICAgICAgICAo
c2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcik6CisgICAgICAg
IChzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKHNo
b3VsZEFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2Nv
bCk6CisgICAgICAgIChzaG91bGRBbGxvd1dpbmRvd09wZW5XaXRob3V0VXNlckdlc3R1cmUpOgor
ICAgICAgICAoc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9CbGFuayk6CisgICAgICAgIChzaG91
bGRSZXF1aXJlVXNlckdlc3R1cmVUb0xvYWRWaWRlbyk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgr
W1dlYlZpZXcgX3ZpZXdDbGFzczphbmRSZXByZXNlbnRhdGlvbkNsYXNzOmZvck1JTUVUeXBlOmFs
bG93aW5nUGx1Z2luczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfdmlld0NsYXNzOmFuZFJlcHJl
c2VudGF0aW9uQ2xhc3M6Zm9yTUlNRVR5cGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nsb3Nl
UGx1Z2luRGF0YWJhc2VzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nsb3NlV2l0aEZhc3RUZWFy
ZG93bl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jbG9zZV0pOgorICAgICAgICAoK1tXZWJWaWV3
IF9NSU1FVHlwZUZvckZpbGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0U2hvd2luZ0luc3Bl
Y3RvckluZGljYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldEZvcm1EZWxlZ2F0ZTpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfbmVlZHNQcmVIVE1MNVBhcnNlclF1aXJrc10pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorICAgICAgICAo
LVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zXSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dl
YlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZWRpdGlu
Z0RlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3VwZGF0ZUFjdGl2ZVN0
YXRlXSk6CisgICAgICAgICgtW19XZWJTYWZlRm9yd2FyZGVyIGZvcndhcmRJbnZvY2F0aW9uOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
cGx1Z2luRm9yTUlNRVR5cGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3BsdWdpbkZvckV4dGVu
c2lvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfaXNNSU1FVHlwZVJlZ2lzdGVyZWRBc1BsdWdp
bjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBjYW5TaG93TUlNRVR5cGVBc0hUTUw6XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX2luaXRXaXRoQXJndW1lbnRzOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGluaXRXaXRoRnJhbWU6ZnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZpZXcgY2xvc2VdKToKKyAgICAgICAgKC1bV2Vi
VmlldyB2aWV3RGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBnb0JhY2td
KToKKyAgICAgICAgKC1bV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBzZXRIb3N0V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGJlY29tZUZpcnN0UmVz
cG9uZGVyXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2NhY2hlTW9kZWxDaGFuZ2VkTm90aWZpY2F0
aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9mcmFtZVZpZXdBdFdpbmRvd1BvaW50Ol0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9wcmVmbGlnaHRTcGVsbENoZWNrZXJOb3c6XSk6CisgICAgICAg
ICgrW1dlYlZpZXcgX3ByZWZsaWdodFNwZWxsQ2hlY2tlcl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGNhbkdvQmFja10pOgorICAgICAgICAoLVtXZWJWaWV3IGNhbkdvRm9yd2FyZF0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHN0b3BMb2FkaW5nOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHJlbG9hZDpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5Ol0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnRvRE9NUmFuZ2U6
YWZmaW5pdHk6c3RpbGxTZWxlY3Rpbmc6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0Q29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHVuZG9NYW5h
Z2VyXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZF0pOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9yZXRyaWV2ZUtleWJvYXJkVUlNb2RlRnJvbVByZWZlcmVuY2VzOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9rZXlib2FyZFVJTW9kZV0pOgorICAgICAgICAoTGF5ZXJGbHVz
aENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2hdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6bW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBmdWxs
U2NyZWVuUGxhY2Vob2xkZXJWaWV3XSk6CisgICAgICAgIChXZWJJbnN0YWxsTWVtb3J5UHJlc3N1
cmVIYW5kbGVyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKCtbV2ViVmlld1ByaXZhdGUgaW5pdGlh
bGl6ZV0pOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICgtW1dl
YlZpZXdQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oOgorCiAyMDE4LTEwLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzEzNy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvSGFzaE1hcC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS0FwcEtpdFN0dWJzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dBS1dpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5o
PgpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBOU0FycmF5ICpraXQoY29uc3QgVmVjdG9yPElu
dFJlY3QKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRRdWFkKGNv
bnN0IEZsb2F0UXVhZCYgaW5RdWFkKQogewpAQCAtMzA4LDcgKzMwOCw3IEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXIKIAogQGltcGxlbWVudGF0aW9uIERPTU5vZGUg
KERPTU5vZGVFeHRlbnNpb25zKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChDR1JlY3QpYm91bmRpbmdCb3gKICNlbHNlCiAtIChOU1JlY3QpYm91bmRp
bmdCb3gKQEAgLTMxOCw3ICszMTgsNyBAQCAtIChOU1JlY3QpYm91bmRpbmdCb3gKICAgICBub2Rl
LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAg
YXV0byogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87CiAjZWxzZQogICAgICAgICByZXR1cm4gTlNaZXJvUmVjdDsKQEAgLTMzMSw3
ICszMzEsNyBAQCAtIChOU0FycmF5ICopbGluZUJveFJlY3RzCiAgICAgcmV0dXJuIFtzZWxmIHRl
eHRSZWN0c107CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogLy8gcXVhZCBpbiBwYWdlIGNvb3JkaW5hdGVzLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRv
IGFjY291bnQuIGMuZi4gLSAoTlNSZWN0KWJvdW5kaW5nQm94OwogLSAoV0tRdWFkKWFic29sdXRl
UXVhZApAQCAtNDkyLDcgKzQ5Miw3IEBAIC0gKERPTU5vZGUgKilwcmV2aW91c0ZvY3VzTm9kZQog
ICAgIHJldHVybiBraXQocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkucHJldmlvdXNGb2N1c2FibGVF
bGVtZW50KCpjb3JlKHNlbGYpKSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGVuZAogCkBAIC01OTUsNyArNTk1LDcgQEAg
LSAodm9pZClnZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZQogCiBAaW1wbGVtZW50YXRp
b24gRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9ucykKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dSZWN0KWJvdW5kaW5nQm94CiAjZWxzZQogLSAo
TlNSZWN0KWJvdW5kaW5nQm94CkBAIC03MTIsNyArNzEyLDcgQEAgLSAoQk9PTClpc0ZvY3VzZWQK
IAogQGVuZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IEBpbXBsZW1lbnRhdGlvbiBET01IVE1MTGlua0VsZW1lbnQgKFdlYlByaXZhdGUpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FbGVtZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FbGVtZW50Lm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRWxlbWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIC0gKHVuc2lnbmVkKWNoaWxkRWxlbWVudENvdW50
CiAgICAgcmV0dXJuIHVud3JhcCgqc2VsZikuY2hpbGRFbGVtZW50Q291bnQoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dSZWN0KWJvdW5k
c0luUm9vdFZpZXdTcGFjZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIgog
I2ltcG9ydCA8V2ViQ29yZS9BdXRvY2FwaXRhbGl6ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oPgpAQCAtNjEsNyArNjEsNyBAQAogLy8gVGhlc2Ugd2Vy
ZSBvcmlnaW5hbGx5IGhlcmUgYmVjYXVzZSB0aGV5IHdlcmUgaGFuZCB3cml0dGVuIGFuZCB0aGUg
cmVzdCBnZW5lcmF0ZWQsCiAvLyBidXQgdGhhdCBpcyBubyBsb25nZXIgdHJ1ZS4KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIC0gKHZvaWQpYWJzb2x1dGVQb3NpdGlvbjoo
aW50ICopeCA6KGludCAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAvLyBET01IVE1MRG9jdW1lbnQKQEAgLTIwNCw3ICsyMDQsNyBAQCAtICh2b2lkKV9h
Y3RpdmF0ZUl0ZW1BdEluZGV4OihpbnQpaW5kZXggCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTElu
cHV0RWxlbWVudCAoRm9ybVByb21wdEFkZGl0aW9ucykKIApJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBACiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNkZWZpbmUgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLIDEKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4
dGVuc2lvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRE9N
VUlLaXRFeHRlbnNpb25zLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9X
ZWJET01PcGVyYXRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTUsNyArOTUsNyBAQCAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZUJ5RmlsdGVyaW5nU3ViCiAg
ICAgcmV0dXJuIFt3ZWJBcmNoaXZlIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9PTClpc0hvcml6b250YWxXcml0aW5n
TW9kZQogewogICAgIE5vZGUqIG5vZGUgPSBjb3JlKHNlbGYpOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IC0gKFdlYkZyYW1lICopY29udGVudEZyYW1lCiAKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNFdmVudFBoYXNlIHRvTlNFdmVu
dFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBsYXRmb3JtUGhhc2UpCiB7CiAgICAgdWlu
dDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7IApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0
RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1
bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5oIgog
CkBAIC0xODksNCArMTg5LDQgQEAgLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKil3diBj
b250ZQogCiBAZW5kCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0RWRpdGluZ0RlbGVnYXRlLm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0RWRpdGluZ0RlbGVn
YXRlLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1
bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdEVkaXRpbmdEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZG9Db20K
ICAgICByZXR1cm4gTk87CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZAogewogfQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0UG9s
aWN5RGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZh
dWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIC0gKHZvaWQp
d2ViVmlldzogKFdlYlZpZXcgKil3diBkZWNpZGVQb2wKICAgICAgICAgLy8gQSBmaWxlIFVSTCBz
aG91bGRuJ3QgZmFsbCB0aHJvdWdoIHRvIGhlcmUsIGJ1dCBpZiBpdCBkaWQsCiAgICAgICAgIC8v
IGl0IHdvdWxkIGJlIGEgc2VjdXJpdHkgcmlzayB0byBvcGVuIGl0LgogICAgICAgICBpZiAoIVtb
cmVxdWVzdCBVUkxdIGlzRmlsZVVSTF0pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3Bh
Y2VdIG9wZW5VUkw6W3JlcXVlc3QgVVJMXV07CiAjZW5kaWYKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIEBpbnRlcmZhY2UgV2ViRGVmYXVsdFVJ
RGVsZWdhdGUgOiBOU09iamVjdCA8V2ViVUlEZWxlZ2F0ZT4KIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIElCT3V0bGV0IE5TTWVudSAqZGVmYXVs
dE1lbnU7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHRE
ZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVn
YXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMy
LDE3IEBACiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmll
dy5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgogI2ltcG9ydCAiV2ViS2l0VmVy
c2lvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FLV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dLVmlld1ByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGVjbGFyYXRp
b25TdG9sZW5Gcm9tQXBwS2l0KQogLSAodm9pZClfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6KEJPT0wp
cmV2ZXJzZWQ7CiBAZW5kCkBAIC03Myw3ICs3Myw3IEBAIC0gKFdlYlZpZXcgKil3ZWJWaWV3OiAo
V2ViVmlldyAqKXd2IGNyZWEKICAgICByZXR1cm4gbmlsOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXZWJWaWV3ICopd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgdXNlckdlc3R1cmU6KEJPT0wpdXNlckdlc3R1cmUKIHsKICAgICByZXR1cm4gbmlsOwpAQCAt
ODYsMjEgKzg2LDIxIEBAIC0gKHZvaWQpd2ViVmlld1Nob3c6IChXZWJWaWV3ICopd3YKIAogLSAo
dm9pZCl3ZWJWaWV3Q2xvc2U6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2luZG93XSBjbG9zZV07CiAjZW5k
aWYKIH0KIAogLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2luZG93XSBt
YWtlS2V5QW5kT3JkZXJGcm9udDp3dl07CiAjZW5kaWYKIH0KIAogLSAodm9pZCl3ZWJWaWV3VW5m
b2N1czogKFdlYlZpZXcgKil3dgogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRvd10gfHwgW1tbd3Yg
d2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pCiAgICAgICAgIFtOU0FwcCBfY3lj
bGVXaW5kb3dzUmV2ZXJzZWQ6RkFMU0VdOwogI2VuZGlmCkBAIC0xNDksNyArMTQ5LDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFN0YXR1cwogCiAtIChCT09MKXdlYlZpZXdJ
c1Jlc2l6YWJsZTogKFdlYlZpZXcgKil3dgogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBOTzsKICNlbHNlCiAgICAgcmV0dXJuIFtbd3Yg
d2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07CkBAIC0xNTgsNyArMTU4LDcgQEAgLSAoQk9P
TCl3ZWJWaWV3SXNSZXNpemFibGU6IChXZWJWaWV3ICopdwogCiAtICh2b2lkKXdlYlZpZXc6IChX
ZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJlc2l6YWJsZQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZG9l
c24ndCBhY3R1YWxseSBjaGFuZ2UgdGhlIHJlc2l6YWJpbGl0eSBvZiB0aGUgd2luZG93LAogICAg
IC8vIG9ubHkgdmlzaWJpbGl0eSBvZiB0aGUgaW5kaWNhdG9yLgogICAgIFtbd3Ygd2luZG93XSBz
ZXRTaG93c1Jlc2l6ZUluZGljYXRvcjpyZXNpemFibGVdOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0g
KHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRSZXNpemEKIAogLSAodm9pZCl3ZWJWaWV3
OiAoV2ViVmlldyAqKXd2IHNldEZyYW1lOihOU1JlY3QpZnJhbWUKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2luZG93XSBzZXRGcmFt
ZTpmcmFtZSBkaXNwbGF5OllFU107CiAjZW5kaWYKIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCAtIChC
T09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjCiAKIC0gKE5TU3RyaW5nICopd2Vi
VmlldzogKFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBp
bml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWwgKnBhbmVsID0gW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGluaXRXaXRo
UHJvbXB0OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XTsKICAgICBbcGFuZWwgc2hvd1dpbmRvdzpu
aWxdOwogICAgIE5TU3RyaW5nICpyZXN1bHQ7CkBAIC0yMTcsNyArMjE3LDcgQEAgLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50RgogfQogCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihp
ZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIGlmICghbGlua2VkT25PckFm
dGVyKFNES1ZlcnNpb246OkZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVs
dCkpCkBAIC0yNjYsNyArMjY2LDcgQEAgLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIAogICAgIHJldHVybiBuaWw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9uc1Vw
ZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6IAogICAgIHZvaWQgcmVtb3ZlSXRl
bShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+PiYgZW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllczsgfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5zaWduZWQg
Y3VycmVudCgpOwogICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExp
c3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNr
Rm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNyAr
MjExLDcgQEAgUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6Oml0ZQogICAgIHJl
dHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdW5zaWduZWQgQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50KCkKIHsKICAgICByZXR1cm4gbV9jdXJyZW50OwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3Qu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIC0g
KGlkKWluaXRXaXRoQmFja0ZvcndhcmRMaXN0OihSZWY8QmFja0YKIAogKyAodm9pZClpbml0aWFs
aXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlzdG9y
eUl0ZW0gKilpdGUKICAgICBjb3JlKHNlbGYpLT5yZW1vdmVJdGVtKCpjb3JlKGl0ZW0pKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAvLyBGSVhN
RTogTW92ZSBpbnRvIFdlYkNvcmUgdGhlIGNvZGUgdGhhdCBkZWFscyBkaXJlY3RseSB3aXRoIFdl
YkNvcmU6OkJhY2tGb3J3YXJkTGlzdC4KIApAQCAtMTk3LDcgKzE5Nyw3IEBAIC0gKHZvaWQpc2V0
VG9NYXRjaERpY3Rpb25hcnlSZXByZXNlbnRhdGkKICAgICAgICAgY3VycmVudEluZGV4ID0gbGlz
dFNpemUgLSAxOwogICAgIGNvcmVCRkxpc3QtPnNldEN1cnJlbnQoY3VycmVudEluZGV4KTsKIH0K
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogLSAoQk9PTCljb250YWluc0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQogewpAQCAtMjUw
LDcgKzI1MCw3IEBAIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXkoVmVjdG9yPFIKIAog
c3RhdGljIGJvb2wgYnVtcGVyQ2FyQmFja0ZvcndhcmRIYWNrTmVlZGVkKCkgCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBo
YWNrTmVlZGVkID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNF
cXVhbFRvU3RyaW5nOkAiY29tLmZyZWV2ZXJzZS5idW1wZXJjYXIiXSAmJiAKICAgICAgICAgIVdl
YktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0JVTVBFUkNB
Ul9CQUNLX0ZPUldBUkRfUVVJUkspOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9I
aXN0b3J5L1dlYkhpc3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TQ2FsZW5kYXJEYXRlU1BJLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3Nh
Z2UuaD4KICNlbmRpZgogCkBAIC0zMjEsNyArMzIxLDcgQEAgLSAoQk9PTClhZGRJdGVtOihXZWJI
aXN0b3J5SXRlbSAqKWVudHJ5IAogCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFtlbnRyeSBV
UkxTdHJpbmddOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXZWJIaXN0b3J5SXRlbSAqb2xkRW50cnkgPSBbX2VudHJpZXNCeVVSTCBvYmplY3RG
b3JLZXk6VVJMU3RyaW5nXTsKICAgICBpZiAob2xkRW50cnkpIHsKICAgICAgICAgaWYgKGRpc2Nh
cmREdXBsaWNhdGUpCkBAIC03MjgsNyArNzI4LDcgQEAgLSAodm9pZClkZWFsbG9jCiAtICh2b2lk
KV9zZW5kTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5hbWUgZW50cmllczooTlNBcnJheSAqKWVu
dHJpZXMKIHsKICAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmVudHJpZXMsIFdlYkhpc3RvcnlJdGVtc0tleSwgbmls
XTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJU
aHJlYWRQb3N0Tm90aWZpY2F0aW9uKG5hbWUsIHNlbGYsIHVzZXJJbmZvKTsKICNlbHNlICAgIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0KQEAgLTc5Niw3ICs3OTYs
NyBAQCAtIChCT09MKWxvYWRGcm9tVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooCiAgICAgICAgIHJl
dHVybiBOTzsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYkhpc3RvcnlMb2FkZWROb3Rp
ZmljYXRpb24sIHNlbGYsIG5pbCk7CiAjZWxzZSAgICAgICAgCiAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXQpAQCAtODE1LDcgKzgxNSw3IEBAIC0gKEJPT0wpc2F2ZVRv
VVJMOihOU1VSTCAqKVVSTCBlcnJvcjooTlMKIHsKICAgICBpZiAoIVtfaGlzdG9yeVByaXZhdGUg
c2F2ZVRvVVJMOlVSTCBlcnJvcjplcnJvcl0pCiAgICAgICAgIHJldHVybiBOTzsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRQb3N0Tm90
aWZpY2F0aW9uKFdlYkhpc3RvcnlTYXZlZE5vdGlmaWNhdGlvbiwgc2VsZiwgbmlsKTsKICNlbHNl
ICAgICAgICAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeUl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAKIE5TU3RyaW5nICpXZWJWaWV3cG9ydElu
aXRpYWxTY2FsZUtleSA9IEAiaW5pdGlhbC1zY2FsZSI7CkBAIC0xMTEsNyArMTExLDcgQEAgc3Rh
dGljIEhpc3RvcnlJdGVtTWFwJiBoaXN0b3J5SXRlbVdyYXBwZQogCiB2b2lkIFdLTm90aWZ5SGlz
dG9yeUl0ZW1DaGFuZ2VkKEhpc3RvcnlJdGVtJikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0KICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViSGlzdG9yeUl0ZW1DaGFu
Z2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86bmlsXTsKICNlbHNlCkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBXS05vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5SQogCiAr
ICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgLSAoTlNTdHJpbmcgKilh
bHRlcm5hdGVUaXRsZQogICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoY29yZShfcHJpdmF0
ZSktPmFsdGVybmF0ZVRpdGxlKCkpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TSW1hZ2UgKilpY29uCiB7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTM3MCw3ICszNzAsNyBAQCAtIChpZClpbml0RnJv
bURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU051bWJlciAqc2NhbGVW
YWx1ZSA9IFtkaWN0IG9iamVjdEZvcktleTpzY2FsZUtleV07CiAgICAgTlNOdW1iZXIgKnNjYWxl
SXNJbml0aWFsVmFsdWUgPSBbZGljdCBvYmplY3RGb3JLZXk6c2NhbGVJc0luaXRpYWxLZXldOwog
ICAgIGlmIChzY2FsZVZhbHVlICYmIHNjYWxlSXNJbml0aWFsVmFsdWUpCkBAIC00MDksNyArNDA5
LDcgQEAgLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopVVJMIHRpdGxlOihOUwogfQogCiAvLyBG
SVhNRTogVGhlIG9ubHkgaU9TIGRpZmZlcmVuY2UgaGVyZSBzaG91bGQgYmUgd2hldGhlciBZRVMg
b3IgTk8gaXMgcGFzc2VkIHRvIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxk
cmVuOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiB7CiAgICAgcmV0dXJuIFtzZWxm
IGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVuOllFU107CkBAIC00NDcs
NyArNDQ3LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aQogICAg
ICAgICBbcmVzdWx0IHJlbGVhc2VdOwogICAgIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW5jbHVkZXNDaGlsZHJlbiAmJiBjb3Jl
SXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpIHsKICNlbHNlCiAgICAgaWYgKGNvcmVJdGVtLT5jaGls
ZHJlbigpLnNpemUoKSkgewpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnlSZXByZXNlbnRhdGkKICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OiBjaGlsZERpY3Rz
IGZvcktleTpjaGlsZHJlbktleV07CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6Y29yZShfcHJpdmF0ZSktPnNjYWxlKCldIGZvcktleTpzY2FsZUtleV07CiAgICAg
W2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpjb3JlKF9wcml2YXRlKS0+
c2NhbGVJc0luaXRpYWwoKV0gZm9yS2V5OnNjYWxlSXNJbml0aWFsS2V5XTsKIApAQCAtNTE5LDcg
KzUxOSw3IEBAIC0gKE5TVVJMICopVVJMCiAgICAgcmV0dXJuIHVybDsKIH0KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiArICh2b2lkKV9yZWxlYXNlQWxs
UGVuZGluZ1BhZ2VDYWNoZXMKIHsKIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCAtIChOU0FycmF5ICop
X3JlZGlyZWN0VVJMcwogICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNlXTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0U2Nh
bGU6KGZsb2F0KXNjYWxlIGlzSW5pdGlhbDooQk9PTClhRmxhZwogewogICAgIGNvcmUoX3ByaXZh
dGUpLT5zZXRTY2FsZShzY2FsZSwgYUZsYWcpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIC0gKHZvaWQp
X3NldFNjcm9sbFBvaW50OihDR1BvaW50KXNjcm9sbFAKICAgICBjb3JlKF9wcml2YXRlKS0+c2V0
U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsUG9pbnQpKTsKIH0KIAotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChCT09MKV9p
c0luUGFnZUNhY2hlCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
YlVSTHNXaXRoVGl0bGVzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlVSTHNXaXRoVGl0
bGVzLmgiCiAKQEAgLTEwOCw0ICsxMDgsNCBAQCArKE5TQXJyYXkgKilVUkxzRnJvbVBhc3RlYm9h
cmQ6KE5TUGFzdGViCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViQ2FjaGUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJNZW1vcnlN
ZWFzdXJlLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0NhY2hlZEltYWdlLmg+CkBAIC01Miw3ICs1Miw3IEBACiAKICsgKHZvaWQpaW5pdGlhbGl6ZQog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRv
UHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCArICh2b2lkKWVtcHR5CiAgICAgV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuY2xlYXIoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZCllbXB0eUlu
TWVtb3J5UmVzb3VyY2VzCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZ2V0cyBjYWxsZWQgZnJvbSBN
b2JpbGVTYWZhcmkgYWZ0ZXIgaXQgY2FsbHMgW1dlYlZpZXcKQEAgLTE5NCw3ICsxOTQsNyBAQCAr
IChDR0ltYWdlUmVmKWltYWdlRm9yVVJMOihOU1VSTCAqKXVybAogICAgIHJldHVybiBjYWNoZWRJ
bWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOwogfQogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICsgKHZvaWQpc2V0RGlz
YWJsZWQ6KEJPT0wpZGlzYWJsZWQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEs
NyBAQCAtIChOU1VSTFJlcXVlc3QgKilkb3dubG9hZDooTlNVUkxEb3dubG9hCiAKIC0gKHZvaWQp
ZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRy
eSBwcmV2aW91c2x5IHN0b3JlZCBjcmVkZW50aWFsIGZpcnN0LgogICAgIGlmICghW2NoYWxsZW5n
ZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pIHsKICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmRlZmF1bHRDcmVkZW50aWFsU3RvcmFnZSgpLmdl
dChlbXB0eVN0cmluZygpLCBQcm90ZWN0aW9uU3BhY2UoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3Bh
Y2VdKSkubnNDcmVkZW50aWFsKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVWYWx1ZUZvcktl
eShjb25zdCB2b2lkIAogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7
CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC04Myw3ICs4Myw3IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1l
bnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsKICAgICBhZGRMb29rdXBLZXkoV2Vi
RWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1lKSk7CiAgICAgYWRkTG9va3VwS2V5
KFdlYkVsZW1lbnRJbWFnZUFsdFN0cmluZ0tleSwgQHNlbGVjdG9yKF9hbHREaXNwbGF5U3RyaW5n
KSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBh
ZGRMb29rdXBLZXkoV2ViRWxlbWVudEltYWdlS2V5LCBAc2VsZWN0b3IoX2ltYWdlKSk7CiAgICAg
YWRkTG9va3VwS2V5KFdlYkVsZW1lbnRJbWFnZVJlY3RLZXksIEBzZWxlY3RvcihfaW1hZ2VSZWN0
KSk7CiAjZW5kaWYKQEAgLTE5OSw3ICsxOTksNyBAQCAtIChOU1N0cmluZyAqKV9zcGVsbGluZ1Rv
b2xUaXAKICAgICByZXR1cm4gTlNTdHJpbmdPck5pbChfcmVzdWx0LT5zcGVsbGluZ1Rvb2xUaXAo
ZGlyKSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAtIChOU0ltYWdlICopX2ltYWdlCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkljb25EYXRhYmFz
ZS5oIgogCkBAIC0xODMsNCArMTgzLDQgQEAgLSAoaWQpZGVsZWdhdGUKIAogQGVuZAogCi0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw3IEBAICsgKE5TU3RyaW5nICopX3dlYmtpdF9sb2NhbENhY2hlRGlyZWN0b3IKICAgICBOU1N0
cmluZyAqY2FjaGVEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5XTsKIAogICAgIGlm
ICghY2FjaGVEaXJlY3RvcnkgfHwgIVtjYWNoZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIGNhY2hlRGlyZWN0b3J5ID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07CiAjZW5kaWYKICNpZiBQ
TEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdFZl
cnNpb25DaGVja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAKICAgICB3aGVuIGFkZGluZyBhIG5ldyB2ZXJzaW9uIGNvbnN0YW50Lgog
Ki8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVm
aW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfM18wX0NPTlRFWFRfTUVOVV9UQUdTIDB4MDIw
QTAwMDAgLy8gNTIyLjAuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQ0FM
X1JFU09VUkNFX1NFQ1VSSVRZX1JFU1RSSUNUSU9OIDB4MDIwQTAwMDAgLy8gNTIyLjAuMAogI2Rl
ZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0FQRVJUVVJFX1FVSVJLIDB4MDIwQTAw
MDAgLy8gNTIyLjAuMApAQCAtNzAsMTAgKzcwLDEwIEBACiAjZGVmaW5lIFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMgMjY2NSAvLyBp
T1MgNy4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSU5TRUNVUkVfQ09OVEVO
VF9CTE9DS0lORyAzNDU0CiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ09OVEVO
VF9TRUNVUklUWV9QT0xJQ1lfU09VUkNFX1NUQVJfUFJPVE9DT0xfUkVTVFJJQ1RJT04gMzU1NQot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmlyc3RUb0V4Y2x1ZGVMb2NhbFN0b3JhZ2VG
cm9tQmFja3VwID0gRFlMRF9JT1NfVkVSU0lPTl8xMV8wLAogICAgIEZpcnN0VGhhdERlZmF1bHRz
VG9QYXNzaXZlVG91Y2hMaXN0ZW5lcnNPbkRvY3VtZW50ID0gRFlMRF9JT1NfVkVSU0lPTl8xMV8z
LAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YktpdFZlcnNpb25DaGVja3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBzdGF0aWMgaW50IG92ZXJyaWRkZW5XZWJLaXRMaW5rVGltZVZlcnNpCiAK
IEJPT0wgV2ViS2l0TGlua2VkT25PckFmdGVyKGludCB2ZXJzaW9uKQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIChXZWJLaXRMaW5r
VGltZVZlcnNpb24oKSA+PSB2ZXJzaW9uKTsKICNlbHNlCiAgICAgaW50MzJfdCBsaW5rVGltZVZl
cnNpb24gPSBXZWJLaXRMaW5rVGltZVZlcnNpb24oKTsKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGlj
IGludCBXZWJLaXRMaW5rVGltZVZlcnNpb24odm9pZCkKICAgICBpZiAob3ZlcnJpZGRlbldlYktp
dExpbmtUaW1lVmVyc2lvbikKICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5XZWJLaXRMaW5rVGlt
ZVZlcnNpb247CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHJldHVybiBOU1ZlcnNpb25PZkxpbmtUaW1lTGlicmFyeSgiV2ViS2l0Iik7CiAjZWxz
ZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82NjI3NzU4PiBOZWVkIHRvIGltcGxlbWVudCBXZWJL
aXRMaW5rZWRPbk9yQWZ0ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TG9jYWxpemFibGVTdHJpbmdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBOU1N0cmluZyAqV2ViTG9jYWxpemVkU3RyaW5n
KFdlYkxvY2FsaXphCiAgICAgLy8gYW5kIGl0cyB1c2Ugb2YgW05TQnVuZGxlIGxvY2FsaXplZFN0
cmluZ0ZvcktleTo6Ol0sIHdoaWNoIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHRocmVhZC1zYWZl
LiBJZgogICAgIC8vIHdlIGRlY2lkZSB3ZSBuZWVkIHRvIHVzZSB0aGlzIG9uIGJhY2tncm91bmQg
dGhyZWFkcywgd2UnbGwgbmVlZCB0byBhZGQgbG9ja2luZyBoZXJlIGFuZCBtYWtlIHN1cmUKICAg
ICAvLyBpdCBkb2Vzbid0IGFmZmVjdCBwZXJmb3JtYW5jZS4KLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0NvbnRyb2xF
eHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
Q29udHJvbEV4dHJhcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNDb250cm9sRXh0cmFzLm0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNDb250
cm9sRXh0cmFzLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIldlYk5TQ29udHJvbEV4dHJhcy5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TRXZlbnRFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRXZlbnRFeHRyYXMubQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0V2ZW50RXh0cmFzLm0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYktpdExl
Z2FjeS9XZWJOU0V2ZW50RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBhdGli
aWxpdHlEZWNsYXJhdGlvbnMuaD4KQEAgLTg0LDQgKzg0LDQgQEAgLSAoQk9PTClfd2ViX2lzVGFi
S2V5RXZlbnQKIAogQGVuZAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gTlNG
aWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpX3dlYmtpdF9zZXRNZXRhZGF0
YVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcgcmVmZXJyZXI6KE5TU3RyaW5nICopcmVmZXJyZXIg
YXRQYXRoOihOU1N0cmluZyAqKXBhdGgKIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgLSAodm9pZClfd2Vi
a2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZwogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNl
dE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOwogfQogCi0jZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLy8gLVtO
U0ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6XSByZXR1cm5zIE5PIGlmIHRoZXJlIGlzIGEg
YnJva2VuIHN5bWxpbmsgYXQgdGhlIHBhdGguCiAvLyBTbyB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBp
bnN0ZWFkLCB3aGljaCByZXR1cm5zIFlFUyBpZiB0aGVyZSBpcyBhbnl0aGluZyB0aGVyZSwgaW5j
bHVkaW5nCkBAIC05MCw3ICs5MCw3IEBAIC0gKE5TU3RyaW5nICopX3dlYmtpdF9wYXRoV2l0aFVu
aXF1ZUZpbGUKICAgICByZXR1cm4gcGF0aDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFy
eURpcmVjdG9yeVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsKICAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZp
eCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TSW1hZ2VFeHRyYXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TSW1hZ2VF
eHRyYXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0ltYWdlRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgPENvY29hL0NvY29hLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TSW1hZ2VFeHRyYXMubQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L1dlYk5TSW1hZ2VFeHRyYXMuaD4KIApAQCAtOTAsNCArOTAsNCBAQCAtICh2b2lkKV93
ZWJfZGlzc29sdmVUb0ZyYWN0aW9uOihmbG9hdClkCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1Bhc3RlYm9hcmRFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIldlYk5TUGFzdGVib2FyZEV4dHJhcy5oIgogCkBAIC0zMTgsNCAr
MzE4LDQgQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbAogCiBAZW5k
CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1ByaW50T3BlcmF0
aW9uRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2Nv
YS5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUHJpbnRPcGVy
YXRpb25FeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYk5TUHJpbnRPcGVyYXRpb25FeHRyYXMubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLm0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYk5TUHJp
bnRPcGVyYXRpb25FeHRyYXMuaCIKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1ZpZXdFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVmlld0V4dHJhcy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVmlld0V4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwxMiArMzYsMTIgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJOU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXcuaD4KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBhdGliaWxpdHlEZWNs
YXJhdGlvbnMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgogI2VuZGlmCiAKQEAgLTY3
LDcgKzY3LDcgQEAgLSAoV2ViRnJhbWVWaWV3ICopX3dlYl9wYXJlbnRXZWJGcmFtZVZpZQogICAg
IHJldHVybiAoV2ViRnJhbWVWaWV3ICopW3NlbGYgX3dlYl9zdXBlcnZpZXdPZkNsYXNzOltXZWJG
cmFtZVZpZXcgY2xhc3NdXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAvLyBGSVhNRTogTWFpbCBpcyB0aGUgb25seSBjbGllbnQgb2YgX3dlYlZp
ZXcsIHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIG5vIHZlcnNpb25zIG9mIE1haWwgbmVlZCBpdC4K
IC0gKFdlYlZpZXcgKilfd2ViVmlldwogewpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKE5TRHJhZ09w
ZXJhdGlvbilfd2ViX2RyYWdPcGVyYXRpb25Gb3IKICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9u
Tm9uZTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX3dlYl9maXJzdFJlc3BvbmRlcklzU2VsZk9yRGVzY2Vu
ZGFudFZpZXcKIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCAtIChCT09MKV93ZWJfZmlyc3RSZXNwb25k
ZXJJc1NlbGZPckRlc2NlCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9uIE5TVmlldyAoV2ViRG9jdW1lbnRWaWV3RXh0
cmFzKQogCiAtIChXZWJGcmFtZSAqKV9mcmFtZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1dpbmRvd0V4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNXaW5kb3dFeHRyYXMubQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1dpbmRvd0V4dHJhcy5tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJOU1dpbmRv
d0V4dHJhcy5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QYW5lbHMvV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPENvY29h
L0NvY29hLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ3JlZGVudGlhbFN0b3JhZ2UuaD4K
QEAgLTY5LDQgKzY5LDQgQEAgQGludGVyZmFjZSBXZWJBdXRoZW50aWNhdGlvblBhbmVsIDogTlNP
YgogQGludGVyZmFjZSBXZWJOb25CbG9ja2luZ1BhbmVsIDogTlNQYW5lbAogQGVuZAogCi0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGFuZWxzL1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGFuZWxzL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaD4KIApAQCAtMjk1LDQgKzI5NSw0IEBAIC0gKEJPT0wpX2Jsb2Nrc0Fj
dGlvbldoZW5Nb2RhbDooU0VMKXRoZUEKIAogQGVuZAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BhbmVscy9XZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJQYW5lbEF1dGhlbnRpY2F0
aW9uSGFuZGxlci5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QYW5lbHMvV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIubQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlBh
bmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmg+CiAKQEAgLTE2Myw0ICsxNjMsNCBAQCAtKHZvaWQp
X2F1dGhlbnRpY2F0aW9uRG9uZVdpdGhDaGFsbGVuZ2U6CiAKIEBlbmQKIAotI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFj
a2FnZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAKIHR5cGVkZWYgdm9pZCAoKkJQX0NyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzRnVu
Y1B0cikodm9pZCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVicy5oPgogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2th
Z2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJC
YXNlUGx1Z2luUGFja2FnZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogKyAodm9pZClpbml0
aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJKYXZh
UGx1Z0luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJKYXZhUGx1Z0luLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViSmF2YVBsdWdJbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxKYXZhVk0vam5pLmg+CiAKQEAgLTg1LDQgKzg1LDQg
QEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViSmF2YVBsdWdJbikKICAgICAgICBleGNlcHRpb25E
ZXNjcmlwdGlvbjooTlNTdHJpbmcgKiopZXhjZXB0aW9uU3RyaW5nOwogCiBAZW5kCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2lu
Q29udGFpbmVyQ2hlY2subW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2ViUGx1Z2lu
Q29udHJvbGxlciAoU2VjcmV0c0lLbm93KQogLSAoV2ViRnJhbWUgKil3ZWJGcmFtZTsgLy8gRklY
TUU6IFRoaXMgZmlsZSBjYWxscyAtW1dlYlBsdWdpbkNvbnRyb2xsZXIgd2ViRnJhbWVdLCB3aGlj
aCBpcyBub3QgZGVjbGFyZWQgaW4gV2ViUGx1Z2luQ29udHJvbGxlci5oLiAgTWVyZ2UgaXNzdWU/
ICBBcmUgdGhlIHBsdWctaW4gZmlsZXMgb3V0IG9mIGRhdGU/CiBAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJQbHVnaW5Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIEBj
bGFzcyBXZWJQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYlZpZXc7CiBAY2xhc3MgV2ViRGF0YVNv
dXJjZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFz
cyBDQUxheWVyOwogI2VuZGlmCiAKQEAgLTU3LDcgKzU3LDcgQEAgQGludGVyZmFjZSBXZWJQbHVn
aW5Db250cm9sbGVyIDogTlNPYmplYwogLSAodm9pZClhZGRQbHVnaW46KE5TVmlldyAqKXZpZXc7
CiAtICh2b2lkKWRlc3Ryb3lQbHVnaW46KE5TVmlldyAqKXZpZXc7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsgKHZvaWQpYWRkUGx1Z0luVmlldzooTlNW
aWV3ICopdmlldzsKIC0gKEJPT0wpcGx1Z0luc0FyZVJ1bm5pbmc7CiAtIChDQUxheWVyICopc3Vw
ZXJsYXllckZvclBsdWdpblZpZXc6KE5TVmlldyAqKXZpZXc7CkBAIC02NSw3ICs2NSw3IEBAIEBp
bnRlcmZhY2UgV2ViUGx1Z2luQ29udHJvbGxlciA6IE5TT2JqZWMKIC0gKHZvaWQpc3RhcnRBbGxQ
bHVnaW5zOwogLSAodm9pZClzdG9wQWxsUGx1Z2luczsKIC0gKHZvaWQpZGVzdHJveUFsbFBsdWdp
bnM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lk
KXN0b3BQbHVnaW5zRm9yUGFnZUNhY2hlOwogLSAodm9pZClyZXN0b3JlUGx1Z2luc0Zyb21DYWNo
ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVn
aW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw3ICs2Myw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYlVJS2l0RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CkBA
IC04MSw3ICs4MSw3IEBAIEBpbnRlcmZhY2UgTlNWaWV3IChQbHVnaW5TZWNyZXRzKQogLSAodm9p
ZClzZXRDb250YWluaW5nV2luZG93OihOU1dpbmRvdyAqKXc7CiBAZW5kCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRm9yIGNvbXBhdGliaWxpdHkg
b25seS4KIEBpbnRlcmZhY2UgTlNPYmplY3QgKE9sZFBsdWdpbkFQSSkKICsgKE5TVmlldyAqKXBs
dWdpblZpZXdXaXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHM7CkBAIC05NSw3
ICs5NSw3IEBAIC0gKHZvaWQpcGx1Z2luU3RvcDsKIC0gKHZvaWQpcGx1Z2luRGVzdHJveTsKIEBl
bmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgYm9vbCBpc0tpbmRPZkNsYXNzKGlkLCBOU1N0cmluZyogY2xhc3NOYW1lKTsKIHN0YXRpYyB2
b2lkIGluc3RhbGxGbGlwNE1hY1BsdWdJbldvcmthcm91bmRJZk5lY2Vzc2FyeSgpOwogI2VuZGlm
CkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgaW5zdGFsbEZsaXA0TWFjUGx1Z0luV29y
a2FybwogCiBzdGF0aWMgTlNNdXRhYmxlU2V0ICpwbHVnaW5WaWV3cyA9IG5pbDsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZUF1ZGlvU2Vzc2lvbigpCiB7CiAgICAgc3RhdGljIGJvb2wgd2FzQXVkaW9TZXNzaW9uSW5p
dGlhbGl6ZWQ7CkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUF1ZGlv
U2Vzc2lvbigpCiAKIC0gKE5TVmlldyAqKXBsdWdJblZpZXdXaXRoQXJndW1lbnRzOihOU0RpY3Rp
b25hcnkgKilhcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6KFdlYlBsdWdpblBhY2thZ2UgKilw
bHVnaW5QYWNrYWdlCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbigpOwogI2VuZGlmCiAKQEAgLTEzMCw3ICsx
MzAsNyBAQCAtIChOU1ZpZXcgKilwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czooTlNECiAKICAgICBO
U1ZpZXcgKnZpZXcgPSBuaWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICB7CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbX2RvY3VtZW50Vmll
dyBfd2ViVmlld107CiAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKGNvbW1vblZNKCkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKE5TVmlldyAqKXBsdWdJblZp
ZXdXaXRoQXJndW1lbnRzOihOU0QKICAgICByZXR1cm4gdmlldzsKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZClhZGRQbHVnSW5WaWV3OihO
U1ZpZXcgKil2aWV3CiB7CiAgICAgaWYgKHBsdWdpblZpZXdzID09IG5pbCkKQEAgLTE5OSw3ICsx
OTksNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpcGx1Z0luc0Fy
ZVJ1bm5pbmcKIHsKICAgICBOU1VJbnRlZ2VyIHBsdWdpblZpZXdDb3VudCA9IFtfdmlld3MgY291
bnRdOwpAQCAtMjMzLDcgKzIzMyw3IEBAIC0gKHZvaWQpc3RvcE9uZVBsdWdpbjooTlNWaWV3ICop
dmlldwogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogLSAodm9pZClzdG9wT25lUGx1Z2luRm9yUGFnZUNhY2hlOihOU1ZpZXcgKil2aWV3CiB7
CiAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luU3Rv
cEZvclBhZ2VDYWNoZSldKSB7CkBAIC0yOTMsNyArMjkzLDcgQEAgLSAodm9pZClzdG9wQWxsUGx1
Z2lucwogICAgIF9zdGFydGVkID0gTk87CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc3RvcFBsdWdpbnNGb3JQYWdlQ2FjaGUKIHsKICAg
ICBpZiAoIV9zdGFydGVkKQpAQCAtMzIwLDcgKzMyMCw3IEBAIC0gKHZvaWQpcmVzdG9yZVBsdWdp
bnNGcm9tQ2FjaGUKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCB2aWV3c0NvdW50OyAr
K2kpCiAgICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3IHdpbGxBZGRQbHVnSW5WaWV3Oltfdmlld3Mgb2JqZWN0QXRJbmRleDppXV07CiB9Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IC0gKHZvaWQpYWRkUGx1Z2luOihOU1ZpZXcgKil2aWV3CiB7CkBAIC0zMzEsMTEgKzMzMSwxMSBA
QCAtICh2b2lkKWFkZFBsdWdpbjooTlNWaWV3ICopdmlldwogICAgIAogICAgIGlmICghW192aWV3
cyBjb250YWluc09iamVjdDp2aWV3XSkgewogICAgICAgICBbX3ZpZXdzIGFkZE9iamVjdDp2aWV3
XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBbW19kb2N1bWVudFZpZXcgX3dlYlZpZXddIGFkZFBsdWdpbkluc3RhbmNlVmlldzp2aWV3XTsK
ICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgQk9PTCBvbGREZWZlcnNDYWxsYmFja3MgPSBbW3NlbGYgd2ViVmlld10gZGVmZXJz
Q2FsbGJhY2tzXTsKICAgICAgICAgaWYgKCFvbGREZWZlcnNDYWxsYmFja3MpCiAgICAgICAgICAg
ICBbW3NlbGYgd2ViVmlld10gc2V0RGVmZXJzQ2FsbGJhY2tzOllFU107CkBAIC0zNTMsNyArMzUz
LDcgQEAgLSAodm9pZClhZGRQbHVnaW46KE5TVmlldyAqKXZpZXcKICAgICAgICAgICAgIFt2aWV3
IHBsdWdpbkluaXRpYWxpemVdOwogICAgICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW9sZERlZmVyc0NhbGxiYWNrcykK
ICAgICAgICAgICAgIFtbc2VsZiB3ZWJWaWV3XSBzZXREZWZlcnNDYWxsYmFja3M6Tk9dOwogI2Vu
ZGlmCkBAIC0zODksNyArMzg5LDcgQEAgLSAodm9pZClkZXN0cm95UGx1Z2luOihOU1ZpZXcgKil2
aWV3CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVPYmplY3Q6
dmlld107Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgW1tfZG9jdW1lbnRWaWV3IF93ZWJWaWV3XSByZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXc6
dmlld107CiAjZW5kaWYKICAgICAgICAgW192aWV3cyByZW1vdmVPYmplY3Q6dmlld107CkBAIC00
MzcsMTIgKzQzNywxMiBAQCAtICh2b2lkKWRlc3Ryb3lBbGxQbHVnaW5zCiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVPYmplY3Q6YVZpZXddOwotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtbX2RvY3VtZW50
VmlldyBfd2ViVmlld10gcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3OmFWaWV3XTsKICNlbmRpZgog
ICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW192aWV3cyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJv
bVN1cGVydmlld1dpdGhvdXROZWVkaW5nRGlzcGxheSldOwogI2Vsc2UKICAgICBbX3ZpZXdzIG1h
a2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJ2aWV3KV07
CkBAIC00NTMsNyArNDUzLDcgQEAgLSAodm9pZClkZXN0cm95QWxsUGx1Z2lucwogICAgIF9kb2N1
bWVudFZpZXcgPSBuaWw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKEJPT0wpcHJvY2Vzc2luZ1VzZXJHZXN0dXJlCiB7CiAgICAgcmV0dXJuIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKQEAgLTUwNiw3ICs1
MDYsNyBAQCAtICh2b2lkKXdlYlBsdWdJbkNvbnRhaW5lckxvYWRSZXF1ZXN0OihOCiAgICAgfQog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lk
KXdlYlBsdWdJbkNvbnRhaW5lcldpbGxTaG93RnVsbFNjcmVlbkZvclZpZXc6KGlkKXBsdWdJblZp
ZXcKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW19kYXRhU291cmNlIF93ZWJWaWV3XTsKQEAg
LTUzNSw3ICs1MzUsNyBAQCAtICh2b2lkKXNob3dTdGF0dXM6KE5TU3RyaW5nICopbWVzc2FnZQog
ICAgIFtzZWxmIHdlYlBsdWdJbkNvbnRhaW5lclNob3dTdGF0dXM6bWVzc2FnZV07CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNDb2xvciAq
KXdlYlBsdWdJbkNvbnRhaW5lclNlbGVjdGlvbkNvbG9yCiB7CiAgICAgYm9vbCBwcmltYXJ5ID0g
dHJ1ZTsKQEAgLTYwNSw3ICs2MDUsNyBAQCAtICh2b2lkKXBsdWdpblZpZXdGaW5pc2hlZExvYWRp
bmc6KE5TVmllCiAKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0tpbmRPZkNsYXNzKGlkIG9iamVjdCwgTlNTdHJpbmcg
KmNsYXNzTmFtZSkKIHsKICAgICBDbGFzcyBjbHMgPSBOU0NsYXNzRnJvbVN0cmluZyhjbGFzc05h
bWUpOwpAQCAtNjk1LDQgKzY5NSw0IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICAgICAgaGFz
SW5zdGFsbGVkRmxpcDRNYWNQbHVnSW5Xb3JrYXJvdW5kID0gdHJ1ZTsKICAgICB9CiB9Ci0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5E
YXRhYmFzZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYlVJS2l0U3VwcG9ydC5oIgogI2VuZGlmCiAK
QEAgLTM4Niw3ICszODYsNyBAQCAtICh2b2lkKWRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5jZVZpZXdz
CiAKICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBQbHVnLWlucyBhcmUgZm91bmQg
aW4gb3JkZXIgb2YgcHJlY2VkZW5jZS4KICAgICAvLyBJZiB0aGVyZSBhcmUgZHVwbGljYXRlcywg
dGhlIGZpcnN0IGZvdW5kIHBsdWctaW4gaXMgdXNlZC4KICAgICAvLyBGb3IgZXhhbXBsZSwgaWYg
dGhlcmUgaXMgYSBRdWlja1RpbWUucGx1Z2luIGluIHRoZSB1c2VycydzIGhvbWUgZGlyZWN0b3J5
CkBAIC0zOTksNyArMzk5LDcgQEAgKyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMKICAg
ICAgICAgbmlsXTsKICNlbHNlCiAgICAgLy8gaU9TIHBsdWctaW5zIGFyZSBhbGwgbG9jYXRlZCBp
biAvU3lzdGVtL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMKLSNpZiAhUExBVEZPUk0oSU9TX1NJ
TVVMQVRPUikKKyNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUl9GQU1JTFkpCiAgICAgTlNBcnJh
eSAqc3lzdGVtTGlicmFyeSA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5T
TGlicmFyeURpcmVjdG9yeSwgTlNTeXN0ZW1Eb21haW5NYXNrLCBZRVMpOwogICAgIGlmICghc3lz
dGVtTGlicmFyeSB8fCBbc3lzdGVtTGlicmFyeSBjb3VudF0gPT0gMCkKICAgICAgICAgcmV0dXJu
IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luUGFj
a2FnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YlBsdWdpblBhY2thZ2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luUGFja2FnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjEs
NyArNjEsNyBAQCAtIChpZClpbml0V2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBOU0ZpbGVIYW5kbGUgKmV4ZWN1dGFibGVGaWxlID0gW05TRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlRm9yUmVhZGluZ0F0UGF0aDpbbnNCdW5kbGUgZXhlY3V0YWJsZVBhdGhdXTsK
ICAgICBOU0RhdGEgKmRhdGEgPSBbZXhlY3V0YWJsZUZpbGUgcmVhZERhdGFPZkxlbmd0aDo1MTJd
OwogICAgIFtleGVjdXRhYmxlRmlsZSBjbG9zZUZpbGVdOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgLSAoQk9PTClfaG9zdHNMYXll
cnNJbldpbmRvd1NlcnZlcjsKIAogKyAodm9pZClpbml0aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVh
ZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAj
aW1wb3J0ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2Vy
SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KQEAgLTU4LDcgKzU4LDcgQEAgTlNTdHJpbmcgKldl
YkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aQogTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlkTW9k
aWZ5RGF0YWJhc2VOb3RpZmljYXRpb24gPSBAIldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0YWJhc2VO
b3RpZmljYXRpb24iOwogTlNTdHJpbmcgKldlYkRhdGFiYXNlSWRlbnRpZmllcktleSA9IEAiV2Vi
RGF0YWJhc2VJZGVudGlmaWVyS2V5IjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogQ0ZTdHJpbmdSZWYgV2ViRGF0YWJhc2VPcmlnaW5zRGlkQ2hhbmdlTm90
aWZpY2F0aW9uID0gQ0ZTVFIoIldlYkRhdGFiYXNlT3JpZ2luc0RpZENoYW5nZU5vdGlmaWNhdGlv
biIpOwogI2VuZGlmCiAKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChOU0RpY3Rpb25hcnkgKilkZXRh
aWxzRm9yRGF0YWJhc2U6KE5TCiAtICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogewogICAgIERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlQWxsRGF0YWJhc2VzSW1tZWRpYXRlbHko
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyB0byBiZSByZW1vdmVkIG9uY2UgRGF0YWJhc2VUcmFja2VycyBpbiBt
dWx0aXBsZSBwcm9jZXNzZXMKICAgICAvLyBhcmUgaW4gc3luYzogPHJkYXI6Ly9wcm9ibGVtLzk1
Njc1MDA+IFJlbW92ZSBXZWJzaXRlIERhdGEgcGFuZSBpcyBub3Qga2VwdCBpbiBzeW5jIHdpdGgg
U2FmYXJpCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQ
YXRoOmRhdGFiYXNlc0RpcmVjdG9yeVBhdGgoKSBlcnJvcjpOVUxMXTsKQEAgLTE1Nyw3ICsxNTcs
NyBAQCAtICh2b2lkKWRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZXMKICNlbmRpZgogfQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBib29sIGlz
RmlsZUhpZGRlbihOU1N0cmluZyAqZmlsZSkKIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCArICh2b2lk
KXNjaGVkdWxlRW1wdHlEYXRhYmFzZVJlbW92YWwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAZW5kCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbDsKICAgICB2
b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikgZmluYWw7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRp
c3BhdGNoRGlkQWRkTmV3T3JpZ2luKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZERlbGV0
ZURhdGFiYXNlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlT3Jp
Z2luKCkgZmluYWw7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRhdGFiYXNlT3JpZ2luc0RpZENoYW5nZSgpOwogCiAg
ICAgYm9vbCBtX2lzSGFuZGxpbmdOZXdEYXRhYmFzZU9yaWdpbk5vdGlmaWNhdGlvbiB7IGZhbHNl
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25z
dCBDRlN0cmluZ1JlZiBXZWJEYXRhYmFzZU9yaWdpbldhc0FkZGVkTm90aWZpY2F0aW9uID0gQ0ZT
VFIoImNvbS5hcHBsZS5Nb2JpbGVTYWZhcmlTZXR0aW5ncy5XZWJEYXRhYmFzZU9yaWdpbldhc0Fk
ZGVkTm90aWZpY2F0aW9uIik7CiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgV2ViRGF0YWJhc2VX
YXNEZWxldGVkTm90aWZpY2F0aW9uID0gQ0ZTVFIoImNvbS5hcHBsZS5Nb2JpbGVTYWZhcmlTZXR0
aW5ncy5XZWJEYXRhYmFzZVdhc0RlbGV0ZWROb3RpZmljYXRpb24iKTsKIHN0YXRpYyBjb25zdCBD
RlN0cmluZ1JlZiBXZWJEYXRhYmFzZU9yaWdpbldhc0RlbGV0ZWROb3RpZmljYXRpb24gPSBDRlNU
UigiY29tLmFwcGxlLk1vYmlsZVNhZmFyaVNldHRpbmdzLldlYkRhdGFiYXNlT3JpZ2luV2FzRGVs
ZXRlZE5vdGlmaWNhdGlvbiIpOwpAQCAtNTAsNyArNTAsNyBAQCBXZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQqIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHZvaWQgb25O
ZXdEYXRhYmFzZU9yaWdpbkFkZGVkKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNl
cnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCiB7CiAgICAg
QVNTRVJUKG9ic2VydmVyKTsKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgb25EYXRhYmFz
ZU9yaWdpbkRlbGV0ZWQoQ0ZObwogCiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OldlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0gQ0ZOb3RpZmlj
YXRpb25DZW50ZXJHZXREYXJ3aW5Ob3RpZnlDZW50ZXIoKTsgCiAgICAgQ0ZOb3RpZmljYXRpb25D
ZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIHRoaXMsIG9uTmV3RGF0YWJhc2VPcmlnaW5BZGRlZCwg
V2ViRGF0YWJhc2VPcmlnaW5XYXNBZGRlZE5vdGlmaWNhdGlvbiwgMCwgQ0ZOb3RpZmljYXRpb25T
dXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwogICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCB0aGlzLCBvbkRhdGFiYXNlRGVsZXRlZCwgV2ViRGF0
YWJhc2VXYXNEZWxldGVkTm90aWZpY2F0aW9uLCAwLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25C
ZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CkBAIC04OCw3ICs4OCw3IEBAIFdlYkRhdGFiYXNl
TWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW4KIAogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2Vy
dmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIHRoaXMsIDAs
IDApOwogI2VuZGlmCiB9CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQ6OmRpc3BhdGNoRAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5v
dGlmaWNhdGlvbiBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkgdXNlckluZm86dXNlcklu
Zm8uZ2V0KCldOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZEFkZE5ld09y
aWdpbigpCiB7ICAgIApAQCAtMjEzLDQgKzIxMyw0IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50OjpkYXRhYmFzZU8KICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclBvc3ROb3RpZmljYXRp
b24oQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCBXZWJEYXRhYmFzZU9yaWdp
bnNEaWRDaGFuZ2VOb3RpZmljYXRpb24sIDAsIDAsIHRydWUpOwogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
U3RvcmFnZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgLSAoTlNB
cnJheSAqKW9yaWdpbnMKIC0gKHZvaWQpZGVsZXRlQWxsT3JpZ2lucwogewogICAgIFdlYktpdDo6
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxPcmlnaW5zKCk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgbmVl
ZHMgdG8gYmUgcmVtb3ZlZCBvbmNlIFN0b3JhZ2VUcmFja2VycyBpbiBtdWx0aXBsZSBwcm9jZXNz
ZXMKICAgICAvLyBhcmUgaW4gc3luYzogPHJkYXI6Ly9wcm9ibGVtLzk1Njc1MDA+IFJlbW92ZSBX
ZWJzaXRlIERhdGEgcGFuZSBpcyBub3Qga2VwdCBpbiBzeW5jIHdpdGggU2FmYXJpCiAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOltXZWJTdG9yYWdl
TWFuYWdlciBfc3RvcmFnZURpcmVjdG9yeVBhdGhdIGVycm9yOk5VTExdOwpAQCAtMTM4LDcgKzEz
OCw3IEBAIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKICAgICBhdXRv
ICpzdG9yYWdlUGF0aCA9IFtXZWJTdG9yYWdlTWFuYWdlciBfc3RvcmFnZURpcmVjdG9yeVBhdGhd
OwogICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHN0b3JhZ2VQ
YXRoLCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJDbGll
bnQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAobGlua2VkT25PckFmdGVyKFNES1ZlcnNpb246OkZpcnN0VG9FeGNsdWRlTG9jYWxTdG9y
YWdlRnJvbUJhY2t1cCkpCiAgICAgICAgIFtbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQ
YXRoXSBzZXRSZXNvdXJjZVZhbHVlOkBZRVMgZm9yS2V5Ok5TVVJMSXNFeGNsdWRlZEZyb21CYWNr
dXBLZXkgZXJyb3I6bmlsXTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSwxMSArNDksMTEgQEAgcHVibGljOgogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgog
cHJpdmF0ZToKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigidW51c2VkLXByaXZhdGUtZmllbGQiKQogI2VuZGlm
CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogI2VuZGlmCiAjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBcHBsaWNhdGlvbkNhY2hlCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBOU1N0cmluZyAq
b3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyOwogCiAvLyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92
ZWQgd2hlbiBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgp
CkBAIC02NSw3ICs2NSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVudGlmaWVy
OigKIAogc3RhdGljIE5TU3RyaW5nICphcHBsaWNhdGlvbkNhY2hlQnVuZGxlSWRlbnRpZmllcigp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KG92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIG92ZXJyaWRlQnVuZGxl
SWRlbnRpZmllcjsKICAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2Fm
YXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcg
Kzk5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50
UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBmaW5h
bDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdl
YkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgZmlu
YWw7CiAjZW5kaWYKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZElj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVy
JikgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6Okljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSBvdmVycmlkZTsKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJikgZmluYWw7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgZmluYWw7CiAjZW5kaWYKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNv
bnN0IFN0cmluZyYgcGF0aCwgU3RyaW5nICZnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7CiAgICAg
U3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZv
aWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICAgICB2b2lk
IGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICNlbmRpZgpAQCAt
MTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWaWRlb1RyaWdnZXIgfAogICAg
ICAgICAgICAgUGx1Z2luVHJpZ2dlcnwgCiAgICAgICAgICAgICBDYW52YXNUcmlnZ2VyIHwKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgIEFu
aW1hdGVkT3BhY2l0eVRyaWdnZXIgfCAvLyBBbGxvdyBvcGFjaXR5IGFuaW1hdGlvbnMgdG8gdHJp
Z2dlciBjb21wb3NpdGluZyBtb2RlIGZvciBpT1M6IDxyZGFyOi8vcHJvYmxlbS83ODMwNjc3Pgog
I2VuZGlmCiAgICAgICAgICAgICBBbmltYXRpb25UcmlnZ2VyKTsKQEAgLTIyMCw3ICsyMjAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIGlz
VGV4dE9ubHkpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgLypjb250ZXh0SWQqLykgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50NjRfdCAvKmNvbnRleHRJ
ZCovKSBmaW5hbDsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcih1aW50NjRfdCAv
KmNvbnRleHRJZCovLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8g
Ki8pIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBACiAjaW1wb3J0ICJOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEdF
T0xPQ0FUSU9OKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShHRU9MT0NBVElP
TikKICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KICNlbmRpZgogCkBAIC0xMDIsNyAr
MTAyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUG9pbnRlckxvY2tDb250cm9sbGVyLmg+CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCA8V2ViQ29yZS9XQUtDbGlwVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTEyOSw3ICsxMjks
NyBAQCBOU1N0cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VXYXJuaW5nTWVzc2FnCiBOU1N0cmluZyAq
V2ViQ29uc29sZU1lc3NhZ2VFcnJvck1lc3NhZ2VMZXZlbCA9IEAiRXJyb3JNZXNzYWdlTGV2ZWwi
OwogCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGlu
dGVyZmFjZSBOU0FwcGxpY2F0aW9uIChXZWJOU0FwcGxpY2F0aW9uRGV0YWlscykKIC0gKE5TQ3Vy
c29yICopX2N1cnNvclJlY3RDdXJzb3I7CiBAZW5kCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OmNocm9tZURlc3Ryb3llZCgpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0g
dG9EZXZpY2VTcGFjZShyZWN0LCBbbV93ZWJWaWV3IHdpbmRvd10pOwogICAgIFtbbV93ZWJWaWV3
IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzZXRGcmFtZTp3aW5kb3dS
ZWN0XTsKICNlbmRpZgpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
ZXRXaW5kb3dSZWN0KGNvbnMKIAogRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVj
dCgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3RnJhbWU6bV93ZWJWaWV3XTsKICAgICByZXR1cm4gdG9Vc2VyU3BhY2Uod2luZG93UmVj
dCwgW21fd2ViVmlldyB3aW5kb3ddKTsKICNlbHNlCkBAIC0yMDMsNyArMjAzLDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhGb2N1cwogCiB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6dGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkKSB7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIHRyeWluZyB0byBt
b3ZlIGZvY3VzIG91dCBvZiBtX3dlYlZpZXcsIGFuZCBiZWNhdXNlCiAgICAgICAgIC8vIG1fd2Vi
VmlldyBtYXkgY29udGFpbiBzdWJ2aWV3cyB3aXRoaW4gaXQsIHdlIGFzayBpdCBmb3IgdGhlIG5l
eHQga2V5CkBAIC00MjUsNyArNDI1LDcgQEAgaW5saW5lIHN0YXRpYyBOU1N0cmluZyAqc3RyaW5n
Rm9yTWVzc2FnZQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZCBkZWxlZ2F0ZSA9IFttX3dlYlZpZXcgVUlEZWxlZ2F0ZV07CiAj
ZWxzZQogICAgIGlmICghW21fd2ViVmlldyBfYWxsb3dzTWVzc2FnaW5nXSkKQEAgLTQ2MSw3ICs0
NjEsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sCiAgICAgICAg
IHN0cmluZ0Zvck1lc3NhZ2VMZXZlbChsZXZlbCksIEAiTWVzc2FnZUxldmVsIiwKICAgICAgICAg
TlVMTF07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBbW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGFzeW5jRm9yd2FyZGVyXSB3
ZWJWaWV3Om1fd2ViVmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOmRpY3Rpb25hcnkgd2l0aFNvdXJj
ZTptZXNzYWdlU291cmNlXTsKICNlbHNlCiAgICAgaWYgKHJlc3BvbmRzVG9OZXdTZWxlY3RvcikK
QEAgLTU5OSw3ICs1OTksNyBAQCBJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb1Nj
cmVlCiAgICAgcmV0dXJuIHI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0CiB7CiAgICAgcmV0dXJuIHA7CkBA
IC03OTEsNyArNzkxLDcgQEAgUmVmUHRyPEljb24+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNv
bgogICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCiB7
CkBAIC04NTEsMTQgKzg1MSwxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6bWFrZUZpcnN0UmVz
cG9uZGVyCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uXTsKICNl
bmRpZgogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uXTsK
ICNlbmRpZgogfQpAQCAtODc3LDcgKzg3Nyw3IEBAIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6Omdl
bmVyYXRlUmVwbGFjZW0KICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOnBhdGhdOwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmZvcm1E
aWRGb2N1c05vZGU6KSwga2l0KCZlbGVtZW50KSk7CkBAIC05MDEsNyArOTAxLDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1BbGlnbm1lbgogCiBSZWZQdHI8V2ViQ29yZTo6UG9w
dXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQmIGNsaWVudCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvcHVwTWVudU1hYygm
Y2xpZW50KSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTEwLDcgKzkxMCw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWUKIAogUmVmUHRyPFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50JiBjbGllbnQpIGNvbnN0CiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZWFyY2hQb3B1cE1lbnVNYWMoJmNsaWVudCkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBXZWJDaHJvCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRQYWludEVudGlyZUNvbnRl
bnRzKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0g
W1tbbV93ZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwpAQCAtOTc0
LDcgKzk3NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW4KIAog
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6YXZLaXRFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTAy
Nyw3ICsxMDI3LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbgog
ICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OnN1cHBvcnRzRnVsbFNjcmVlbkZv
ckVsZW1lbnQ6d2l0aEtleWJvYXJkOik7CiAgICAgaWYgKFtbbV93ZWJWaWV3IFVJRGVsZWdhdGVd
IHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBDYWxsVUlEZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oZmFsc2UsIG1fd2ViVmlldywgc2VsZWN0b3IsIGtpdChjb25z
dF9jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPigmZWxlbWVudCkpLCB3aXRoS2V5Ym9hcmQpOwotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFtt
X3dlYlZpZXcgX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6Y29uc3RfY2FzdDxXZWJDb3Jl
OjpFbGVtZW50Kj4oJmVsZW1lbnQpIHdpdGhLZXlib2FyZDp3aXRoS2V5Ym9hcmRdOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CkBAIC0xMDQyLDcgKzEwNDIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZW50ZXJGdWxsU2NyZWVuRm9yCiAgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywg
c2VsZWN0b3IsIGtpdCgmZWxlbWVudCksIGxpc3RlbmVyKTsKICAgICAgICAgW2xpc3RlbmVyIHJl
bGVhc2VdOwogICAgIH0KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGVsc2UKICAgICAgICAgW21fd2ViVmlldyBfZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudDomZWxlbWVudF07CiAjZW5kaWYKQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckUKICAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93
ZWJWaWV3LCBzZWxlY3Rvciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5lcik7CiAgICAgICAgIFtsaXN0
ZW5lciByZWxlYXNlXTsKICAgICB9Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBlbHNlCiAgICAgICAgIFttX3dlYlZpZXcgX2V4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudDplbGVtZW50XTsKICNlbmRpZgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aQogCiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKQEAgLTI3OCw0ICsy
NzgsNCBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lCiAgICAgfQog
fQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0kKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKIHsK
QEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERy
YWcoCiAgICAgW21fd2ViVmlldyBfZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uXTsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkgCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FLQXBwS2l0U3R1YnMuaD4KICNlbmRpZgogCkBA
IC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRB
cmVhKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsKICAgICB2b2lkIG92ZXJmbG93U2Nyb2xsUG9z
aXRpb25DaGFuZ2VkKCkgZmluYWwgeyB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRl
bnRDaGFuZ2VOb3RpZmljYXRpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wRGVsYXlpbmdBbmRD
b2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKICAgICBib29sIGhh
c1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkgZmluYWw7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyB7IGZhbHNlIH07CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IG1fdGV4dENoZWNraW5nUmVxdWVz
dDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJv
b2wgbV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faGFzRGVsYXllZENvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb24geyBmYWxzZSB9OwogI2Vu
ZGlmCkBAIC0yMTksNyArMjE5LDcgQEAgaW5saW5lIFdlYkNvcmU6OkVBZmZpbml0eSBjb3JlKE5T
U2VsZWN0aQogICAgIHJldHVybiBXZWJDb3JlOjpFQWZmaW5pdHk6OlVQU1RSRUFNOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGlubGluZSBib29s
IFdlYkVkaXRvckNsaWVudDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0ICJE
T01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkZyYW1lVmlldy5oIgpAQCAtMTAwLDEz
ICsxMDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNTcGVsbENoZWNrZXJEZXRhaWxzKQog
LSAoTlNTdHJpbmcgKilsYW5ndWFnZUZvcldvcmRSYW5nZTooTlNSYW5nZSlyYW5nZSBpblN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dy
YXBoeTsKIEBlbmQKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAw
KQogQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKFdlYk5TQXR0cmlidXRlZFN0cmluZ0Rl
dGFpbHMpCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJvbVJhbmdlOihOU1Jh
bmdlKXJhbmdlIGRvY3VtZW50OihET01Eb2N1bWVudCAqKWRvY3VtZW50IGRvY3VtZW50QXR0cmli
dXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBzdWJyZXNvdXJjZXM6KE5TQXJyYXkgKiop
c3VicmVzb3VyY2VzOwogQGVuZApAQCAtMTM4LDcgKzEzOCw3IEBAIC0gKFVuZG9TdGVwJilzdGVw
OwogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnRvZ2dsZUNvbnRpbnVvdXNTcAogICAgIFttX3dlYlZpZXcgdG9nZ2xlQ29u
dGludW91c1NwZWxsQ2hlY2tpbmc6bmlsXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKQogewpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xp
ZW50OjpzaG91bGRBcHBseVN0eWxlKFMKIAogc3RhdGljIHZvaWQgdXBkYXRlRm9udFBhbmVsKFdl
YlZpZXcgKndlYlZpZXcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnZpZXcgPSBbW1t3ZWJWaWV3
IHNlbGVjdGVkRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBpZiAoW3ZpZXcg
aXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAgICAgICAgWyhXZWJIVE1MVmll
dyAqKXZpZXcgX3VwZGF0ZUZvbnRQYW5lbF07CkBAIC0zMTQsMTQgKzMxNCwxNCBAQCBib29sIFdl
YkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaWRCZWdpbkVkaXRpbmcoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBw
b3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uIG9i
amVjdDptX3dlYlZpZXddOwogI2Vsc2UKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdl
YlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24sIG1fd2ViVmlldywgbmlsKTsKICNlbmRp
ZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFu
Z2VOb3RpZmljYXRpb25zKCkKIHsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6c3RvcERlbGF5aW5nQW5kQ29hCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkKIHsKICAgICB1cGRhdGVGb250UGFuZWwobV93ZWJWaWV3KTsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bV93ZWJWaWV3XTsgICAgCiAjZWxzZQogICAg
IGlmIChtX2RlbGF5aW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMpIHsKQEAgLTM2Niw3ICsz
NjYsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlCiAgICAgICAg
IG1fbGFzdEVkaXRvclN0YXRlV2FzQ29udGVudEVkaXRhYmxlID0gWyhXZWJIVE1MVmlldyAqKWRv
Y3VtZW50VmlldyBfaXNFZGl0YWJsZV0gPyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpZ
ZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpObzsKICAgICB9CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUaGlz
IHF1aXJrIGlzIG5lZWRlZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzUwMDk2MjU+IC0gV2UgY2Fu
IHBoYXNlIGl0IG91dCBvbmNlIEFwZXJ0dXJlIGNhbiBhZG9wdCB0aGUgbmV3IGJlaGF2aW9yIG9u
IHRoZWlyIGVuZAogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhPVVRfQVBFUlRVUkVfUVVJUkspICYmIFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5BcGVydHVyZSJd
KQogICAgICAgICByZXR1cm47CkBAIC0zOTIsMTQgKzM5MiwxNCBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlzY2FyZGVkQ29tcG9zaXRpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjYW5jZWxl
ZENvbXBvc2l0aW9uKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFtbTlNUZXh0SW5wdXRDb250ZXh0IGN1cnJlbnRJbnB1dENvbnRleHRdIGRp
c2NhcmRNYXJrZWRUZXh0XTsKICNlbmRpZgogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlk
RW5kRWRpdGluZygpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uIG9iamVjdDptX3dl
YlZpZXddOwogI2Vsc2UKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdEaWRF
bmRFZGl0aW5nTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIG5pbCk7CkBAIC00MDgsNyArNDA4LDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttX3dlYlZpZXcgX2VkaXRp
bmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF1dOwogI2VuZGlmCiB9
CkBAIC00MjksNyArNDI5LDcgQEAgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRV
UkxGbwogICAgIHJldHVybiB7IH07CiB9CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKQogCiAvLyBGSVhNRTogUmVtb3ZlIGJvdGggdGhpcyBzdHViIGFuZCB0aGUgcmVh
bCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cgb25jZSB3ZSBkb24ndCBuZWVkIHRoZSBy
ZWFsIHZlcnNpb24gb24gYW55IHN1cHBvcnRlZCBwbGF0Zm9ybS4KIC8vIFRoaXMgc3R1YiBpcyBu
b3QgdXNlZCBvdXRzaWRlIFdlYktpdCwgYnV0IGl0J3MgaGVyZSBzbyB3ZSB3b24ndCBnZXQgYSBs
aW5rZXIgZXJyb3IuCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0
cmlidXRlc0ZvckF0dHJpYgogICAgICAgICBbZXhjbHVkZWRFbGVtZW50cyBhZGRPYmplY3Q6QCJv
YmplY3QiXTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgTlNFeGNsdWRlZEVsZW1lbnRzRG9j
dW1lbnRBdHRyaWJ1dGUgPSBAIkV4Y2x1ZGVkRWxlbWVudHMiOwogI2VuZGlmCiAKQEAgLTQ5NCw3
ICs0OTQsNyBAQCB2b2lkIF9XZWJDcmVhdGVGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lCiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBwYXN0ZWJvYXJkTmFtZS5p
c0VtcHR5KCkgPyBuaWwgOiBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJv
YXJkTmFtZV07CiAgICAgW21fd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpwYXN0ZWJv
YXJkXTsKICNlbmRpZgpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlclVuZG9PclJlZG8KIHsKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFtt
X3dlYlZpZXcgdW5kb01hbmFnZXJdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gV2hpbGUgd2UgYXJlIHVuZG9pbmcsIHdlIHNob3VsZG4ndCBi
ZSBhc2tlZCB0byByZWdpc3RlciBhbm90aGVyIFVuZG8gb3BlcmF0aW9uLCB3ZSBzaG91bGRuJ3Qg
ZXZlbiBiZSB0b3VjaGluZyB0aGUgRE9NLgogICAgIC8vIEJ1dCBqdXN0IGluIGNhc2UgdGhpcyBo
YXBwZW5zLCByZXR1cm4gdG8gYXZvaWQgcHV0dGluZyB0aGUgdW5kbyBtYW5hZ2VyIGludG8gYW4g
aW5jb25zaXN0ZW50IHN0YXRlLgogICAgIC8vIFNhbWUgZm9yIGJlaW5nIGFza2VkIHRvIHJlZ2lz
dGVyIGEgUmVkbyBvcGVyYXRpb24gaW4gdGhlIG1pZHN0IG9mIGFub3RoZXIgUmVkby4KQEAgLTc3
MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVkbygpCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAg
ICBhdXRvKiBmcmFtZSA9IGRvd25jYXN0PE5vZGU+KGV2ZW50LT50YXJnZXQoKSktPmRvY3VtZW50
KCkuZnJhbWUoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdlYkhUTUxWaWV3ICp3ZWJIVE1MVmlldyA9IChXZWJIVE1MVmlldyAqKVtba2l0KGZy
YW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgaWYgKFt3ZWJIVE1MVmlldyBfaW50
ZXJwcmV0S2V5RXZlbnQ6ZXZlbnQgc2F2aW5nQ29tbWFuZHM6Tk9dKQogICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKQEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVuCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJ
bnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU3dpdGNoIHRv
IFdlYktpdDIgbW9kZWwsIGludGVycHJldGluZyB0aGUgZXZlbnQgYmVmb3JlIGl0J3Mgc2VudCBk
b3duIHRvIFdlYkNvcmUuCiAgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxOb2RlPihldmVudC0+
dGFyZ2V0KCkpLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgV2ViSFRNTFZpZXcgKndlYkhUTUxW
aWV3ID0gKFdlYkhUTUxWaWV3ICopW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3
XTsKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5n
ZUluVGV4CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkpCiAgICAgICAg
IHJldHVybjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKCFVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJUeXBp
bmdHZXN0dXJlKCkgfHwgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6OmZvY3VzZWRFbGVtZW50
QXRHZXN0dXJlU3RhcnQoKSAhPSBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAg
LTg4OSw3ICs4ODksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4
CiAgICAgQ2FsbEZvcm1EZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih0ZXh0RGlkQ2hhbmdl
SW5UZXh0QXJlYTppbkZyYW1lOiksIHRleHRBcmVhRWxlbWVudCwga2l0KGVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpoYXNSaWNobHlFZGl0YWJsZVNlbGVj
dGlvbigpCiB7CkBAIC05NTQsOSArOTU0LDkgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
V2ViRWRpdG9yQ2xpZQogICAgIHJldHVybiByZXN1bHRzOwogfQogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBib29sIFdlYkVkaXRvckNsaWVudDo6
cGVyZm9ybVR3b1N0ZXBEcm9wKERvY3VtZW50RnJhZ21lbnQmLCBSYW5nZSYsIGJvb2wpCiB7CkBA
IC0xMTg0LDcgKzExODQsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0Zvcldv
cmQoCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCkKIHsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVBY2NlcHRlZENhbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV2ViRWRpdG9yU3BlbGxD
aGVja1Jlc3BvbmRlciA6IE5TT2JqZWN0CiB7CkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGluCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQogewotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKCFt
X3RleHRDaGVja2luZ1JlcXVlc3QpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdCA9ICZyZXF1
ZXN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7
CiAgICAgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IGZpbmFsOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVG
cm9tUGFnZUNhY2hlKCkgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9u
SFRNTCgpIGZpbmFsOwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
JikgZmluYWw7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0
aWVzKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBm
aW5hbDsKICNlbmRpZgogCkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikg
ZmluYWw7CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWUqKSBmaW5hbDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hl
ZEZyYW1lKCkgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UoKSBmaW5hbDsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkJikgZmluYWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBib29sIHNob3VsZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsNyArMTM3LDcgQEAKICNpbXBvcnQgIldlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5oIgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XQUtDbGlwVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtTY3JvbGxWaWV3Lmg+CkBAIC0x
NjUsNyArMTY1LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogQGludGVyZmFjZSBXZWJIVE1MVmlldyAoSW5pdCkKIC0gKGlkKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZTsKIEBlbmQKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpoYXNIVE1MVmlldygpCiAgICAgcmV0dXJuIFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dl
YkhUTUxWaWV3IGNsYXNzXV07CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0T25SZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICp2aWV3
ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgZG9jdW1lbnRWaWV3XTsKQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21Q
CiB7CiAgICAgLy9yZW1vdmUgYW55IE5ldFNjYXBlIHBsdWdpbnMgdGhhdCBhcmUgY2hpbGRyZW4g
b2YgdGhpcyBmcmFtZSBiZWNhdXNlIHRoZXkgYXJlIGFib3V0IHRvIGJlIGRldGFjaGVkCiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyByZW1v
dmVQbHVnaW5JbnN0YW5jZVZpZXdzRm9yOihtX3dlYkZyYW1lLmdldCgpKV07CiAjZW5kaWYKICAg
ICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2V0V2ViRnJhbWU6bmlsXTsg
Ly8gbmVlZGVkIGZvciBub3cgdG8gYmUgY29tcGF0aWJsZSB3LyBvbGQgYmVoYXZpb3IKQEAgLTMy
OCw3ICszMjgsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiB7
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAg
ICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9u
cyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3
KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVG
dW5jKSB7CiAgICAgICAgIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2ViVGhyZWFkKGltcGxl
bWVudGF0aW9ucy0+d2ViVGhyZWFkRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlRnVuYywg
d2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6ZGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlOnJlc3BvbnNlOmxlbmd0aDpmcm9tRGF0YVNvdXJjZTopLCByZXF1ZXN0Lm5zVVJM
UmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCksIGxlbmd0aCwgZGF0YVNvdXJjZShsb2FkZXIpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
YXNzaWduSWRlbnRpZgogCiAgICAgUmV0YWluUHRyPGlkPiBvYmplY3Q7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50YXRpb25z
LT53ZWJUaHJlYWRJZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMpIHsKICAgICAgICAgb2JqZWN0ID0g
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoaW1wbGVtZW50YXRpb25zLT53ZWJU
aHJlYWRJZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJUaHJl
YWRXZWJWaWV3OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpmcm9tRGF0YVNvdXJjZTopLCBy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkp
LCBkYXRhU291cmNlKGxvYWRlcikpOwogICAgIH0gZWxzZQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICNlbmRpZgogCiAgICAgTlNV
UkxSZXF1ZXN0ICpuZXdVUkxSZXF1ZXN0ID0gY3VycmVudFVSTFJlcXVlc3Q7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGltcGxlbWVudGF0aW9u
cy0+d2ViVGhyZWFkV2lsbFNlbmRSZXF1ZXN0RnVuYykgewogICAgICAgICBuZXdVUkxSZXF1ZXN0
ID0gKE5TVVJMUmVxdWVzdCAqKUNhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2ViVGhyZWFkKGlt
cGxlbWVudGF0aW9ucy0+d2ViVGhyZWFkV2lsbFNlbmRSZXF1ZXN0RnVuYywgd2ViVmlldywgQHNl
bGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0
UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSwgW3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6
aWRlbnRpZmllcl0sIGN1cnJlbnRVUkxSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSwgZGF0YVNvdXJjZShsb2FkZXIpKTsKICAgICB9IGVsc2UKQEAgLTQxOCw3ICs0MTgs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIH0K
ICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TV2luZG93ICp3aW5kb3cgPSBbd2ViVmlldyBob3N0V2luZG93XSA/IFt3ZWJWaWV3IGhv
c3RXaW5kb3ddIDogW3dlYlZpZXcgd2luZG93XTsKICAgICBbW1dlYlBhbmVsQXV0aGVudGljYXRp
b25IYW5kbGVyIHNoYXJlZEhhbmRsZXJdIHN0YXJ0QXV0aGVudGljYXRpb246d2ViQ2hhbGxlbmdl
IHdpbmRvdzp3aW5kb3ddOwogI2VuZGlmCkBAIC00NDUsNyArNDQ1LDcgQEAgYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYQogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CkBAIC00NzgsNyArNDc4LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYlJlc291cmNlRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVz
b3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50YXRpb25z
LT53ZWJUaHJlYWREaWRSZWNlaXZlUmVzcG9uc2VGdW5jKSB7CiAgICAgICAgIGlmIChpZCByZXNv
dXJjZSA9IFt3ZWJWaWV3IF9vYmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXJdKQogICAgICAg
ICAgICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoaW1wbGVtZW50YXRpb25z
LT53ZWJUaHJlYWREaWRSZWNlaXZlUmVzcG9uc2VGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VGhyZWFkV2ViVmlldzpyZXNvdXJjZTpkaWRSZWNlaXZlUmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6
KSwgcmVzb3VyY2UsIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgZGF0YVNvdXJjZShsb2FkZXIp
KTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2Fj
aGVSZXNwCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQo
KSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVu
dGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZFdpbGxDYWNoZVJlc3BvbnNlRnVuYykg
ewogICAgICAgICBpZiAoaWQgcmVzb3VyY2UgPSBbd2ViVmlldyBfb2JqZWN0Rm9ySWRlbnRpZmll
cjppZGVudGlmaWVyXSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihDYWxs
UmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVh
ZFdpbGxDYWNoZVJlc3BvbnNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZp
ZXc6cmVzb3VyY2U6d2lsbENhY2hlUmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSwgcmVzb3VyY2Us
IHJlc3BvbnNlLCBkYXRhU291cmNlKGxvYWRlcikpKTsKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiB7CiAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNv
dXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT53
ZWJUaHJlYWREaWRSZWNlaXZlQ29udGVudExlbmd0aEZ1bmMpIHsKICAgICAgICAgaWYgKGlkIHJl
c291cmNlID0gW3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0pCiAgICAg
ICAgICAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlv
bnMtPndlYlRocmVhZERpZFJlY2VpdmVDb250ZW50TGVuZ3RoRnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3VyY2U6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGg6ZnJv
bURhdGFTb3VyY2U6KSwgcmVzb3VyY2UsIChOU0ludGVnZXIpZGF0YUxlbmd0aCwgZGF0YVNvdXJj
ZShsb2FkZXIpKTsKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUq
IGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVu
dGF0aW9ucyh3ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZERpZEZpbmlzaExvYWRp
bmdGcm9tRGF0YVNvdXJjZUZ1bmMpIHsKICAgICAgICAgaWYgKGlkIHJlc291cmNlID0gW3dlYlZp
ZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0pCiAgICAgICAgICAgICBDYWxsUmVz
b3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZERp
ZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJU
aHJlYWRXZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZTopLCBy
ZXNvdXJjZSwgZGF0YVNvdXJjZShsb2FkZXIpKTsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxv
YWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndlYlRo
cmVhZERpZEZhaWxMb2FkaW5nV2l0aEVycm9yRnJvbURhdGFTb3VyY2VGdW5jKSB7CiAgICAgICAg
IGlmIChpZCByZXNvdXJjZSA9IFt3ZWJWaWV3IF9vYmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZp
ZXJdKQogICAgICAgICAgICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoaW1w
bGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRGYWlsTG9hZGluZ1dpdGhFcnJvckZyb21EYXRhU291
cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3VyY2U6ZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3I6ZnJvbURhdGFTb3VyY2U6KSwgcmVzb3VyY2UsIChOU0Vycm9y
ICopZXJyb3IsIGRhdGFTb3VyY2UobG9hZGVyKSk7CkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAgIFdlYkZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1l
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lRnVuYykKICAgICAgICAg
Q2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW3dlYlZpZXcgX1VJ
S2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBkaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2VGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogfQpAQCAtNjYxLDcg
KzY2MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbEMKICAgICBX
ZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9
IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKICAg
ICBpZiAoaW1wbGVtZW50YXRpb25zLT53aWxsQ2xvc2VGcmFtZUZ1bmMpCiAgICAgICAgIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPndpbGxDbG9zZUZyYW1lRnVuYywgd2Vi
VmlldywgQHNlbGVjdG9yKHdlYlZpZXc6d2lsbENsb3NlRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQo
KSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3
ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgd2lsbENsb3Nl
RnJhbWU6bV93ZWJGcmFtZS5nZXQoKV07CiAjZW5kaWYKIH0KQEAgLTY3MiwxMSArNjcyLDExIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3QKICAgICBtX3dlYkZyYW1l
LT5fcHJpdmF0ZS0+cHJvdmlzaW9uYWxVUkwgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2Fk
ZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpOwogCiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3ZWJW
aWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogCkBAIC03MTAs
NyArNzEwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAg
IG1fd2ViRnJhbWUtPl9wcml2YXRlLT51cmwgPSBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+cHJvdmlz
aW9uYWxVUkw7CiAgICAgbV93ZWJGcmFtZS0+X3ByaXZhdGUtPnByb3Zpc2lvbmFsVVJMID0gbnVs
bHB0cjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZENv
bW1pdExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogICAgIApAQCAtNzI0
LDcgKzcyNCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmEKICAg
ICBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+cHJvdmlzaW9uYWxVUkwgPSBudWxscHRyOwogCiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjplcnJvciBmb3JGcmFtZTptX3dlYkZyYW1lLmdl
dCgpXTsKICNlbmRpZgogCkBAIC03NDAsMTQgKzc0MCwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgQVNTRVJUKCFtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+
cHJvdmlzaW9uYWxVUkwpOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBbd2ViVmlldyBfZGlkRmFpbExvYWRXaXRoRXJyb3I6ZXJyb3IgZm9yRnJhbWU6
bV93ZWJGcmFtZS5nZXQoKV07CiAjZW5kaWYKIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMt
PmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVGdW5jKQogICAgICAgICBDYWxsRnJhbWVMb2Fk
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lRnVu
Yywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmFpbExvYWRXaXRoRXJyb3I6Zm9yRnJh
bWU6KSwgKE5TRXJyb3IgKillcnJvciwgbV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3ZWJWaWV3IF9VSUtpdERlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgZGlkRmFpbExvYWRXaXRoRXJyb3I6KChOU0Vy
cm9yICopZXJyb3IpIGZvckZyYW1lOm1fd2ViRnJhbWUuZ2V0KCldOwogI2VuZGlmCiAKQEAgLTc1
OCw3ICs3NTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpCiB7
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZCB3ZWJU
aHJlYWREZWwgPSBbd2ViVmlldyBfd2ViTWFpbERlbGVnYXRlXTsKICAgICBpZiAoW3dlYlRocmVh
ZERlbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJ0aHJlYWRfd2ViVmlldzpkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTopXSkgewogICAgICAgICBbd2ViVGhyZWFkRGVsIF93
ZWJ0aHJlYWRfd2ViVmlldzp3ZWJWaWV3IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOm1f
d2ViRnJhbWUuZ2V0KCldOwpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBBU1NFUlQoIW1fd2ViRnJhbWUtPl9wcml2YXRlLT5w
cm92aXNpb25hbFVSTCk7CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dl
YkZyYW1lLmdldCgpKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFt3ZWJWaWV3IF9kaWRGaW5pc2hMb2FkRm9yRnJhbWU6bV93ZWJGcmFtZS5nZXQo
KV07CiAjZWxzZQogICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmll
dzp3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKQEAgLTc5
OCw3ICs3OTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAg
ICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
V2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMg
PSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1w
bGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRMYXlvdXRGdW5jKQogICAgICAgICBDYWxsRnJhbWVM
b2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZERpZExheW91
dEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJUaHJlYWRXZWJWaWV3OmRpZExheW91dDopLCBr
aXRMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKICNlbHNlCkBAIC04MTIsNyArODEyLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJhbWVGdW5jKQogICAgICAgICAgICAg
Q2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZy
YW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1l
OiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0g
d2ViVmlldzp3ZWJWaWV3IGRpZEZpcnN0TGF5b3V0SW5GcmFtZTptX3dlYkZyYW1lLmdldCgpXTsK
ICNlbmRpZgogIApAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmUKICAgICAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxW
aWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZpZXddOwog
ICAgICAgICBpZiAoW2dldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgZHJhd3NCYWNrZ3JvdW5k
XSkKICAgICAgICAgICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpZRVNdOwotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtzY3Jv
bGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRv
bWF0aWNdOwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwogI2VuZGlmCkBAIC04MzEsNyArODMxLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICAvLyBk
b3VibGUgZHV0eSB3aXRoIHRoZSBuZXcgZGlkTGF5b3V0IEFQSS4KICAgICAgICAgaWYgKGltcGxl
bWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMpCiAg
ICAgICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZTopLCBtX3dlYkZyYW1l
LmdldCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgaWYgKFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFtZS5nZXQoKSkKICAgICAg
ICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3
IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6bV93ZWJGcmFtZS5nZXQoKV07
CiAjZW5kaWYKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
dGFydERvd25sb2FkCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFNob3VsZCBkbyB0aGlzIG9ubHkgaW4g
bWFpbiBmcmFtZSBjYXNlLCByaWdodD8KICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgp
KSBfd2lsbENoYW5nZVZhbHVlRm9yS2V5Ol9XZWJNYWluRnJhbWVUaXRsZUtleV07CiAjZW5kaWYK
QEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hhbmdl
VGl0CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU2hvdWxkIGRvIHRoaXMgb25seSBpbiBtYWluIGZyYW1l
IGNhc2UsIHJpZ2h0PwogICAgIFtnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpIF9kaWRDaGFu
Z2VWYWx1ZUZvcktleTpfV2ViTWFpbkZyYW1lVGl0bGVLZXldOwogI2VuZGlmCkBAIC0xMDAzLDcg
KzEwMDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsCiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJh
bWVWaWV3ICp2aWV3ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+dmlldygpKQogICAgICAgICB2
aWV3LT5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwogI2VuZGlmCkBAIC0xMDMyLDcgKzEw
MzIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxICiB7CiAgICAg
V2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJMKCkpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZnJhbWVMb2FkQ29tcAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
Vmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIExldCBVSUtpdCBoYW5kbGUgdGhlIHNj
cm9sbCBwb2ludCBmb3IgdGhlIG1haW4gZnJhbWUuCiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0g
bV93ZWJGcmFtZS5nZXQoKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyh3ZWJG
cmFtZSk7ICAgCkBAIC0xMjU5LDcgKzEyNTksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpyZXN0b3JlVmlld1N0CiAgICAgaWYgKCFjdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gTGV0
IFVJS2l0IGhhbmRsZSB0aGUgc2Nyb2xsIHBvaW50IGZvciB0aGUgbWFpbiBmcmFtZS4KICAgICBX
ZWJGcmFtZSAqd2ViRnJhbWUgPSBtX3dlYkZyYW1lLmdldCgpOwogICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBnZXRXZWJWaWV3KHdlYkZyYW1lKTsgICAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG8KIAogICAgIFdlYkR5bmFtaWNTY3Jv
bGxCYXJzVmlldyAqc2Nyb2xsVmlldyA9IFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVW
aWV3IF9zY3JvbGxWaWV3XTsKICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6Tk9d
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3Nj
cm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eU5v
bmVdOwogICAgIFtzY3JvbGxWaWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Ny
b2xsRWxhc3RpY2l0eU5vbmVdOwogI2VuZGlmCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgd29yayB0aGF0IGlzIHRyaWdnZXJlZCBieSByZXNpZ25p
bmcgZmlyc3QgcmVwb25kZXIgY2FuIGdldCBkb25lLgogICAgIC8vIFRoZSBtYWluIGV4YW1wbGUg
d2hlcmUgdGhpcyBjYW1lIHVwIGlzIHRoZSB0ZXh0RGlkRW5kRWRpdGluZyB0aGF0IGlzIHNlbnQg
dG8gdGhlCiAgICAgLy8gRm9ybXNEZWxlZ2F0ZSAoMzIyMzQxMykuIFdlIG5lZWQgdG8gZG8gdGhp
cyBiZWZvcmUgX2RldGFjaENoaWxkcmVuLCBzaW5jZSB0aGF0IHdpbGwKQEAgLTEzNjQsNyArMTM2
NCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBuc1VSTCA9IFtuc1VSTCBfd2Via2l0X2Nh
bm9uaWNhbGl6ZV07CiAgICAgaWYoIW5zVVJMKQogICAgICAgICByZXR1cm47Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtbbnNVUkwgYWJzb2x1
dGVTdHJpbmddIGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2F2ZVBsYXRmb3JtRAogewogICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dl
YkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9wIGFsbCBwbHVn
aW5zLgogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkp
OwogICAgIFt3ZWJWaWV3IF9zdG9wQWxsUGx1Z0luc0ZvclBhZ2VDYWNoZV07CkBAIC0xMzkwLDcg
KzEzOTAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9DCiAgICAg
QVNTRVJUKGNhY2hlZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsKICAgICBbY2FjaGVkVmlldyBz
ZXREYXRhU291cmNlOmRhdGFTb3VyY2UoY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVyKCkpXTsK
ICAgICAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIGNsZWFuIHVwIHdlYmtpdCBwbHVnaW4gaW5zdGFuY2VzIGJlZm9yZSBXZWJIVE1MVmlldyBn
ZXRzIGZyZWVkLgogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUu
Z2V0KCkpOwogICAgIFt3ZWJWaWV3IHJlbW92ZVBsdWdpbkluc3RhbmNlVmlld3NGb3I6KG1fd2Vi
RnJhbWUuZ2V0KCkpXTsKQEAgLTEzOTksNyArMTM5OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnRyYW5zaXRpb25Ub0MKICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1l
VmlldyBfc2V0RG9jdW1lbnRWaWV3OmNhY2hlZFZpZXddOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpCiB7CiAgICAgLy8gV2hlbiBl
bnRlcmluZyB0aGUgUGFnZUNhY2hlIHRoZSBEb2N1bWVudCBpcyBkZXRhY2hlZCBhbmQgdGhlIHBs
dWdpbiB2aWV3IG1heQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQwogewogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBb
bV93ZWJGcmFtZS5nZXQoKSBfZGF0YVNvdXJjZV07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHdpbGxQcm9kdWNlSFRNTFZpZXc7CiAgICAg
Ly8gRmFzdCBwYXRoIHRoYXQgc2tpcHMgaW5pdGlhbGl6YXRpb24gb2Ygb2JqYyBjbGFzcyBvYmpl
Y3RzLgogICAgIGlmIChbZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5yZXNwb25zZU1JTUVU
eXBlKCkgPT0gInRleHQvaHRtbCIpCkBAIC0xNDMxLDcgKzE0MzEsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9DCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIERvbid0
IHN1cHByZXNzIHNjcm9sbGJhcnMgYmVmb3JlIHRoZSB2aWV3IGNyZWF0aW9uIGlmIHdlJ3JlIG1h
a2luZyB0aGUgdmlldyBmb3IgYSBub24tSFRNTCB2aWV3LgogICAgIGlmICghd2lsbFByb2R1Y2VI
VE1MVmlldykKICAgICAgICAgW1ttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9z
Y3JvbGxWaWV3XSBzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDpOTyByZXBhaW50T25VbnN1cHByZXNz
Ok5PXTsKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRy
YW5zaXRpb25Ub0MKICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfaW5z
dGFsbF07CiAKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgY29yZVZpZXctPnNldERlbGVnYXRlc1Njcm9s
bGluZyh0cnVlKTsKICNlbmRpZgogICAgICAgICBjb3JlVmlldy0+c2V0UGFyZW50VmlzaWJsZSh0
cnVlKTsKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZFNhdmVUb1BhZ2UKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21Q
YWdlQ2FjaGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwog
ICAgIGlmIChbd2ViVmlldyBtYWluRnJhbWVdID09IG1fd2ViRnJhbWUuZ2V0KCkpCiAgICAgICAg
IFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld0RpZFJlc3RvcmVGcm9t
UGFnZUNhY2hlOndlYlZpZXddOwpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgU3RyaW5nIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoYwogTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNs
aWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIEZv
cm1TdGF0ZSogZm9ybVN0YXRlKSBjb25zdAogewogICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3Mg
PSAwOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
YXV0byBrZXlTdGF0ZUV2ZW50RGF0YSA9IGFjdGlvbi5rZXlTdGF0ZUV2ZW50RGF0YSgpOwogICAg
IGlmIChrZXlTdGF0ZUV2ZW50RGF0YSAmJiBrZXlTdGF0ZUV2ZW50RGF0YS0+aXNUcnVzdGVkKSB7
CiAgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50RGF0YS0+Y3RybEtleSkKQEAgLTE3NzEsNyArMTc3
MSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXQUtWaWV3IChVSUtpdFNlY3JldHNXZWJLaXRL
bm93c0Fib3V0U2VlVUlXZWJQbHVnSW5WaWV3KQogLSAoUGxhdGZvcm1MYXllciAqKXBsdWdpbkxh
eWVyOwogLSAoQk9PTCl3aWxsUHJvdmlkZVBsdWdpbkxheWVyOwpAQCAtMTgxMiw3ICsxODEyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgW3BsYXRmb3JtV2lkZ2V0KCkgZGV0YWNoUGx1Z2luTGF5
ZXJdOwogICAgIH0KIH07Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIApAQCAt
MTkxMyw3ICsxOTEzLDcgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZQogICAgIGludCBlcnJvckNvZGUgPSAwOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpwbHVn
SW5WaWV3V2l0aEFyZ3VtZW50czopOwogI2VuZGlmCiAKQEAgLTE5MjYsMTEgKzE5MjYsMTEgQEAg
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZQogICAgIC8vIGVtYmVkcyBp
dHMgcGx1Zy1pbi4gVGhpcyBzaXRlLXNwZWNpZmljIGhhY2sgd29ya3MgYXJvdW5kIHRoZSBpc3N1
ZSBieQogICAgIC8vIGNvbnZlcnRpbmcgdGhlIHBhcmFtZXRlciBuYW1lcyB0byBsb3dlcmNhc2Ug
YmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUKICAgICAvLyBwbHVnLWluLgotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRnJhbWUqIGZyYW1lID0gY29y
ZShtX3dlYkZyYW1lLmdldCgpKTsKICNlbmRpZgogICAgIE5TTXV0YWJsZUFycmF5ICphdHRyaWJ1
dGVLZXlzID0ga2l0KHBhcmFtTmFtZXMpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5zZXR0aW5ncygpLm5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJhcHBsaWNhdGlvbi94LXNua3AiKSkgewogICAgICAgICBmb3IgKE5TVUludGVnZXIg
aSA9IDA7IGkgPCBbYXR0cmlidXRlS2V5cyBjb3VudF07ICsraSkKICAgICAgICAgICAgIFthdHRy
aWJ1dGVLZXlzIHJlcGxhY2VPYmplY3RBdEluZGV4Omkgd2l0aE9iamVjdDpbW2F0dHJpYnV0ZUtl
eXMgb2JqZWN0QXRJbmRleDppXSBsb3dlcmNhc2VTdHJpbmddXTsKQEAgLTE5NjksNyArMTk2OSw3
IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmUKICAgICAKICAgICBO
U1N0cmluZyAqZXh0ZW5zaW9uID0gW1twbHVnaW5VUkwgcGF0aF0gcGF0aEV4dGVuc2lvbl07CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIXBs
dWdpblBhY2thZ2UgJiYgW2V4dGVuc2lvbiBsZW5ndGhdKQogI2Vsc2UKICAgICBpZiAoIXBsdWdp
blBhY2thZ2UgJiYgW2V4dGVuc2lvbiBsZW5ndGhdICYmICFbTUlNRVR5cGUgbGVuZ3RoXSkKQEAg
LTIwMzUsNyArMjAzNSw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmUKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHZpZXcpOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luV2lk
Z2V0SU9TKHZpZXcpKTsKICNlbHNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5XaWRn
ZXQodmlldykpOwpAQCAtMjE5OCw3ICsyMTk4LDcgQEAgUmVmPEZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IFdlYkZyYW1lTG9hZAogICAgIHJldHVybiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpj
cmVhdGUoY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0IAogewogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpAQCAtMjMwMSw3ICsy
MzAxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaQogCiAgICAg
QVNTRVJUKCFtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCk7CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdlYktpdCAxLCB3aGljaCBvbmx5
IHN1cHBvcnRzIG9uZSBpY29uIHBlciBwYWdlIFVSTCwgdHJhZGl0aW9uYWxseSBoYXMgcHJlZmVy
cmVkIHRoZSBsYXN0IGljb24gaW4gY2FzZSBvZiBtdWx0aXBsZSBpY29ucyBsaXN0ZWQuCiAgICAg
Ly8gVG8gcHJlc2VydmUgdGhhdCBiZWhhdmlvciB3ZSB3YWxrIHRoZSBsaXN0IGJhY2t3YXJkcy4K
ICAgICBmb3IgKGF1dG8gaWNvbiA9IGljb25zLnJiZWdpbigpOyBpY29uICE9IGljb25zLnJlbmQo
KTsgKytpY29uKSB7CkBAIC0yMzIwLDcgKzIzMjAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpnZXRMb2FkRGVjaXNpCiAjZW5kaWYKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShJbWFn
ZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogewogICAgIEFTU0VSVChzaXplLndpZHRoKTsKQEAgLTIz
NDIsMTEgKzIzNDIsMTEgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdldE5TSW1hZ2UoSW1hZ2UqIGlt
YQogICAgIH0KICAgICByZXR1cm4gbnNJbWFnZTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBBU1NFUlQobV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwogICAgIEFT
U0VSVChjYWxsYmFja0lEID0gbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwogICAgIG1fYWN0
aXZlSWNvbkxvYWRDYWxsYmFja0lEID0gMDsKQEAgLTIzNzIsNyArMjM3Miw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGkKIAogKyAodm9pZClpbml0aWFsaXplCiB7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Q
cm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgp
OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAj
aW1wb3J0IDxwYWwvU2Vzc2lvbklELmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQ
SS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJG
cmFtZUxvYWREZWxlZ2F0ZS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGlu
ZygpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5Tb3VyY2UuCiAgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAjZWxzZQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAKICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9j
YXRpb24uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FL
UmVzcG9uZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViQ29yZVRocmVhZFJ1bi5oPgog
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4KIHsKICAg
ICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKQEAgLTYyLDcgKzYyLDcgQEAgLSAo
aWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKQogQGVuZAogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2Vi
R2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXIgOiBOU09iamVjdCA8V2Vi
R2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXI+IHsKIEBwcml2YXRlCiAg
ICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwpAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoCiAgICAgW1ttX3dlYlZpZXcg
X2dlb2xvY2F0aW9uUHJvdmlkZXJdIHVucmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIHdhbnRzSGlnaEFjY3Vy
YWN5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTExMCw3ICsxMTAs
NyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAKICAgICBpZiAo
IWZyYW1lKSB7CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uPiBXZWJHZQogICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblBy
b3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lcgogCiAtIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2VvbG9j
YXRpb24KQEAgLTIzNiw2ICsyMzYsNiBAQCAtICh2b2lkKWluaXRpYWxpemF0aW9uRGVuaWVkV2Vi
VmlldzooV2ViCiAgICAgbV9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKIH0KIEBl
bmQKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVy
cmlkZTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CiAKQEAg
LTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzLCBib29sIGJhc2U2NEVu
Y29kZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJWaWV3ICptX2luc3BlY3RlZFdlYlZpZXc7CiAg
ICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IG1fZnJvbnRlbmRXaW5k
b3dDb250cm9sbGVyOwogICAgIFN0cmluZyBtX2luc3BlY3RlZFVSTDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJKYXZhU2NyaXB0VGV4dElucHV0
UGFuZWwubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLmgiCiAKQEAgLTc0LDQgKzc0LDQgQEAg
LSAoSUJBY3Rpb24pcHJlc3NlZE9LOihpZClzZW5kZXIKIAogQGVuZAogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBAIC0gKHZvaWQpZGVueQogICAgICAgICBfY2Fs
bGJhY2stPmhhbmRsZUV2ZW50KE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVk
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAo
dm9pZClkZW55T25seVRoaXNSZXF1ZXN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2Vi
Q29yZS9JY29uLmg+CiAjZW5kaWYKIApAQCAtNzIsNyArNzIsNyBAQCAtICh2b2lkKWNob29zZUZp
bGVuYW1lczooTlNBcnJheSAqKWZpbGVuCiAgICAgX2Nob29zZXIgPSBudWxscHRyOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpY2hv
b3NlRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgZGlzcGxheVN0cmluZzooTlNTdHJpbmcg
KilkaXNwbGF5U3RyaW5nIGljb25JbWFnZTooQ0dJbWFnZVJlZilpbWFnZVJlZgogewpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0
ZWJvYXJkU3RyYXRlZ3kKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcg
KzE5OCw3IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbUQKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlcywgaW5kZXgpOwpAQCAtMjU4LDQgKzI1OCw0
IEBAIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVMKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGluZGV4KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcHJvZ3Jlc3NUcmFja2VyRGVzdHJv
eWVkKCkgb3ZlcnJpZGU7CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAj
aW1wb3J0ICJXZWJGcmFtZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKIApAQCAtNDQsNyArNDQsNyBA
QCB2b2lkIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NUCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
dm9pZCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cygpCiB7CiAgICAgW21fd2ViVmlldyBfd2lsbENoYW5nZVZhbHVlRm9yS2V5Ol9XZWJFc3RpbWF0
ZWRQcm9ncmVzc0tleV07CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50OjpkaWRDaGFuZ2UKIAogdm9pZCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OnByb2dy
ZXNzU3RhcnRlZChXZWJDb3JlOjpGcmFtZSYgb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJW
aWV3UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uIG9iamVjdDptX3dlYlZpZXddOwogI2Vsc2UK
ICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc1N0YXJ0ZWROb3Rp
ZmljYXRpb24sIG1fd2ViVmlldywgbmlsKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJQcm9n
cmVzc1RyYWNrZXJDbGllbnQ6OnByb2dyZXNzUwogCiB2b2lkIFdlYlByb2dyZXNzVHJhY2tlckNs
aWVudDo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJWaWV3UHJv
Z3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om1fd2ViVmlld107CiAjZWxz
ZQogICAgIE5TTnVtYmVyICpwcm9ncmVzcyA9IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W21f
d2ViVmlldyBlc3RpbWF0ZWRQcm9ncmVzc11dOwpAQCAtODcsNyArODcsNyBAQCB2b2lkIFdlYlBy
b2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFCiAKIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50Ojpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVmlld1Byb2dyZXNzRmluaXNoZWRO
b3RpZmljYXRpb24gb2JqZWN0Om1fd2ViVmlld107CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzQsNyArNzQsNyBAQCAtIChOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkuZGF0
YWJhc2VJZGVudGlmaWVyKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIC0gKE5TU3RyaW5nICopdG9TdHJpbmcKIHsKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+dG9TdHJpbmcoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5v
ZGVIaWdobGlnaHQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTQgKzI2LDE0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dBS0FwcEtpdFN0dWJzLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdh
Y3kvV0FLVmlldy5oPgogI2VuZGlmCiAKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0VmlldzsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBXZWJWaWV3
OwogI2VuZGlmCiAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2ViSGlnaGxpZ2h0TGF5ZXIgOiBDQUxheWVy
IHsKICAgICBXZWJOb2RlSGlnaGxpZ2h0VmlldyAqX3ZpZXc7CiAgICAgV2ViVmlldyAqX3dlYlZp
ZXc7CkBAIC01Miw3ICs1Miw3IEBAIEBpbnRlcmZhY2UgV2ViSGlnaGxpZ2h0TGF5ZXIgOiBDQUxh
eWVyIHsKIAogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0IDogTlNPYmplY3QgewogICAgIE5T
VmlldyAqX3RhcmdldFZpZXc7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBOU1dpbmRvdyAqX2hpZ2hsaWdodFdpbmRvdzsKICNlbHNlCiAgICAgV2Vi
SGlnaGxpZ2h0TGF5ZXIgKl9oaWdobGlnaHRMYXllcjsKQEAgLTc0LDcgKzc0LDcgQEAgQGludGVy
ZmFjZSBXZWJOb2RlSGlnaGxpZ2h0IDogTlNPYmplY3QgewogCiAtIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyKilpbnNwZWN0b3JDb250cm9sbGVyOwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2V0TmVlZHNVcGRhdGVJblRhcmdl
dFZpZXdSZWN0OihOU1JlY3QpcmVjdDsKICNlbHNlCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rv
ci9XZWJOb2RlSGlnaGxpZ2h0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVy
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJGcmFtZVByaXZhdGUuaCIKICNpbXBv
cnQgIldlYkhUTUxWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3LmgiCkBAIC00MywxNCArNDMsMTQg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0IChGaWxl
SW50ZXJuYWwpCiAtIChOU1JlY3QpX2NvbXB1dGVIaWdobGlnaHRXaW5kb3dGcmFtZTsKIC0gKHZv
aWQpX3JlcG9zaXRpb25IaWdobGlnaHRXaW5kb3c7CiBAZW5kCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9uIFdlYkhp
Z2hsaWdodExheWVyCiAKIC0gKGlkKWluaXRXaXRoSGlnaGxpZ2h0VmlldzooV2ViTm9kZUhpZ2hs
aWdodFZpZXcgKil2aWV3IHdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3CkBAIC05MCw3ICs5MCw3
IEBAIC0gKGlkKWluaXRXaXRoVGFyZ2V0VmlldzooTlNWaWV3ICopdGFyZ2UKICAgICBfdGFyZ2V0
VmlldyA9IFt0YXJnZXRWaWV3IHJldGFpbl07CiAgICAgX2luc3BlY3RvckNvbnRyb2xsZXIgPSBp
bnNwZWN0b3JDb250cm9sbGVyOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpbnQgc3R5bGVNYXNrID0gTlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJs
ZXNzOwogICAgIE5TUmVjdCBjb250ZW50UmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVjdEZvckZy
YW1lUmVjdDpbc2VsZiBfY29tcHV0ZUhpZ2hsaWdodFdpbmRvd0ZyYW1lXSBzdHlsZU1hc2s6c3R5
bGVNYXNrXTsKICAgICBfaGlnaGxpZ2h0V2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CkBAIC0xMTcsNyArMTE3LDcgQEAgLSAoaWQp
aW5pdFdpdGhUYXJnZXRWaWV3OihOU1ZpZXcgKil0YXJnZQogCiAtICh2b2lkKWRlYWxsb2MKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VS
VCghX2hpZ2hsaWdodFdpbmRvdyk7CiAjZWxzZQogICAgIEFTU0VSVCghX2hpZ2hsaWdodExheWVy
KTsKQEAgLTEzMyw3ICsxMzMsNyBAQCAtICh2b2lkKWF0dGFjaAogICAgIEFTU0VSVChfdGFyZ2V0
Vmlldyk7CiAgICAgQVNTRVJUKFtfdGFyZ2V0VmlldyB3aW5kb3ddKTsKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKF9oaWdobGlnaHRX
aW5kb3cpOwogCiAgICAgaWYgKCFfaGlnaGxpZ2h0V2luZG93IHx8ICFfdGFyZ2V0VmlldyB8fCAh
W190YXJnZXRWaWV3IHdpbmRvd10pCkBAIC0xNjksNyArMTY5LDcgQEAgLSAoaWQpZGVsZWdhdGUK
IAogLSAodm9pZClkZXRhY2gKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmICghX2hpZ2hsaWdodFdpbmRvdykgewogI2Vsc2UKICAgICBpZiAo
IV9oaWdobGlnaHRMYXllcikgewpAQCAtMTgxLDcgKzE4MSw3IEBAIC0gKHZvaWQpZGV0YWNoCiAg
ICAgaWYgKF9kZWxlZ2F0ZSAmJiBbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2lsbERldGFjaFdlYk5vZGVIaWdobGlnaHQ6KV0pCiAgICAgICAgIFtfZGVsZWdhdGUgd2ls
bERldGFjaFdlYk5vZGVIaWdobGlnaHQ6c2VsZl07CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpub3RpZmlj
YXRpb25DZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CiAgICAg
W25vdGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNWaWV3RnJhbWVE
aWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW25vdGlmaWNhdGlvbkNlbnRl
ciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNWaWV3Qm91bmRzRGlkQ2hhbmdlTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOwpAQCAtMjAzLDcgKzIwMyw3IEBAIC0gKHZvaWQpZGV0YWNoCiAgICAg
Ly8gV2UgZGlkbid0IHJldGFpbiBfaGlnaGxpZ2h0VmlldywgYnV0IHdlIGRvIG5lZWQgdG8gdGVs
bCBpdCB0byBmb3JnZXQgYWJvdXQgdXMsIHNvIGl0IGRvZXNuJ3QKICAgICAvLyB0cnkgdG8gc2Vu
ZCBvdXIgZGVsZWdhdGUgbWVzc2FnZXMgYWZ0ZXIgd2UndmUgYmVlbiBkZWFsbG9jJ2VkLCBlLmcu
CiAgICAgW19oaWdobGlnaHRWaWV3IGRldGFjaEZyb21XZWJOb2RlSGlnaGxpZ2h0XTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBpT1MgZGlkIHJl
dGFpbiB0aGUgaGlnaGxpZ2h0VmlldywgYW5kIHdlIHNob3VsZCByZWxlYXNlIGl0IGhlcmUuCiAg
ICAgW19oaWdobGlnaHRWaWV3IHJlbGVhc2VdOwogI2VuZGlmCkBAIC0yMjEsNyArMjIxLDcgQEAg
LSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKXNldE5lZWRzVXBkYXRlSW5UYXJnZXRWaWV3UmVjdDooTlNSZWN0KXJlY3QKIHsKICAg
ICBBU1NFUlQoX3RhcmdldFZpZXcpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIC0gKEluc3BlY3RvckNv
bnRyb2xsZXIqKWluc3BlY3RvckNvbnRyb2wKIAogQGVuZAogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBXZWJOb2RlSGlnaGxp
Z2h0IChGaWxlSW50ZXJuYWwpCiAKIC0gKE5TUmVjdClfY29tcHV0ZUhpZ2hsaWdodFdpbmRvd0Zy
YW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhp
Z2hsaWdodFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJ
bnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQVNoYXBlTGF5ZXIuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XQUtBcHBLaXRTdHVi
cy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dBS1ZpZXcuaD4KQEAgLTM2LDcgKzM2LDcgQEAK
IAogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0VmlldyA6IE5TVmlldyB7CiAgICAgV2ViTm9k
ZUhpZ2hsaWdodCAqX3dlYk5vZGVIaWdobGlnaHQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNNdXRhYmxlQXJyYXkgKl9sYXllcnM7IC8vIENBU2hh
cGVMYXllcnMuCiAjZW5kaWYKIH0KQEAgLTQ1LDcgKzQ1LDcgQEAgQGludGVyZmFjZSBXZWJOb2Rl
SGlnaGxpZ2h0VmlldyA6IE5TVmlldwogLSAoV2ViTm9kZUhpZ2hsaWdodCAqKXdlYk5vZGVIaWdo
bGlnaHQ7CiAtICh2b2lkKWRldGFjaEZyb21XZWJOb2RlSGlnaGxpZ2h0OwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWxheW91dFN1YmxheWVy
czooQ0FMYXllciAqKXBhcmVudExheWVyOwogI2VuZGlmCiBAZW5kCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdo
bGlnaHRWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlV
dGlsaXRpZXMuaD4KQEAgLTQ1LDcgKzQ1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJOb2RlSGlnaGxpZ2h0VmlldwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9yZW1vdmVBbGxMYXllcnMKIHsK
ICAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycykKQEAgLTYyLDcgKzYyLDcg
QEAgLSAoaWQpaW5pdFdpdGhXZWJOb2RlSGlnaGxpZ2h0OihXZWJOb2RlSAogCiAgICAgX3dlYk5v
ZGVIaWdobGlnaHQgPSBbd2ViTm9kZUhpZ2hsaWdodCByZXRhaW5dOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX2xheWVycyA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdOwogI2VuZGlmCiAKQEAgLTcyLDcgKzcyLDcgQEAgLSAoaWQpaW5p
dFdpdGhXZWJOb2RlSGlnaGxpZ2h0OihXZWJOb2RlSAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAg
W3NlbGYgZGV0YWNoRnJvbVdlYk5vZGVIaWdobGlnaHRdOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtzZWxmIF9yZW1vdmVBbGxMYXllcnNdOwogICAg
IFtfbGF5ZXJzIHJlbGVhc2VdOwogI2VuZGlmCkBAIC05MCw3ICs5MCw3IEBAIC0gKEJPT0wpaXNG
bGlwcGVkCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdCAKIHsKICAg
ICBpZiAoX3dlYk5vZGVIaWdobGlnaHQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRlci5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dl
Yk5vZGVIaWdobGlnaHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCAtICh2
b2lkKWRlYWxsb2MKIAogLSAodm9pZCloaWdobGlnaHQKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBzY3JvbGx2aWV3J3MgY29udGVu
dCB2aWV3IHN0YXlzIGFyb3VuZCBiZXR3ZWVuIHBhZ2UgbmF2aWdhdGlvbnMsIHNvIHRhcmdldCBp
dC4KICAgICBOU1ZpZXcgKnZpZXcgPSBbW1tbW19pbnNwZWN0ZWRXZWJWaWV3IG1haW5GcmFtZV0g
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGVuY2xvc2luZ1Njcm9sbFZpZXddIGNvbnRlbnRWaWV3
XTsKICNlbHNlCkBAIC03Miw3ICs3Miw3IEBAIC0gKHZvaWQpaGlnaGxpZ2h0CiAgICAgICAgIFtf
Y3VycmVudEhpZ2hsaWdodCBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW19jdXJyZW50SGln
aGxpZ2h0IGF0dGFjaF07CiAgICAgfSBlbHNlIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbW19jdXJyZW50SGlnaGxpZ2h0IGhpZ2hsaWdo
dFZpZXddIHNldE5lZWRzRGlzcGxheTpZRVNdOwogI2Vsc2UKICAgICAgICAgW19jdXJyZW50SGln
aGxpZ2h0IHNldE5lZWRzRGlzcGxheV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkFyY2hpdmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAgLSAodm9pZClzZXRDb3JlQXJjaGl2ZTooUmVmPExlZ2FjeVdlYkFyYwogCiAr
ICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkNsaXBWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJDbGlwVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkNsaXBWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJQREZWaWV3SU9TLmgi
CiAjZW5kaWYKIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbG9hZGVyKFdU
Rk1vdmUobG9hZGVyKSkKICAgICAgICAgLCByZXByZXNlbnRhdGlvbkZpbmlzaGVkTG9hZGluZyhO
TykKICAgICAgICAgLCBpbmNsdWRlZEluV2ViS2l0U3RhdGlzdGljcyhOTykKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLCBfZGF0YVNvdXJjZURl
bGVnYXRlKG5pbCkKICNlbmRpZgogICAgIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgUmV0YWluUHRyPGlkPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+ID4gcmVwcmVzZW50YXRp
b247CiAgICAgQk9PTCByZXByZXNlbnRhdGlvbkZpbmlzaGVkTG9hZGluZzsKICAgICBCT09MIGlu
Y2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIE5TT2JqZWN0PFdlYkRhdGFTb3VyY2VQcml2YXRlRGVsZWdhdGU+
ICpfZGF0YVNvdXJjZURlbGVnYXRlOwogI2VuZGlmCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0x
NTEsNyArMTUxLDcgQEAgKyAoQ2xhc3MpX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1FVHlwZQog
KyAodm9pZClpbml0aWFsaXplCiB7CiAgICAgaWYgKHNlbGYgPT0gW1dlYkRhdGFTb3VyY2UgY2xh
c3NdKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIC0gKHZvaWQpX2FkZFN1YmZy
YW1lQXJjaGl2ZXM6KE5TQXJyYXkgKikKICAgICAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9h
ZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29yZUxlZ2FjeVdlYkFyY2hp
dmVdKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIC0gKE5TRmlsZVdyYXBwZXIgKilfZmlsZVdyYXBwZXJGb3JVUkw6KE5TVVJMICopVVJMCiB7
CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZDooQgogICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZChmbGFnKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nCiB7CiAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CkBAIC0yMjIsNyArMjIyLDcgQEAg
LSAoTlNPYmplY3Q8V2ViRGF0YVNvdXJjZVByaXZhdGVEZWxlZ2F0ZQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
IChOU0RpY3Rpb25hcnkgKilfcXVpY2tMb29rQ29udGVudAogewogI2lmIFVTRShRVUlDS19MT09L
KQpAQCAtMjc4LDExICsyNzgsMTEgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBl
c0FsbG93SQogICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBk
b24ndCBib3RoIHJlZ2lzdGVyaW5nIGl0LgogICAgICAgICBCT09MIG9taXRQREZTdXBwb3J0ID0g
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktp
dE9taXRQREZTdXBwb3J0Il07CiAgICAgICAgIGlmICghb21pdFBERlN1cHBvcnQpCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIFdlYlBERlJlcHJl
c2VudGF0aW9uIChbV2ViVmlldyBfZ2V0UERGUmVwcmVzZW50YXRpb25DbGFzc10pCiAjZW5kaWYK
ICAgICAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLCBbV2ViUERGUmVwcmVzZW50
YXRpb24gY2xhc3NdLCBbV2ViUERGUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVzXSk7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjdW5kZWYgV2Vi
UERGUmVwcmVzZW50YXRpb24KICNlbmRpZgogICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCAtICh2
b2lkKV9tYWtlUmVwcmVzZW50YXRpb24KIHsKICAgICBDbGFzcyByZXBDbGFzcyA9IFtbc2VsZiBj
bGFzc10gX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1FVHlwZTpbc2VsZiBfcmVzcG9uc2VNSU1F
VHlwZV0gYWxsb3dpbmdQbHVnaW5zOltbW3NlbGYgX3dlYlZpZXddIHByZWZlcmVuY2VzXSBhcmVQ
bHVnSW5zRW5hYmxlZF1dOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKFtyZXBDbGFzcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9y
ZXByZXNlbnRhdGlvbkNsYXNzRm9yV2ViRnJhbWU6KV0pCiAgICAgICAgIHJlcENsYXNzID0gW3Jl
cENsYXNzIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JX
ZWJGcmFtZTopIHdpdGhPYmplY3Q6W3NlbGYgd2ViRnJhbWVdXTsKICNlbmRpZgpAQCAtMzkwLDcg
KzM5MCw3IEBAIC0gKHZvaWQpX21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAgaWQ8V2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbj4gcmVwcmVzZW50YXRpb24gPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5y
ZXByZXNlbnRhdGlvbi5nZXQoKTsKICAgICBbcmVwcmVzZW50YXRpb24gc2V0RGF0YVNvdXJjZTpz
ZWxmXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldFJlc3BvbnNlTUlNRVR5cGUoW3NlbGYgX3Jl
c3BvbnNlTUlNRVR5cGVdKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRh
dGlvbkNhY2hpbmcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dBS0FwcEtpdFN0dWJz
Lmg+CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgV2ViUmVzb3VyY2VEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uCiAgICAgSU1QIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VGdW5jOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBJTVAgY29ubmVjdGlvblByb3BlcnRpZXNGdW5jOwogICAgIElNUCB3ZWJU
aHJlYWREaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2VGdW5jOwogICAgIElNUCB3ZWJUaHJl
YWREaWRGYWlsTG9hZGluZ1dpdGhFcnJvckZyb21EYXRhU291cmNlRnVuYzsKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvCiAgICAgSU1Q
IGRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZERldGVjdFhTU0Z1bmM7CiAg
ICAgSU1QIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUZ1bmM7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSU1QIHdlYlRocmVhZERpZExheW91dEZ1
bmM7CiAjZW5kaWYKIH07CkBAIC0xNDUsNyArMTQ1LDcgQEAgQk9PTCBDYWxsVUlEZWxlZ2F0ZVJl
dHVybmluZ0Jvb2xlYW4oQk9PTAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4o
Qk9PTCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCk7CiBCT09MIENhbGxVSURlbGVnYXRlUmV0dXJu
aW5nQm9vbGVhbihCT09MLCBXZWJWaWV3ICosIFNFTCwgaWQsIEJPT0wpOwogQk9PTCBDYWxsVUlE
ZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgV2ViVmlldyAqLCBTRUwsIGlkLCBCT09MLCBp
ZCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBCT09MIENh
bGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlk
LCBCT09MKTsKICNlbmRpZgogCkBAIC0xNTYsNyArMTU2LDcgQEAgaWQgQ2FsbEZyYW1lTG9hZERl
bGVnYXRlKElNUCwgV2ViVmlldyAqLAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCwgV2Vi
VmlldyAqLCBTRUwsIGlkLCBpZCwgaWQpOwogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCwg
V2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgaWQsIGlkKTsKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgTlNUaW1lSW50ZXJ2YWwsIGlkLCBpZCk7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBpZCBDYWxsRnJhbWVMb2Fk
RGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGRvdWJsZSk7CiBpZCBDYWxsRnJhbWVM
b2FkRGVsZWdhdGVJbldlYlRocmVhZChJTVAsIFdlYlZpZXcgKiwgU0VMLCBOU1VJbnRlZ2VyKTsK
ICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJ
TVAsIFdlYlZpZXcKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwg
U0VMLCBpZCwgaWQsIGlkLCBpZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBX
ZWJWaWV3ICosIFNFTCwgaWQsIE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNlTG9hZERl
bGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBpZCBDYWxsUmVzb3VyY2VM
b2FkRGVsZWdhdGVJbldlYlRocmVhZChJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQpOwogaWQg
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoSU1QLCBXZWJWaWV3ICosIFNFTCwg
aWQsIGlkLCBpZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChJTVAs
IFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkLCBpZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hpbmcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQgIldlYlZpZXdEYXRhLmgiCiAj
aW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKQEAgLTc4LDcgKzc4
LDcgQEAgV2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogVwogLy8gcHJldmVu
dGluZyBtb3JlIE9iakMgbWVzc2FnZSBkaXNwYXRjaCBhbmQgY29tcGVuc2F0aW5nIGZvciB0aGUg
ZXhwZW5zZSBvZiB0aGUgQHRyeS9AY2F0Y2guCiAKIHR5cGVkZWYgZmxvYXQgKCpPYmpDTXNnU2Vu
ZEZQUmV0KShpZCwgU0VMLCAuLi4pOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgZGVmaW5lZChfX2kzODZfXykKIHN0YXRpYyBjb25zdCBPYmpDTXNn
U2VuZEZQUmV0IG9iamNfbXNnU2VuZF9mbG9hdF9yZXR1cm4gPSByZWludGVycHJldF9jYXN0PE9i
akNNc2dTZW5kRlBSZXQ+KG9iamNfbXNnU2VuZF9mcHJldCk7CiAjZWxzZQpAQCAtODgsNyArODgs
NyBAQCBzdGF0aWMgY29uc3QgT2JqQ01zZ1NlbmRGUFJldCBvYmpjX21zZ1NlCiAKIHN0YXRpYyBp
bmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2Vs
ZWN0b3IpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVj
dG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKQEAgLTEyMSw3ICsxMjEsNyBA
QCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzCiAKIHN0YXRpYyBpbmxp
bmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAtMTU1LDcg
KzE1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnMKIAogc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNF
TCBzZWxlY3RvciwgTlNSZWN0IHJlY3QpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
QEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3
ICpzCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRl
IHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBAdHJ5IHsKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRl
KFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCwgQk9P
TCBib29sZWFuKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rvcjpz
ZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC0yNTksNyArMjU5
LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqcwogCiBzdGF0aWMg
aW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNl
bGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8
fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgQHRyeSB7CkBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIGlubGluZSBpZCBD
YWxsRGVsZWdhdGUoV2ViVmlldyAqcwogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShX
ZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QsIE5TVUlu
dGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAtMzMwLDcg
KzMzMCw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnMKIAogc3Rh
dGljIGlubGluZSBmbG9hdCBDYWxsRGVsZWdhdGVSZXR1cm5pbmdGbG9hdChXZWJWaWV3ICpzZWxm
LCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiAwLjBmOwogICAgIEB0
cnkgewpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgQ2FsbERlbGVnYXRl
UmV0dXJuaW4KIAogc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xl
YW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3Ip
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBAdHJ5IHsKQEAgLTM5MCw3ICszOTAsNyBAQCBz
dGF0aWMgaW5saW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nCiAKIHN0YXRpYyBpbmxpbmUg
Qk9PTCBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpz
ZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QpCiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlIHx8
ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICBAdHJ5IHsKQEAgLTQyMSw3ICs0MjEsNyBAQCBzdGF0aWMgaW5saW5lIEJP
T0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nCiAKIHN0YXRpYyBpbmxpbmUgQk9PTCBDYWxsRGVsZWdh
dGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0
ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QsIEJPT0wgYm9vbGVhbikKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUgfHwg
IVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIEB0cnkgewpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyBpbmxpbmUgQk9P
TCBDYWxsRGVsZWdhdGVSZXR1cm5pbmcKIAogc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxlZ2F0
ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRl
LCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICBAdHJ5IHsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgaW5saW5lIEJPT0wg
Q2FsbERlbGVnYXRlUmV0dXJuaW5nCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxlZ2F0ZVJl
dHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBT
RUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIEJPT0wgYm9vbGVhbikKIHsKICAg
ICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9y
XSkKQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgaW5saW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0
dXJuaW5nCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlv
biwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvcikKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC01NTQsNyArNTU0LDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVn
YXRlLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC01ODgsNyArNTg4LDcgQEAgc3RhdGljIGlu
bGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxE
ZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBT
RUwgc2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVs
ZWdhdGUoSU1QIGltcGxlbQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlSW5XZWJUaHJl
YWQoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNl
bGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyKQogewogICAgIGlmICghZGVsZWdhdGUpCkBA
IC02NjksMTEgKzY2OSwxMSBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZUluV2ViVGhy
ZWFkCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0
ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2Vs
ZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIEB0cnkgewpAQCAtNzA2LDcgKzcwNiw3IEBAIHN0YXRpYyBpbmxpbmUgaWQg
Q2FsbERlbGVnYXRlKElNUCBpbXBsZW0KICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJ
TVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdCwgZG91YmxlIGRvdWJsZTEpCiB7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKQEAg
LTczNCw3ICs3MzQsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVt
CiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2Vi
VmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2Jq
ZWN0MiwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
QHRyeSB7CkBAIC03NzAsNyArNzcwLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUo
SU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50
YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMsIGlkIG9iamVjdDQpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAtODA3LDcgKzgwNyw3IEBAIHN0YXRpYyBp
bmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW0KIAogc3RhdGljIGlubGluZSBpZCBDYWxs
RGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwg
U0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVnZXIgaW50ZWdlciwgaWQgb2JqZWN0MikK
IHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC04NDEsNyAr
ODQxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogI2VuZGlm
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpz
ZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVnZXIgaW50
ZWdlcjEsIGludCBpbnRlZ2VyMiwgaWQgb2JqZWN0MikKICNlbHNlCiBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZUluV2ViVGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2Vs
ZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2VyIGludGVn
ZXIxLCBpbnQgaW50ZWdlcjIsIGlkIG9iamVjdDIpCkBAIC04NzEsNyArODcxLDcgQEAgc3RhdGlj
IGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlkIENh
bGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRl
LCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIE5TSW50ZWdlciBpbnRlZ2Vy
LCBpZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5
IHsKQEAgLTkwNiw3ICs5MDYsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAg
aW1wbGVtCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChJTVAgaW1w
bGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdDEsIE5TSW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyKQogewogICAgIGlmICghZGVs
ZWdhdGUpCkBAIC05MzEsNyArOTMxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJ
bldlYlRocmVhZAogfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVu
dGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmpl
Y3QxLCBOU0ludGVnZXIgaW50ZWdlcjEsIGlkIG9iamVjdDIsIE5TSW50ZWdlciBpbnRlZ2VyMiwg
aWQgb2JqZWN0MykKICNlbHNlCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZUluV2ViVGhy
ZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBz
ZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2VyIGludGVnZXIxLCBpZCBvYmplY3QyLCBOU0lu
dGVnZXIgaW50ZWdlcjIsIGlkIG9iamVjdDMpCkBAIC05NDcsNyArOTQ3LDcgQEAgc3RhdGljIGlu
bGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZAogICAgIHJldHVybiBuaWw7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGlubGlu
ZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBk
ZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVnZXIgaW50ZWdlciwgaWQg
b2JqZWN0MiwgaWQgb2JqZWN0MywgaWQgb2JqZWN0NCkKICNlbHNlCiBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZUluV2ViVGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2Vs
ZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2VyIGludGVn
ZXIsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMsIGlkIG9iamVjdDQpCkBAIC05NjUsNyArOTY1LDcg
QEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZAogCiBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlk
IGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5TVGltZUludGVydmFsIGludGVy
dmFsLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBAdHJ5IHsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHN0YXRpYyBpbmxpbmUgaWQg
Q2FsbERlbGVnYXRlKElNUCBpbXBsZW0KIAogaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2Vs
ZiwgU0VMIHNlbGVjdG9yKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+
VUlEZWxlZ2F0ZSwgc2VsZWN0b3IpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKHNl
bGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxlY3Rvcik7CkBA
IC0xMDExLDcgKzEwMTEsNyBAQCBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwg
c2VsCiAKIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+VUlEZWxlZ2F0
ZSwgc2VsZWN0b3IsIG9iamVjdCk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2Vs
ZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmpl
Y3QpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2Vs
ZiwgU0VMIHNlbAogCiBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdCwgQk9PTCBib29sZWFuKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxm
LT5fcHJpdmF0ZS0+VUlEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdCwgYm9vbGVhbik7CiAjZWxz
ZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxl
Y3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QsIGJvb2xlYW4pOwpAQCAtMTAyOSw3ICsx
MDI5LDcgQEAgaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbAogCiBpZCBD
YWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TUmVjdCByZWN0KQog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0
dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+VUlEZWxlZ2F0ZSwgc2VsZWN0
b3IsIHJlY3QpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKHNlbGYsIFtzZWxmIF9V
SURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxlY3RvciwgcmVjdCk7CkBAIC0xMDM4
LDcgKzEwMzgsNyBAQCBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsCiAK
IGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0
MSwgaWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJ
RGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKICNlbHNlCiAgICAgcmV0dXJu
IENhbGxEZWxlZ2F0ZShzZWxmLCBbc2VsZiBfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNlbGVjdG9y
XSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgaWQg
Q2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbAogCiBpZCBDYWxsVUlEZWxlZ2F0
ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIGlk
IG9iamVjdDMpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKHNlbGYsIHNlbGYtPl9wcml2YXRlLT5VSURlbGVn
YXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CiAjZWxzZQogICAgIHJl
dHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3RvcjpzZWxl
Y3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKQEAgLTEwNTYsNyAr
MTA1Niw3IEBAIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWwKIAogaWQg
Q2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QsIE5T
VUludGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgc2VsZi0+X3ByaXZhdGUt
PlVJRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QsIGludGVnZXIpOwogI2Vsc2UKICAgICByZXR1
cm4gQ2FsbERlbGVnYXRlKHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0
b3JdLCBzZWxlY3Rvciwgb2JqZWN0LCBpbnRlZ2VyKTsKQEAgLTEwNjUsNyArMTA2NSw3IEBAIGlk
IENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWwKIAogZmxvYXQgQ2FsbFVJRGVs
ZWdhdGVSZXR1cm5pbmdGbG9hdChXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2Fs
bERlbGVnYXRlUmV0dXJuaW5nRmxvYXQoc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGUs
IHNlbGVjdG9yKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Zsb2F0
KHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxlY3Rvcik7
CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBmbG9hdCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Zsb2F0
KFdlYlZpCiAKIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0
LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlUmV0dXJuaW5n
Qm9vbGVhbihyZXN1bHQsIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5VSURlbGVnYXRlLCBzZWxlY3Rv
cik7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3Vs
dCwgc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9y
KTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29s
ZWFuKEJPT0wKIAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1
bHQsIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0KQogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4ocmVzdWx0LCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+VUlEZWxl
Z2F0ZSwgc2VsZWN0b3IsIG9iamVjdCk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVS
ZXR1cm5pbmdCb29sZWFuKHJlc3VsdCwgc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3Rv
cjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QpOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgQk9P
TCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTAogCiBCT09MIENhbGxVSURlbGVn
YXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVj
dG9yLCBpZCBvYmplY3QsIEJPT0wgYm9vbGVhbikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1cm5pbmdC
b29sZWFuKHJlc3VsdCwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGUsIHNlbGVjdG9y
LCBvYmplY3QsIGJvb2xlYW4pOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlUmV0dXJu
aW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2Vs
ZWN0b3JdLCBzZWxlY3Rvciwgb2JqZWN0LCBib29sZWFuKTsKQEAgLTExMDEsNyArMTEwMSw3IEBA
IEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wKIAogQk9PTCBDYWxsVUlE
ZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIFNFTCBz
ZWxlY3RvciwgaWQgb2JqZWN0LCBCT09MIGJvb2xlYW4sIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERl
bGVnYXRlUmV0dXJuaW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5VSURl
bGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0LCBib29sZWFuLCBvYmplY3QyKTsKICNlbHNlCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4ocmVzdWx0LCBzZWxmLCBbc2VsZiBf
VUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNlbGVjdG9yXSwgc2VsZWN0b3IsIG9iamVjdCwgYm9vbGVh
biwgb2JqZWN0Mik7CkBAIC0xMTEwLDE0ICsxMTEwLDE0IEBAIEJPT0wgQ2FsbFVJRGVsZWdhdGVS
ZXR1cm5pbmdCb29sZWFuKEJPT0wKIAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xl
YW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwg
aWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3VsdCwgc2Vs
Ziwgc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3Qy
KTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4ocmVzdWx0
LCBzZWxmLCBbc2VsZiBfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNlbGVjdG9yXSwgc2VsZWN0b3Is
IG9iamVjdDEsIG9iamVjdDIpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFu
KEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlk
IG9iamVjdDIsIEJPT0wgYm9vbGVhbikKIHsKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlUmV0dXJu
aW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2Vs
ZWN0b3JdLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0MiwgYm9vbGVhbik7CkBAIC0xMTI2LDcg
KzExMjYsNyBAQCBCT09MIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MCiAKIGlk
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYs
IFNFTCBzZWxlY3RvcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIHNl
bGYtPl9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZSwgc2VsZWN0b3IpOwogI2Vsc2UKICAgICBy
ZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfZnJhbWVMb2Fk
RGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvcik7CkBAIC0xMTM1LDcgKzExMzUsNyBAQCBpZCBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0CiAKIGlkIENhbGxGcmFtZUxvYWRE
ZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rvciwg
TlNVSW50ZWdlciBpbnRlZ2VyKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2Vs
Ziwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3RvciwgaW50ZWdlcik7
CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtz
ZWxmIF9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBpbnRlZ2VyKTsKQEAg
LTExNDQsNyArMTE0NCw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50
YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxl
bWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGUsIHNlbGVj
dG9yLCBvYmplY3QpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0
aW9uLCBzZWxmLCBbc2VsZiBfZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwg
b2JqZWN0KTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJ
TVAgaW1wbGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRh
dGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3Qy
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUt
PmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Mik7CiAjZWxzZQog
ICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxmIF9mcmFt
ZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKQEAg
LTExNjIsNyArMTE2Miw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50
YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3Qz
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUt
PmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7
CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtz
ZWxmIF9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmpl
Y3QyLCBvYmplY3QzKTsKQEAgLTExNzEsNyArMTE3MSw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxl
Z2F0ZShJTVAgaW1wbGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBs
ZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBv
YmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0KQogewotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1l
bnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rv
ciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAjZWxzZQogICAgIHJldHVy
biBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxmIF9mcmFtZUxvYWREZWxl
Z2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmpl
Y3Q0KTsKQEAgLTExODAsMTQgKzExODAsMTQgQEAgaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElN
UCBpbXBsZW1lbnRhdAogCiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0
aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5TVGltZUludGVy
dmFsIGludGVydmFsLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShp
bXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBz
ZWxlY3Rvciwgb2JqZWN0MSwgaW50ZXJ2YWwsIG9iamVjdDIsIG9iamVjdDMpOwogI2Vsc2UKICAg
ICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfZnJhbWVM
b2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZXJ2YWwsIG9iamVj
dDIsIG9iamVjdDMpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRp
b24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0LCBkb3VibGUgZG91Ymxl
MSkKIHsKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2Vs
ZiBfZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0LCBkb3VibGUx
KTsKQEAgLTExOTcsNyArMTE5Nyw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXQKIEJPT0wgQ2FsbEZyYW1lTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09M
IHJlc3VsdCwgSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3Ip
CiB7CiAgICAgQHRyeSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKikoaWQsIFNFTCwg
V2ViVmlldyAqKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdh
dGUsIHNlbGVjdG9yLCBzZWxmKTsKICNlbHNlCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEJPT0wgKCopKGlkLCBTRUwsIFdlYlZpZXcgKik+KG9iamNfbXNnU2VuZCkoW3NlbGYgX2Zy
YW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIHNlbGYpOwpAQCAtMTIxMCw3ICsx
MjEwLDcgQEAgQk9PTCBDYWxsRnJhbWVMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZQogCiBpZCBD
YWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxm
LCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRl
KGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0Rl
bGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Mik7CiAjZWxzZQogICAgIHJldHVybiBD
YWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxmIF9yZXNvdXJjZUxvYWREZWxl
Z2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKQEAgLTEyMTksNyAr
MTIxOSw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW4KIAogaWQg
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2Vs
ZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJu
IENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMp
OwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBb
c2VsZiBfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0MSwg
b2JqZWN0Miwgb2JqZWN0Myk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBpZCBDYWxsUmVzb3VyY2VM
b2FkRGVsZWdhdGUoSU1QIGltcGxlbWVuCiAKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJ
TVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0
MSwgaWQgb2JqZWN0MiwgaWQgb2JqZWN0MywgaWQgb2JqZWN0NCkKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUo
aW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVs
ZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0KTsKICNl
bHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgW3NlbGYg
X3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVj
dDIsIG9iamVjdDMsIG9iamVjdDQpOwpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgaWQgQ2FsbFJlc291
cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbgogCiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdh
dGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9i
amVjdDEsIE5TSW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyKQogewotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShp
bXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxl
Z2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOwogI2Vsc2UKICAgICBy
ZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfcmVzb3VyY2VM
b2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZWdlciwgb2JqZWN0
Mik7CkBAIC0xMjQ2LDE0ICsxMjQ2LDE0IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJ
TVAgaW1wbGVtZW4KIAogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRh
dGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3Qy
LCBOU0ludGVnZXIgaW50ZWdlciwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUs
IHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKICNlbHNlCiAg
ICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgW3NlbGYgX3Jlc291
cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIGlu
dGVnZXIsIG9iamVjdDMpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2ViVGhyZWFk
KElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmpl
Y3QxLCBpZCBvYmplY3QyKQogewogICAgIHJldHVybiBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChp
bXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxl
Z2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAg
aWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoSU1QIAogewogICAgIHJldHVybiBD
YWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZh
dGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3RvciwgaW50ZWdlcik7CiB9Ci0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEJPT0wgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEpCiB7
CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVy
bmluZ0JvCiAKIGlkIENhbGxTY3JpcHREZWJ1Z0RlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwg
V2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBOU0lu
dGVnZXIgaW50ZWdlciwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRp
b24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5zY3JpcHREZWJ1Z0RlbGVnYXRlLCBzZWxlY3Rvciwg
b2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7CiAjZWxzZQogICAgIHJldHVybiBD
YWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZh
dGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBpbnRl
Z2VyLCBvYmplY3QzKTsKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGlkIENhbGxTY3JpcHREZWJ1Z0Rl
bGVnYXRlKElNUCBpbXBsZW1lbnQKIAogaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5T
SW50ZWdlciBpbnRlZ2VyMSwgaWQgb2JqZWN0MiwgTlNJbnRlZ2VyIGludGVnZXIyLCBpZCBvYmpl
Y3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZh
dGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBpbnRlZ2VyMSwgb2Jq
ZWN0MiwgaW50ZWdlcjIsIG9iamVjdDMpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRl
SW5XZWJUaHJlYWQoaW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z0RlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZWdlcjEsIG9iamVjdDIsIGludGVn
ZXIyLCBvYmplY3QzKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIGlkIENhbGxTY3JpcHREZWJ1Z0Rl
bGVnYXRlKElNUCBpbXBsZW1lbnQKIAogaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5T
SW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0KQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJu
IENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnNjcmlw
dERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBpbnRlZ2VyLCBvYmplY3QyLCBvYmpl
Y3QzLCBvYmplY3Q0KTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZUluV2ViVGhyZWFk
KGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+c2NyaXB0RGVidWdEZWxlZ2F0
ZSwgc2VsZWN0b3IsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIsIG9iamVjdDMsIG9iamVjdDQp
OwpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoSU1QIGlt
cGxlbWVudAogCiBpZCBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24s
IFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2VyIGludGVn
ZXIxLCBpbnQgaW50ZWdlcjIsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVu
dGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+c2NyaXB0RGVidWdEZWxlZ2F0ZSwgc2VsZWN0
b3IsIG9iamVjdDEsIGludGVnZXIxLCBpbnRlZ2VyMiwgb2JqZWN0Mik7CiAjZWxzZQogICAgIHJl
dHVybiBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+
X3ByaXZhdGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBpbnRlZ2Vy
MSwgaW50ZWdlcjIsIG9iamVjdDIpOwpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgaWQgQ2FsbEhpc3Rv
cnlEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpbwogCiBpZCBDYWxsRm9ybURlbGVnYXRlKFdlYlZp
ZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2JqZWN0MikKIHsKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlkIGRlbGVnYXRl
ID0gc2VsZi0+X3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5p
bDsKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAqc2Vs
ZiwgU0VMIHMKIAogaWQgQ2FsbEZvcm1EZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZCBkZWxlZ2F0ZSA9IHNlbGYt
Pl9wcml2YXRlLT5mb3JtRGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0x
NDQ4LDcgKzE0NDgsNyBAQCBpZCBDYWxsRm9ybURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBz
CiAKIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBv
YmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0LCBpZCBvYmplY3Q1KQog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWQg
ZGVsZWdhdGUgPSBzZWxmLT5fcHJpdmF0ZS0+Zm9ybURlbGVnYXRlOwogICAgIGlmICghZGVsZWdh
dGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgaWQgQ2FsbEZvcm1EZWxlZ2F0ZShXZWJW
aWV3ICpzZWxmLCBTRUwgcwogCiBCT09MIENhbGxGb3JtRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFu
KEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIFNF
TCBzZWxlY3RvckFyZywgaWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlkIGRlbGVnYXRlID0gc2VsZi0+X3ByaXZhdGUtPmZv
cm1EZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBA
QCAtIChpZClpbml0V2l0aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5QCiAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2UgZG9uJ3QgdXNl
IHRoaXMgQVBJLCBidXQgbWFrZSBzdXJlIHRoYXQgaXQgY29tcGlsZXMgd2l0aCB0aGUgbmV3CiAg
ICAgLy8gY29tcGFzcyBwYXJhbWV0ZXJzLgogICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRl
dmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJvdmlkZUFscGhhLCBhbHBo
YSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0KGNhblByb3ZpZGVHYW1t
YSwgZ2FtbWEpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCldOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1bWVudEludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1bWVudEludGVybmFsLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RG9jdW1lbnRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW1w
b3J0IDxXZWJLaXRMZWdhY3kvV2ViSFRNTFZpZXcuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9X
ZWJWaWV3UHJpdmF0ZS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaWYgIWRlZmluZWQoSUJBY3Rpb24pCiAjZGVmaW5lIElCQWN0aW9uIHZvaWQKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExv
YWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIFdlYkRvY3VtZW50TG9hZGVyTWFjOjpXZWJEb2N1bWVudExv
YWRlck0KIAogc3RhdGljIGlubGluZSBib29sIG5lZWRzRGF0YUxvYWRXb3JrYXJvdW5kKFdlYlZp
ZXcgKndlYlZpZXcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBzdGF0aWMgYm9vbCBuZWVkc1dvcmthcm91bmQgPSAhV2ViS2l0TGlua2VkT25P
ckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfQURPQkVfSU5TVEFMTEVSX1FVSVJL
KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBbW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYWRvYmUuSW5z
dGFsbGVycy5TZXR1cCJdOwogICAgIHJldHVybiBuZWVkc1dvcmthcm91bmQ7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVy
bmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIldlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
RnJhbWVWaWV3Lmg+CkBAIC02NSw0ICs2NSw0IEBAIEBpbnRlcmZhY2UgV2ViRHluYW1pY1Njcm9s
bEJhcnNWaWV3IChXZWIKIC0gKEJPT0wpaW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiBAZW5kCiAKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGb3JtRGVsZWdhdGUubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZvcm1EZWxl
Z2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZvcm1EZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIC0g
KEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICoKICAgICByZXR1cm4gTk87CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAgICAKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgICAg
CiAtIChCT09MKXRleHRGaWVsZDooRE9NSFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQgc2hvdWxk
SGFuZGxlRXZlbnQ6KE5TRXZlbnQgKilldmVudCBpbkZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7
CiAgICAgcmV0dXJuIE5POwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1
cC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0ICJXZWJNYWlsRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlLmgiCiAjaW1wb3J0
ICJXZWJVSUtpdERlbGVnYXRlLmgiCkBAIC0yMzEsNyArMjMxLDcgQEAgVGV4dERpcmVjdGlvblN1
Ym1lbnVJbmNsdXNpb25CZWhhdmlvciBjbwogICAgIHJldHVybiBUZXh0RGlyZWN0aW9uU3VibWVu
dU5ldmVySW5jbHVkZWQ7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJh
c2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKQEAgLTM0Myw3ICszNDMsNyBA
QCAtIChCT09MKV9pc0luY2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzCiAgICAgcmV0dXJuIF9wcml2
YXRlICYmIF9wcml2YXRlLT5pbmNsdWRlZEluV2ViS2l0U3RhdGlzdGljczsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TVVJMICpjcmVh
dGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAKICsgKHZvaWQpX2NyZWF0ZU1haW5GcmFtZVdpdGhTaW1w
bGVIVE1MRG9jdW1lbnRXaXRoUGFnZTooUGFnZSopcGFnZSBmcmFtZVZpZXc6KFdlYkZyYW1lVmll
dyAqKWZyYW1lVmlldyBzdHlsZTooTlNTdHJpbmcgKilzdHlsZQpAQCAtNDI0LDcgKzQyNCw3IEBA
IC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGUKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhzZWxmKTsKICAgICBCT09MIGRyYXdzQmFja2dyb3VuZCA9
IFt3ZWJWaWV3IGRyYXdzQmFja2dyb3VuZF07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0NvbG9yICpiYWNrZ3JvdW5kQ29sb3IgPSBbd2ViVmll
dyBiYWNrZ3JvdW5kQ29sb3JdOwogI2Vsc2UKICAgICBDR0NvbG9yUmVmIGJhY2tncm91bmRDb2xv
ciA9IFt3ZWJWaWV3IGJhY2tncm91bmRDb2xvcl07CkBAIC00MzcsMTMgKzQzNywxMyBAQCAtICh2
b2lkKV91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlCiAgICAgICAgIFdlYkZyYW1lICp3
ZWJGcmFtZSA9IGtpdChmcmFtZSk7CiAgICAgICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kKQogICAg
ICAgICAgICAgW1tbd2ViRnJhbWUgZnJhbWVWaWV3XSBfc2Nyb2xsVmlld10gc2V0RHJhd3NCYWNr
Z3JvdW5kOk5PXTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBbW1t3ZWJGcmFtZSBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XSBzZXRCYWNrZ3Jv
dW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsKICNlbmRpZgogCiAgICAgICAgIGlmIChGcmFtZVZp
ZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICB2aWV3LT5zZXRUcmFuc3Bh
cmVudCghZHJhd3NCYWNrZ3JvdW5kKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgICAgIENvbG9yIGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihbYmFja2dy
b3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2Vd
KTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDc3
LDcgKzQ3Nyw3IEBAIC0gKHZvaWQpX3VubWFya0FsbEJhZEdyYW1tYXIKIAogLSAodm9pZClfdW5t
YXJrQWxsTWlzc3BlbGxpbmdzCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgewogICAgICAgICBpZiAoRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCkBAIC01NTgsNyArNTU4LDcgQEAgLSAoV2Vi
RGF0YVNvdXJjZSAqKV9kYXRhU291cmNlCiAgICAgcmV0dXJuIGRhdGFTb3VyY2UoX3ByaXZhdGUt
PmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoQk9PTClfaXNDb21taXR0aW5n
CiB7CkBAIC02MDUsNyArNjA1LDcgQEAgLSAoT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+KV9wYWlu
dEJlaGF2aQogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFwLCB3ZSBjb3Vs
ZCBiZSBzbmFwc2hvdHRpbmcgb3IgZHJhd2luZyBpbnRvIGEgbGF5ZXItYmFja2VkIHZpZXcuCiAg
ICAgaWYgKFdlYkhUTUxWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBfd2ViSFRNTERvY3VtZW50
Vmlld10pIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgcmV0dXJuIFtbZG9jdW1lbnRWaWV3IHdpbmRvd10gaXNJblNuYXBzaG90dGluZ1BhaW50
XSA/IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyA6IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYxOSw3ICs2MTksNyBAQCAtIChPcHRpb25T
ZXQ8UGFpbnRCZWhhdmlvcj4pX3BhaW50QmVoYXZpCiAKIC0gKHZvaWQpX2RyYXdSZWN0OihOU1Jl
Y3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoW1tOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gaXNGbGlwcGVkXSk7CiAKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtNjMwLDcgKzYzMCw3IEBAIC0gKHZvaWQpX2RyYXdS
ZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c08KICNlbmRpZgogICAgIEdyYXBoaWNzQ29udGV4dCBj
b250ZXh0KGN0eCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBjb3JlKHNlbGYpOwogICAgIGlmIChXZWJD
b3JlOjpQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgY29udGV4dC5zZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dChwYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJs
ZWQoKSk7CkBAIC02OTcsNyArNjk3LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcgogICAgIEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKTsK
ICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHByb3RlY3Qoc2VsZik7IC8vIEV4ZWN1dGluZyBhcmJp
dHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAgICAgCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKFdlYlRocmVhZElz
TG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGV4ZWMpOwpA
QCAtNzE0LDcgKzcxNCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3IKICAgICBpZiAoIXJlc3VsdCB8fCAoIXJlc3VsdC5pc0Jvb2xlYW4oKSAmJiAhcmVzdWx0Lmlz
U3RyaW5nKCkgJiYgIXJlc3VsdC5pc051bWJlcigpKSkKICAgICAgICAgcmV0dXJuIEAiIjsKIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKICNlbmRpZgpAQCAtNzM5LDcgKzczOSw3IEBAIC0gKHZvaWQp
X3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW4KICAgICBOb2RlICpzdGFydE5vZGUgPSBj
b3JlKFtyYW5nZSBzdGFydENvbnRhaW5lcl0pOwogICAgICAgICAKICAgICBpZiAoc3RhcnROb2Rl
ICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkgewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShlbmNsb3NpbmdJbnRSZWN0KHJhbmdlUmVjdCksIGluc2lkZUZpeGVkLCB7
IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsKICNlbHNlCiAgICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKQEAg
LTc1NCw3ICs3NTQsNyBAQCAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFu
CiAgICAgfQogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5nZSB3aXRo
SW5zZXQ6KENHRmxvYXQpaW5zZXQKIHsKICAgICBib29sIGluc2lkZUZpeGVkID0gZmFsc2U7IC8v
IEZJWE1FOiBnZXQgdmlhIGZpcnN0UmVjdEZvclJhbmdlKCkuCkBAIC03ODQsNyArNzg0LDcgQEAg
LSAoQk9PTClfbmVlZHNMYXlvdXQKICAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+dmll
dygpID8gX3ByaXZhdGUtPmNvcmVGcmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpIDogZmFsc2U7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAo
RE9NUmFuZ2UgKilfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjooRnJhbWVTZWxlY3Rp
b246OkVBbHRlcmF0aW9uKWFsdGVyYXRpb24gZGlyZWN0aW9uOihTZWxlY3Rpb25EaXJlY3Rpb24p
ZGlyZWN0aW9uIGdyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKIHsKICAg
ICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuaXNOb25lKCkpCkBAIC0xMDE4
LDcgKzEwMTgsNyBAQCAtICh2b2lkKV9zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnM6KEJPT0wpCiAg
ICAgX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyA9IHNob3VsZENyZWF0ZVJlbmRlcmVy
czsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAt
IChOU0NvbG9yICopX2JvZHlCYWNrZ3JvdW5kQ29sb3IKICNlbHNlCiAtIChDR0NvbG9yUmVmKV9i
b2R5QmFja2dyb3VuZENvbG9yCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCAtIChDR0NvbG9yUmVmKV9i
b2R5QmFja2dyb3VuZENvbG9yCiAgICAgQ29sb3IgY29sb3IgPSBib2R5UmVuZGVyZXItPnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJl
dHVybiBuc0NvbG9yKGNvbG9yKTsKICNlbHNlCiAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29s
b3IpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgLSAoV2ViRnJhbWVMb2FkVHlwZSlfbG9hZFR5cGUK
ICAgICByZXR1cm4gdG9XZWJGcmFtZUxvYWRUeXBlKF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWRUeXBlKCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChCT09MKW5lZWRzTGF5b3V0CiB7CiAgICAgLy8gTmVlZGVkIGZvciBNYWls
IDxyZGFyOi8vcHJvYmxlbS82MjI4MDM4PgpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgLSAoRE9NUmFu
Z2UgKilfc2VsZWN0aW9uUmFuZ2VGb3JQb2ludDooQwogICAgIHJldHVybiByYW5nZTsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAtIChOU1JhbmdlKV9zZWxlY3RlZE5TUmFuZ2UKIHsKQEAgLTExOTMsNyArMTE5Myw3IEBAIC0g
KHZvaWQpX3JlY3Vyc2l2ZV9wYXVzZU51bGxFdmVudHNGb3JBbGwKIH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHVuc2lnbmVkKWZv
cm1FbGVtZW50c0NoYXJhY3RlckNvdW50CiB7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCAtICh2b2lk
KV9yZXBsYWNlU2VsZWN0aW9uV2l0aFdlYkFyY2hpdmU6CiAgICAgW3NlbGYgX3JlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQ6ZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFj
ZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOk5PXTsKIH0KIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIC0gKHZvaWQpcmVzZXRUZXh0QXV0b3NpemluZ0Jl
Zm9yZUxheW91dApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgLSAodm9pZClfcmVwbGFjZVNlbGVjdGlv
bldpdGhGcmFnbWVudDooRAogICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLnJlcGxh
Y2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoKmNvcmUoZnJhZ21lbnQpLCBzZWxlY3RSZXBsYWNlbWVu
dCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMK
IHsKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5yZW1vdmVVbmNoYW5nZWFibGVT
dHlsZXMoKTsKQEAgLTE5ODEsNyArMTk4MSw3IEBAIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25X
aXRoTWFya3VwU3RyaW4KICAgICBbc2VsZiBfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpm
cmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6
c21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6Tk9dOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIERldGVybWluZXMgd2hldGhlciB3aGl0ZXNwYWNl
IG5lZWRzIHRvIGJlIGFkZGVkIGFyb3VuZCBhU3RyaW5nIHRvIHByZXNlcnZlIHByb3BlciBzcGFj
aW5nIGFuZAogLy8gcHVuY3R1YXRpb24gd2hlbiBpdCdzIGluc2VydGVkIGludG8gdGhlIHJlY2Vp
dmVyJ3MgdGV4dCBvdmVyIGNoYXJSYW5nZS4gUmV0dXJucyBieSByZWZlcmVuY2UKIC8vIGluIGJl
Zm9yZVN0cmluZyBhbmQgYWZ0ZXJTdHJpbmcgYW55IHdoaXRlc3BhY2UgdGhhdCBzaG91bGQgYmUg
YWRkZWQsIHVubGVzcyBlaXRoZXIgb3IgYm90aCBhcmUKQEAgLTIwMzksNyArMjAzOSw3IEBAIC0g
KHZvaWQpX3NtYXJ0SW5zZXJ0Rm9yU3RyaW5nOihOU1N0cmluZyAKICAgICBpZiAoYWZ0ZXJTdHJp
bmcgJiYgYWRkVHJhaWxpbmdTcGFjZSAmJiAhaGFzV2hpdGVzcGFjZUF0RW5kKQogICAgICAgICAq
YWZ0ZXJTdHJpbmcgPSBAIiAiOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkgKilfY2Fj
aGVhYmlsaXR5RGljdGlvbmFyeQogewpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgLSAoSlNDb250ZXh0
ICopX2phdmFTY3JpcHRDb250ZXh0Rm9yU2NyaQogfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRBbGxvd3NTY3JvbGxl
cnNUb092ZXJsYXBDb250ZW50OihCT09MKWZsYWcKIHsKICAgICBBU1NFUlQoW1tbc2VsZiBmcmFt
ZVZpZXddIF9zY3JvbGxWaWV3XSBpc0tpbmRPZkNsYXNzOltXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgY2xhc3NdXSk7CkBAIC0yMjA1LDcgKzIyMDUsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5Um9v
dAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpIHsKICAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNz
aWJpbGl0eSgpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIEFY
T2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoW1tOU0Fw
cCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2Vy
SW50ZXJmYWNlQXR0cmlidXRlXSBib29sVmFsdWVdKTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECkBAIC0yMjg0LDcgKzIyODQsNyBAQCAtIChOU0FycmF5ICopX2Nv
bXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTCiAgICAgcmV0dXJuIHBhZ2VzOwogfQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKERPTURvY3VtZW50RnJh
Z21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvclRleHQ6KE5TU3RyaW5nICopdGV4dAogewpAQCAt
MjMzOCw3ICsyMzM4LDcgQEAgLSAodm9pZClfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6KE5TU3Ry
aQogICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoeyB0aXRsZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwogfQogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEpTVmFsdWVSZWYp
anNXcmFwcGVyRm9yTm9kZTooRE9NTm9kZSAqKW5vZGUgaW5TY3JpcHRXb3JsZDooV2ViU2NyaXB0
V29ybGQgKil3b3JsZAogewpAQCAtMjQxNCw3ICsyNDE0LDcgQEAgLSAoV2ViVmlldyAqKXdlYlZp
ZXcKIAogc3RhdGljIGJvb2wgbmVlZHNNaWNyb3NvZnRNZXNzZW5nZXJET01Eb2N1bWVudFdvcmth
cm91bmQoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgbmVlZHNXb3JrYXJvdW5k
ID0gTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkgJiYgW1tbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICopa0NGQnVu
ZGxlVmVyc2lvbktleV0gY29tcGFyZTpAIjcuMSIgb3B0aW9uczpOU051bWVyaWNTZWFyY2hdID09
IE5TT3JkZXJlZEFzY2VuZGluZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQCBXZWJWaWV3ICpraXQoV2ViQ29yZTo6UGFnZSopOwogV2Vi
Q29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgY29yZShXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlv
cik7CiBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUo
V2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7CiAKLSNpZiBkZWZpbmVk
KF9fY3BsdXNwbHVzKSAmJiBQTEFURk9STShJT1MpCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykg
JiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gdmVjdG9yRm9y
RGljdGF0aW9uUGhyYXNlc0FycmF5KE5TQXJyYXkgKik7CiAjZW5kaWYKIApAQCAtOTMsNyArOTMs
NyBAQCBAaW50ZXJmYWNlIFdlYkZyYW1lUHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIGlu
Y2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXJsOwog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHJvdmlzaW9uYWxVUkw7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQk9PTCBpc0NvbW1pdHRpbmc7CiAjZW5k
aWYKIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBAaW50ZXJmYWNlIFdlYkZyYW1lIChXZWJJbnRlcm5h
bCkKIC8vIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAtIChXZWJEYXRhU291cmNlICopX2RhdGFT
b3VyY2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsg
KHZvaWQpX2NyZWF0ZU1haW5GcmFtZVdpdGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFnZTooV2Vi
Q29yZTo6UGFnZSopcGFnZSBmcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZyYW1lVmlldyBzdHls
ZTooTlNTdHJpbmcgKilzdHlsZTsKIAogLSAoQk9PTClfaXNDb21taXR0aW5nOwpAQCAtMTU2LDEx
ICsxNTYsMTEgQEAgQGludGVyZmFjZSBXZWJGcmFtZSAoV2ViSW50ZXJuYWwpCiAtIChOU1JlY3Qp
X2NhcmV0UmVjdEF0UG9zaXRpb246KGNvbnN0IFdlYkNvcmU6OlBvc2l0aW9uJilwb3MgYWZmaW5p
dHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHk7CiAtIChOU1JlY3QpX2ZpcnN0UmVjdEZv
ckRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlOwogLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zp
c2libGU6KERPTVJhbmdlICopcmFuZ2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2Ug
KilyYW5nZSB3aXRoSW5zZXQ6KENHRmxvYXQpaW5zZXQ7CiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChET01SYW5nZSAqKV9yYW5nZUJ5
QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOihXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6RUFsdGVy
YXRpb24pYWx0ZXJhdGlvbiBkaXJlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbilk
aXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFudWxhcml0
eTsKICNlbmRpZgogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooV2ViQ29yZTo6UmFuZ2Uq
KXJhbmdlOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZVZpZXcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQREZWaWV3SU9TLmgiCiAjaW1w
b3J0ICJXZWJVSUtpdERlbGVnYXRlLmgiCkBAIC04NCw3ICs4NCw3IEBACiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIEBpbnRlcmZhY2UgTlNXaW5kb3cgKFdpbmRvd1ByaXZhdGUpCiAtIChCT09MKV9uZWVk
c1RvUmVzZXREcmFnTWFyZ2luczsKIC0gKHZvaWQpX3NldE5lZWRzVG9SZXNldERyYWdNYXJnaW5z
OihCT09MKXM7CkBAIC0xNTgsNyArMTU4LDcgQEAgLSAodm9pZClfc2V0RG9jdW1lbnRWaWV3OihO
U1ZpZXcgPFdlYkRvYwogICAgIGNvcmUoW3NlbGYgX3dlYlZpZXddKS0+ZHJhZ0NvbnRyb2xsZXIo
KS5zZXREaWRJbml0aWF0ZURyYWcoZmFsc2UpOwogI2VuZGlmCiAgICAgCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc3Ygc2V0U3VwcHJlc3NMYXlv
dXQ6WUVTXTsKICAgICAKICAgICAvLyBJZiB0aGUgb2xkIHZpZXcgaXMgdGhlIGZpcnN0IHJlc3Bv
bmRlciwgdHJhbnNmZXIgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byB0aGUgbmV3IHZpZXcgYXMg
CkBAIC0xNzIsNyArMTcyLDcgQEAgLSAodm9pZClfc2V0RG9jdW1lbnRWaWV3OihOU1ZpZXcgPFdl
YkRvYwogICAgIFt3aW5kb3cgX3NldE5lZWRzVG9SZXNldERyYWdNYXJnaW5zOk5PXTsKICNlbmRp
ZgogICAgIFtzdiBzZXREb2N1bWVudFZpZXc6dmlld107Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2luZG93IF9zZXROZWVkc1RvUmVzZXREcmFn
TWFyZ2luczpyZXNldERyYWdNYXJnaW5zXTsKIAogICAgIGlmIChtYWtlTmV3Vmlld0ZpcnN0UmVz
cG9uZGVyKQpAQCAtMjczLDExICsyNzMsMTEgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV92
aWV3VHlwZXNBbGxvdwogICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0
IiB3ZSBkb24ndCBib3RoZXIgcmVnaXN0ZXJpbmcgaXQuCiAgICAgICAgIEJPT0wgb21pdFBERlN1
cHBvcnQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5
OkAiV2ViS2l0T21pdFBERlN1cHBvcnQiXTsKICAgICAgICAgaWYgKCFvbWl0UERGU3VwcG9ydCkK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgV2Vi
UERGVmlldyAoW1dlYlZpZXcgX2dldFBERlZpZXdDbGFzc10pCiAjZW5kaWYKICAgICAgICAgICAg
IGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcywgW1dlYlBERlZpZXcgY2xhc3NdLCBbV2ViUERG
VmlldyBzdXBwb3J0ZWRNSU1FVHlwZXNdKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICN1bmRlZiBXZWJQREZWaWV3CiAjZW5kaWYKICAgICB9CkBAIC0zMDUs
NyArMzA1LDcgQEAgLSAoQ2xhc3MpX3ZpZXdDbGFzc0Zvck1JTUVUeXBlOihOU1N0cmluZwogewog
ICAgIENsYXNzIHJldFZhbCA9IFtbc2VsZiBjbGFzc10gX3ZpZXdDbGFzc0Zvck1JTUVUeXBlOk1J
TUVUeXBlIGFsbG93aW5nUGx1Z2luczpbW1tzZWxmIF93ZWJWaWV3XSBwcmVmZXJlbmNlc10gYXJl
UGx1Z0luc0VuYWJsZWRdXTsKIAotI2lmIFBMQVRGT1JNKElPUykgICAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAgIAogICAgIGlmIChbcmV0VmFsIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JXZWJGcmFtZTopXSkKICAgICAgICAgcmV0VmFsID0g
W3JldFZhbCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXByZXNlbnRhdGlvbkNsYXNzRm9y
V2ViRnJhbWU6KSB3aXRoT2JqZWN0OltzZWxmIHdlYkZyYW1lXV07CiAjZW5kaWYKQEAgLTM2OSw3
ICszNjksNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKICAgICAgICAgLy8g
Tm90ZTogV2UgYWxzbyBkbyB0aGlzIGluIFdlYkhpc3RvcnlJdGVtJ3MgaW5pdCBtZXRob2QuCiAg
ICAgICAgIFdlYkNvcmU6Om5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCA9IFdLTm90aWZ5SGlzdG9y
eUl0ZW1DaGFuZ2VkOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9NQUlOX1RIUkVBRF9FWENFUFRJT05TKSkKICAgICAgICAgICAgIHNldERlZmF1
bHRUaHJlYWRWaW9sYXRpb25CZWhhdmlvcihMb2dPbkZpcnN0VGhyZWFkVmlvbGF0aW9uLCBUaHJl
YWRWaW9sYXRpb25Sb3VuZE9uZSk7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUKIAogICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Ny
b2xsVmlldyA9IFtbV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWln
aHQpXTsKICAgICBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2Nyb2xsVmlldyBz
ZXREZWxlZ2F0ZTpzZWxmXTsKICNlbHNlCiAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6
W1tbV2ViQ2xpcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0g
YXV0b3JlbGVhc2VdXTsKQEAgLTQxOCw3ICs0MTgsNyBAQCAtICh2b2lkKWRlYWxsb2MgCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChCT09MKXNjcm9sbFZpZXc6KFdBS1Njcm9sbFZpZXcgKilzY3JvbGxWaWV3
IHNob3VsZFNjcm9sbFRvUG9pbnQ6KENHUG9pbnQpcG9pbnQKIHsKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW3NlbGYgX3dlYlZpZXddOwpAQCAtNTA0LDcgKzUwNCw3IEBAIC0gKEJPT0wpaXNPcGFx
dWUKIAogLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghW3NlbGYgZG9jdW1lbnRWaWV3
XSkKICNlbHNlCiAgICAgaWYgKCFbc2VsZiBkb2N1bWVudFZpZXddIHx8IFtbc2VsZiBkb2N1bWVu
dFZpZXddIGZyYW1lXS5zaXplLmhlaWdodCA9PSAwIHx8IFtbc2VsZiB3ZWJGcmFtZV0gX2lzQ29t
bWl0dGluZ10pCkBAIC01MTIsNyArNTEyLDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJl
Y3QKICAgICB7CiAgICAgICAgIC8vIE5lZWQgdG8gcGFpbnQgb3Vyc2VsdmVzIGlmIHRoZXJlJ3Mg
bm8gZG9jdW1lbnRWaWV3IHRvIGRvIGl0IGluc3RlYWQuCiAgICAgICAgIGlmIChbW3NlbGYgX3dl
YlZpZXddIGRyYXdzQmFja2dyb3VuZF0pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgW1tbc2VsZiBfd2ViVmlld10gYmFja2dyb3Vu
ZENvbG9yXSBzZXRdOwogICAgICAgICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCkBAIC01
MjQsNyArNTI0LDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICB9IGVsc2Ug
ewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgaWYgKFtbc2VsZiBfc2Nyb2xsVmlld10gZHJhd3NC
YWNrZ3JvdW5kXSkgewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgICAgICBbW05TQ29sb3IgY3lhbkNvbG9yXSBzZXRdOwogICAgICAgICAgICAg
TlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCkBAIC04NTAsNyArODUwLDcgQEAgLSAodm9pZClzY3Jv
bGxMaW5lRG93bjooaWQpc2VuZGVyCiAKIC0gKEJPT0wpX2ZpcnN0UmVzcG9uZGVySXNGb3JtQ29u
dHJvbAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHJldHVybiBOTzsKICNlbHNlCiAgICAgTlNSZXNwb25kZXIgKmZpcnN0UmVzcG9uZGVyID0gW1tz
ZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdOwpAQCAtODYzLDcgKzg2Myw3IEBAIC0gKEJPT0wp
X2ZpcnN0UmVzcG9uZGVySXNGb3JtQ29udHJvbAogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIFVubGlrZSBPUyBYIFdlYktpdCwgb24g
aU9TLCB1bmhhbmRsZWQgbW91c2UgZXZlbnRzIGFyZSBmb3J3YXJkZWQgdG8gYWxsb3cgZm9yIHNj
cm9sbGluZy4KIC8vIFNpbmNlIG1vdXNlIGV2ZW50cyB3ZXJlIGZvcndhcmRlZCB0byB0aGlzIFdl
YkZyYW1lVmlldywgdGhpcyBtZWFucyB0aGF0IHRoZSBzdWJ2aWV3cyBkaWRuJ3QKIC8vIGhhbmRs
ZSB0aGUgZXZlbnQuIFBhc3MgdGhlIGV2ZW50cyB0byB0aGUgbmV4dCBzY3JvbGwgdmlldy4KQEAg
LTg4Nyw3ICs4ODcsNyBAQCAtICh2b2lkKW1vdXNlVXA6KFdlYkV2ZW50ICopZXZlbnQKIH0KICNl
bmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50CiAjZWxzZQogLSAodm9pZClrZXlEb3duOihX
ZWJFdmVudCAqKWV2ZW50CkBAIC05MDAsNyArOTAwLDcgQEAgLSAodm9pZClrZXlEb3duOihXZWJF
dmVudCAqKWV2ZW50CiAgICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgYXV0b21hdGljYWxseSBiZWNh
dXNlIG1vc3Qgb2YgdGhlIGtleXMgaGFuZGxlZCBoZXJlIGFyZSB0cmFuc2xhdGVkIGludG8gbW92
ZVhYWCBjb21tYW5kcywgd2hpY2ggYXJlIG5vdCBoYW5kbGVkCiAgICAgLy8gYnkgRWRpdG9yIHdo
ZW4gZm9jdXMgaXMgbm90IGluIGVkaXRhYmxlIGNvbnRlbnQuCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0g
W2V2ZW50IGNoYXJhY3RlcnNdOwogICAgIGludCBtb2RpZmllckZsYWdzID0gW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdOwogI2Vsc2UKQEAgLTk4Miw3ICs5ODIsNyBAQCAtICh2b2lkKWtleURvd246KFdl
YkV2ZW50ICopZXZlbnQKICAgICAgICAgICAgICAgICAgICAgY2FsbFN1cGVyID0gWUVTOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgICAgICBpZiAoKCFb
c2VsZiBhbGxvd3NTY3JvbGxpbmddICYmICFbc2VsZiBfbGFyZ2VzdFNjcm9sbGFibGVDaGlsZF0p
IHx8CiAgICAgICAgICAgICAgICAgICAgIFtbW3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl0g
aXNLaW5kT2ZDbGFzczpbTlNQb3BVcEJ1dHRvbiBjbGFzc11dKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIExldCBhcnJvdyBrZXlzIGdvIHRocm91Z2ggdG8gcG9wIHVwIGJ1dHRvbnMKQEAgLTEw
MDcsNyArMTAwNyw3IEBAIC0gKHZvaWQpa2V5RG93bjooV2ViRXZlbnQgKilldmVudAogICAgICAg
ICAgICAgICAgICAgICBjYWxsU3VwZXIgPSBZRVM7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIGlmICgoIVtzZWxmIGFsbG93c1Njcm9sbGluZ10g
JiYgIVtzZWxmIF9sYXJnZXN0U2Nyb2xsYWJsZUNoaWxkXSkgfHwKICAgICAgICAgICAgICAgICAg
ICAgW1tbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBpc0tpbmRPZkNsYXNzOltOU1BvcFVw
QnV0dG9uIGNsYXNzXV0pIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IGFycm93IGtleXMg
Z28gdGhyb3VnaCB0byBwb3AgdXAgYnV0dG9ucwpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgLSAoTlNW
aWV3ICopX3dlYmNvcmVfZWZmZWN0aXZlRmlyc3RSZXNwbwogICAgIHJldHVybiB2aWV3ID8gW3Zp
ZXcgX3dlYmNvcmVfZWZmZWN0aXZlRmlyc3RSZXNwb25kZXJdIDogW3N1cGVyIF93ZWJjb3JlX2Vm
ZmVjdGl2ZUZpcnN0UmVzcG9uZGVyXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKWNhblByaW50SGVhZGVyc0FuZEZvb3RlcnMKIHsK
ICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1lbnRW
aWV3XTsKQEAgLTExNDksNyArMTE0OSw3IEBAIC0gKGZsb2F0KV9hcmVhCiAKIC0gKEJPT0wpX2lz
U2Nyb2xsYWJsZQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ID0gW3NlbGYgX3Nj
cm9sbFZpZXddOwogICAgIHJldHVybiBbc2Nyb2xsVmlldyBob3Jpem9udGFsU2Nyb2xsaW5nQWxs
b3dlZF0gfHwgW3Njcm9sbFZpZXcgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkXTsKICNlbHNlCkBA
IC0xMjMzLDcgKzEyMzMsNyBAQCAtIChDbGFzcylfY3VzdG9tU2Nyb2xsVmlld0NsYXNzCiAgICAg
cmV0dXJuIFtfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3IGNsYXNzXTsKIH0KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRDdXN0b21T
Y3JvbGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiB7CiAgICAgaWYgKCFjdXN0b21DbGFz
cykKQEAgLTEyNzAsNiArMTI3MCw2IEBAIC0gKHZvaWQpX3NldEN1c3RvbVNjcm9sbFZpZXdDbGFz
czooQ2xhc3MKICAgICBbb2xkU2Nyb2xsVmlldyByZWxlYXNlXTsKICAgICBbZG9jdW1lbnRWaWV3
IHJlbGVhc2VdOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2ltcG9y
dCA8d3RmL1JlZlB0ci5oPgpAQCAtNzQsNCArNzQsNCBAQCBAaW50ZXJmYWNlIFdlYkZ1bGxTY3Jl
ZW5Db250cm9sbGVyIDogTlNXCiAtICh2b2lkKWNsb3NlOwogQGVuZAogCi0jZW5kaWYgLy8gRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyLmgiCiAKQEAgLTYwMSw0ICs2MDEsNCBAQCAtICh2b2lkKV9zdGFydEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0CiBAZW5kCiAKIAotI2VuZGlmIC8qIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAqLwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNyArMjU4LDcg
QEAgLSAoRE9NRG9jdW1lbnQgKilET01Eb2N1bWVudAogICAgIHJldHVybiBbW19wcml2YXRlLT5k
YXRhU291cmNlIHdlYkZyYW1lXSBET01Eb2N1bWVudF07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0
cmlidXRlZFRleHQKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNN
ZW51U1BJLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCAiV2ViVUlLaXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlFdmVudENvZGVzSU9TLmg+
CkBAIC0xNzEsNyArMTcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChBY2Nl
c3NpYmlsaXR5KQogLSAoaWQpYWNjZXNzaWJpbGl0eUhpdFRlc3Q6KE5TUG9pbnQpcG9pbnQ7CkBA
IC03MjgsNyArNzI4LDcgQEAgLSAodm9pZClfcmVjdXJzaXZlOihCT09MKXJlY3Vyc2VYIGRpc3Bs
YQogI2VuZGlmCiAjZW5kaWYKIC0gKHZvaWQpX3NldERyYXdzT3duRGVzY2VuZGFudHM6KEJPT0wp
ZHJhd3NPd25EZXNjZW5kYW50czsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKHZvaWQpY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYTooaWQpc2VuZGVy
OwogI2VuZGlmCiBAZW5kCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIENhY2hlZEltYWdlQ2xp
ZW50JiBwcm9taXNlZERhdGFDbAogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViTWFya2VkVGV4
dFVwZGF0ZWROb3RpZmljYXRpb24gPSBAIldlYk1hcmtlZFRleHRVcGRhdGVkIjsKICNlbmRpZgog
CkBAIC04ODcsNyArODg3LDcgQEAgQGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViTlNUZXh0SW5w
dXRTdQogLSAodm9pZClfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZTsKIC0gKHZvaWQpX3VwZGF0ZVNl
bGVjdGlvbkZvcklucHV0TWFuYWdlcjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRNYXJrZWRUZXh0OihpZClzdHJpbmcgc2Vs
ZWN0ZWRSYW5nZTooTlNSYW5nZSluZXdTZWxSYW5nZTsKIC0gKHZvaWQpZG9Db21tYW5kQnlTZWxl
Y3RvcjooU0VMKXNlbGVjdG9yOwogI2VuZGlmCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCArIChOU0Fy
cmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzCiAgICAgcmV0dXJuIFtXZWJIVE1MUmVwcmVz
ZW50YXRpb24gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzXTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KFdlYkV2
ZW50ICopZXZlbnQKIHsKQEAgLTE3NDksNyArMTc0OSw3IEBAIC0gKE5TVmlldyAqKWhpdFRlc3Q6
KE5TUG9pbnQpcG9pbnQKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NlZCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQk9PTCBjYXB0dXJlSGl0c09uU3Vidmlld3M7CiAgICAgaWYgKGZvcmNlTlNWaWV3SGl0VGVz
dCkKICAgICAgICAgY2FwdHVyZUhpdHNPblN1YnZpZXdzID0gTk87CkBAIC0xNzcxLDcgKzE3NzEs
NyBAQCAtIChOU1ZpZXcgKiloaXRUZXN0OihOU1BvaW50KXBvaW50CiAgICAgICAgICAgICBoaXRW
aWV3ID0gc2VsZjsKICAgICAgICAgcmV0dXJuIGhpdFZpZXc7CiAgICAgfQotI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBpZiAo
W1tzZWxmIHN1cGVydmlld10gbW91c2U6cG9pbnQgaW5SZWN0OltzZWxmIGZyYW1lXV0pCiAgICAg
ICAgIHJldHVybiBzZWxmOwpAQCAtMjAzMiw3ICsyMDMyLDcgQEAgLSAodm9pZClfaGFuZGxlQXV0
b3Njcm9sbEZvck1vdXNlRHJhZ2dlZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFdBS1ZpZXcgb3Zl
cnJpZGUuCiAtICh2b2lkKWxheW91dElmTmVlZGVkCkBAIC0yNTUwLDcgKzI1NTAsNyBAQCAtIChD
R0Zsb2F0KV9hZGp1c3RlZEJvdHRvbU9mUGFnZVdpdGhUb3A6CiAgICAgICAgIHJldHVybiBuZXdC
b3R0b207CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RFbGVtZW50CiB7CkBAIC0yNjA2LDcgKzI2MDYsNyBA
QCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKIAogICAgIF9wcml2YXRlLT5wbHVn
aW5Db250cm9sbGVyID0gYWRvcHROUyhbW1dlYlBsdWdpbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoRG9jdW1lbnRWaWV3OnNlbGZdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
CiAgICAgICAgICAgICBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihtYXJrZWRU
ZXh0VXBkYXRlOikgCiAgICAgICAgICAgICAgICAgICAgbmFtZTpXZWJNYXJrZWRUZXh0VXBkYXRl
ZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKQEAgLTI2MjQsNyArMjYyNCw3IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVh
ZChbV2ViSFRNTFZpZXcgY2xhc3NdLCBzZWxmKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6V2ViTWFya2Vk
VGV4dFVwZGF0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAjZW5kaWYKIApAQCAtMjgxOSw3
ICsyODE5LDcgQEAgV0VCQ09SRV9DT01NQU5EKHVuc2NyaXB0KQogV0VCQ09SRV9DT01NQU5EKHlh
bmspCiBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogV0VCQ09SRV9DT01NQU5EKGNsZWFyVGV4dCkKIFdF
QkNPUkVfQ09NTUFORCh0b2dnbGVCb2xkKQogV0VCQ09SRV9DT01NQU5EKHRvZ2dsZUl0YWxpYykK
QEAgLTMyOTksNyArMzI5OSw3IEBAIC0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3ICopdmlldwog
CiAgICAgaWYgKFtXZWJQbHVnaW5Db250cm9sbGVyIGlzUGx1Z0luVmlldzp2aWV3XSkgewogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CiAgICAgICAgIFtbd2ViVmlldyBfVUlLaXRE
ZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxBZGRQbHVnSW5WaWV3OnZpZXdd
OwogI2VuZGlmCkBAIC00MjA0LDcgKzQyMDQsNyBAQCAtICh2b2lkKW1vdXNlRG93bjooV2ViRXZl
bnQgKilldmVudAogICAgIC8vIFJlY29yZCB0aGUgbW91c2UgZG93biBwb3NpdGlvbiBzbyB3ZSBj
YW4gZGV0ZXJtaW5lIGRyYWcgaHlzdGVyZXNpcy4KICAgICBbc2VsZiBfc2V0TW91c2VEb3duRXZl
bnQ6ZXZlbnRdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gVEVYVElOUFVUOiBpZiB0aGVyZSBpcyBtYXJrZWQgdGV4dCBhbmQgdGhlIGN1cnJl
bnQgaW5wdXQKICAgICAvLyBtYW5hZ2VyIHdhbnRzIHRvIGhhbmRsZSBtb3VzZSBldmVudHMsIHdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRvCiAgICAgLy8gcGFzcyBpdCB0byB0aGVtLiBJZiBub3QsIHRo
ZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGlucHV0CkBAIC00NDY1LDcgKzQ0NjUsNyBAQCAtICh2
b2lkKW1vdXNlVXA6KFdlYkV2ZW50ICopZXZlbnQKICAgICBbc2VsZiBfc3RvcEF1dG9zY3JvbGxU
aW1lcl07CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBwYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5tb3VzZVVwKGV2ZW50KTsKICNlbHNlCiAgICAgICAgICAgICBwYWdl
LT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZVVwKGV2ZW50LCBbW3NlbGYgX3dlYlZp
ZXddIF9wcmVzc3VyZUV2ZW50XSk7CkBAIC00NjI5LDcgKzQ2MjksNyBAQCAtIChCT09MKXJlc2ln
bkZpcnN0UmVzcG9uZGVyCiAgICAgICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuIHJlc2lnbjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICBkb2N1bWVudC0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1l
bnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpOwogICAgICAgICAgICAg
ZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25SZXN1bHQpOwpAQCAtNTAzNSw3ICs1MDM1LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUhpdFRl
c3Q6KE5TUG9pbnQpcG9pbgogewogICAgIGlkIGFjY1RyZWUgPSBbW3NlbGYgX2ZyYW1lXSBhY2Nl
c3NpYmlsaXR5Um9vdF07CiAgICAgaWYgKGFjY1RyZWUpIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuIFthY2NUcmVlIGFjY2Vzc2li
aWxpdHlIaXRUZXN0OnBvaW50XTsKICNlbHNlCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCkBAIC01NjgyLDcgKzU2ODIsNyBAQCAtICh2b2lkKW90aGVyTW91c2VV
cDooTlNFdmVudCAqKWV2ZW50CiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKW1hcmtlZFRleHRVcGRhdGU6KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCiB7CiAgICAgTlNTdHJpbmcgKnRleHQgPSBbbm90aWZpY2F0aW9u
IG9iamVjdF07CkBAIC02MDQ4LDcgKzYwNDgsNyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVu
dDooS2V5Ym9hcmRFdmVuCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKICNkZWZpbmUga1dlYkVudGVy
S2V5ICAgICAgICAgMHgwMDAzCiAjZGVmaW5lIGtXZWJCYWNrc3BhY2VLZXkgICAgIDB4MDAwOApA
QCAtNjA5OSw3ICs2MDk5LDcgQEAgLSAoQk9PTClfaGFuZGxlRWRpdGluZ0tleUV2ZW50OihLZXli
b2FyZAogICAgIH0KICAgICByZXR1cm4gTk87CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShNQUMpCiAKQEAg
LTY4NDQsNyArNjg0NCw3IEBAIC0gKE5TVmlldyAqKXNlbGVjdGlvblZpZXcKICAgICByZXR1cm4g
c2VsZjsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiBzdGF0aWMgQ0dJbWFnZVJlZiBpbWFnZUZyb21SZWN0KEZyYW1lKiBmcmFtZSwgQ0dSZWN0IHJl
Y3QpCiB7CkBAIC02OTIyLDcgKzY5MjIsNyBAQCBzdGF0aWMgQ0dJbWFnZVJlZiBzZWxlY3Rpb25J
bWFnZShGcmFtZSogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oTUFD
KQogLSAoTlNJbWFnZSAqKXNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3Jj
ZUJsYWNrVGV4dApAQCAtNjkzNyw3ICs2OTM3LDcgQEAgLSAoQ0dJbWFnZVJlZilzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFjawogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gbmls
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0
dXJuIHNlbGVjdGlvbkltYWdlKGNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpOwogI2Vsc2UKICAg
ICBUZXh0SW5kaWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIEBpbnRlcmZhY2Ug
V2ViSFRNTFZpZXcgKFdlYkludGVybmFsKQogLSAodm9pZClzZXRQcm9taXNlZERyYWdUSUZGRGF0
YVNvdXJjZTooV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqKXNvdXJjZTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9oYW5kbGVFZGl0
aW5nS2V5RXZlbnQ6KFdlYkNvcmU6OktleWJvYXJkRXZlbnQgKilldmVudDsKICNlbmRpZgogCkBA
IC04Niw3ICs4Niw3IEBAIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkludGVybmFsKQogLSAo
Qk9PTClfd2ViX2lzRHJhd2luZ0ludG9BY2NlbGVyYXRlZExheWVyOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX2xheW91dElm
TmVlZGVkOwogI2VuZGlmCiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBAaW50ZXJmYWNlIFdlYkhUTUxW
aWV3IChXZWJJbnRlcm5hbCkKIEBlbmQKIAogQGludGVyZmFjZSBXZWJIVE1MVmlldyAoUmVtb3Zl
ZEFwcEtpdFN1cGVyY2xhc3NNZXRob2RzKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAodm9pZClkZWxldGU6KGlkKXNlbmRlcjsKIC0gKHZvaWQpdHJhbnNw
b3NlOihpZClzZW5kZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSW5kaWNhdGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAogI2ltcG9ydCAiV2ViSW5kaWNhdGVM
YXllci5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgIldlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFQbGF5YmFja1RhcmdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4
dHJhcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMywx
MiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBAY2xhc3MgUERGRG9jdW1lbnQ7CiAjZW5kaWYKIAogTlNBcnJh
eSAqYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoQ0dQREZEb2N1bWVudFJlZik7CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNBcnJheSAqYWxsU2NyaXB0
c0luUERGRG9jdW1lbnQoUERGRG9jdW1lbnQgKik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQREZEb2N1bWVudEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFBERktp
dC9QREZEb2N1bWVudC5oPgogI2VuZGlmCiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBOU0FycmF5ICph
bGxTY3JpcHRzSW5QREZEb2N1bWVudChDR1BERkRvCiAgICAgcmV0dXJuIHNjcmlwdHM7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNBcnJheSAq
YWxsU2NyaXB0c0luUERGRG9jdW1lbnQoUERGRG9jdW1lbnQgKmRvY3VtZW50KQogewogICAgIHJl
dHVybiBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChbZG9jdW1lbnQgZG9jdW1lbnRSZWZdKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJl
cHJlc2VudGF0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRG9jdW1lbnQuaCIKIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJl
c2VudGF0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJQREZSZXByZXNlbnRhdGlvbi5oIgog
CkBAIC0xNTcsNCArMTU3LDQgQEAgLSAoTlNTdHJpbmcgKil0aXRsZQogCiBAZW5kCiAKLSNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
IDxQREZLaXQvUERGS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViRG9jdW1lbnRJbnRl
cm5hbC5oPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2ltcG9ydCA8QXVkaW9Ub29sYm94L0F1
ZGlvU2Vzc2lvbi5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVzc2Fn
ZS5oPgpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWxG
b3JNYWluQnUKICAgICAgICAgaWYgKCFpc0xpbmtlZEFnYWluc3RXZWJLaXQpCiAgICAgICAgICAg
ICByZXR1cm4gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOyAvLyBBcHBzIHRoYXQgZG9uJ3Qg
bGluayBhZ2FpbnN0IFdlYktpdCBwcm9iYWJseSBhcmVuJ3QgbWVhbnQgdG8gYmUgYnJvd3NlcnMu
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBib29sIGlzTGVnYWN5QXBwID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1Rf
VkVSU0lPTl9XSVRIX0NBQ0hFX01PREVMX0FQSSk7CiAjZWxzZQogICAgICAgICBib29sIGlzTGVn
YWN5QXBwID0gZmFsc2U7CkBAIC0xODAsMTMgKzE4MCwxMyBAQCBwdWJsaWM6CiAgICAgLCBhdXRv
c2F2ZXMoTk8pCiAgICAgLCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwoTk8pCiAgICAg
LCBudW1XZWJWaWV3cygwKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICwgcmVhZFdyaXRlUXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuV2ViUHJlZmVyZW5jZXMuUmVhZFdyaXRlUXVldWUiLCBESVNQQVRDSF9RVUVVRV9DT05DVVJS
RU5UKSkKICNlbmRpZgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB+V2ViUHJlZmVyZW5jZXNQcml2YXRlKCkKICAgICB7CiAg
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UocmVhZFdyaXRlUXVldWUpOwpAQCAtMTk5LDcgKzE5OSw3
IEBAIHB1YmxpYzoKICAgICBCT09MIGF1dG9zYXZlczsKICAgICBCT09MIGF1dG9tYXRpY2FsbHlE
ZXRlY3RzQ2FjaGVNb2RlbDsKICAgICB1bnNpZ25lZCBudW1XZWJWaWV3czsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9xdWV1ZV90IHJl
YWRXcml0ZVF1ZXVlOwogI2VuZGlmCiB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIC0gKHZvaWQpX3Nl
dFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZToodW5zaWcKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylfdW5z
aWduZWRMb25nTG9uZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIEBlbmQKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJQcmVm
ZXJlbmNlcyAoKQogLSAoaWQpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWFuSWRlbnRp
ZmllciBzZW5kQ2hhbmdlTm90aWZpY2F0aW9uOihCT09MKXNlbmRDaGFuZ2VOb3RpZmljYXRpb247
CiBAZW5kCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aElkZW50aWZpZXI6ZmFrZUlkZW50aWZpZXJdOwogfQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZClpbml0V2l0aElk
ZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoSWRlbnRpZmllcjphbklkZW50aWZpZXIgc2VuZENoYW5nZU5vdGlmaWNhdGlvbjpZRVNd
OwogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVu
dGlmaWVyIHNlbmRDaGFuZ2VOb3RpZmljYXRpb246KEJPT0wpc2VuZENoYW5nZU5vdGlmaWNhdGlv
bgogI2Vsc2UKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICop
YW5JZGVudGlmaWVyCkBAIC0yNzQsNyArMjc0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SWRlbnRpZmllcjooTlNTdAogCiAgICAgW3NlbGYgX3VwZGF0ZVByaXZhdGVCcm93c2luZ1N0YXRl
VG86W3NlbGYgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF1dOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHNlbmRDaGFuZ2VOb3RpZmljYXRpb24p
IHsKICAgICAgICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOwog
ICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2VkTm90aWZpY2F0aW9uXTsKQEAgLTM0
MCwxMiArMzQwLDEyIEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2QK
IHsKICAgICBpZiAoW2VuY29kZXIgYWxsb3dzS2V5ZWRDb2RpbmddKXsKICAgICAgICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0Ol9wcml2YXRlLT5pZGVudGlmaWVyLmdldCgpIGZvcktleTpAIklkZW50
aWZpZXIiXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgZGlzcGF0Y2hfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CiAjZW5kaWYK
ICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Ol9wcml2YXRlLT52YWx1ZXMuZ2V0KCkgZm9y
S2V5OkAiVmFsdWVzIl07CiAgICAgICAgIExPRyAoRW5jb2RpbmcsICJJZGVudGlmaWVyID0gJUAs
IFZhbHVlcyA9ICVAXG4iLCBfcHJpdmF0ZS0+aWRlbnRpZmllci5nZXQoKSwgX3ByaXZhdGUtPnZh
bHVlcy5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIH0pOwogI2VuZGlmCiAgICAgfQpAQCAtMzUzLDExICszNTMsMTEgQEAgLSAodm9p
ZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZAogICAgICAgICBpbnQgdmVyc2lvbiA9
IFdlYlByZWZlcmVuY2VzVmVyc2lvbjsKICAgICAgICAgW2VuY29kZXIgZW5jb2RlVmFsdWVPZk9i
akNUeXBlOkBlbmNvZGUoaW50KSBhdDomdmVyc2lvbl07CiAgICAgICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpfcHJpdmF0ZS0+aWRlbnRpZmllci5nZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGRpc3BhdGNoX3N5bmMoX3ByaXZhdGUt
PnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVj
dDpfcHJpdmF0ZS0+dmFsdWVzLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgfSk7CiAjZW5kaWYKICAgICB9CkBAIC0zNjUsNyArMzY1
LDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZAogCiArIChXZWJQ
cmVmZXJlbmNlcyAqKXN0YW5kYXJkUHJlZmVyZW5jZXMKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfc3RhbmRhcmRQcmVmZXJlbmNlcyA9
PSBuaWwpIHsKICAgICAgICAgX3N0YW5kYXJkUHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2Vz
IGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6bmlsXTsKICAgICAgICAgW19zdGFuZGFyZFByZWZl
cmVuY2VzIHNldEF1dG9zYXZlczpZRVNdOwpAQCAtMzg5LDcgKzM4OSw3IEBAICsgKFdlYlByZWZl
cmVuY2VzICopc3RhbmRhcmRQcmVmZXJlbmNlcwogLy8gaWYgd2UgZXZlciBoYXZlIG1vcmUgdGhh
biBvbmUgV2ViUHJlZmVyZW5jZXMgb2JqZWN0LCB0aGlzIHdvdWxkIG1vdmUgdG8gaW5pdAogKyAo
dm9pZClpbml0aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOwpAQCAtNDA2LDEzICs0MDYsMTMgQEAgKyAodm9pZClpbml0aWFs
aXplCiAgICAgICAgIEAiQ291cmllciIsICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rml4ZWRG
b250UHJlZmVyZW5jZUtleSwKICAgICAgICAgQCJUaW1lcyIsICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAIkhlbHZldGljYSIsICAg
ICAgICAgICAgICAgICAgIFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiQXBwbGUg
Q2hhbmNlcnkiLCAgICAgICAgICAgICAgV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5LAog
I2Vsc2UKICAgICAgICAgQCJTbmVsbCBSb3VuZGhhbmQiLCAgICAgICAgICAgICBXZWJLaXRDdXJz
aXZlRm9udFByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQCJQYXB5cnVzIiwgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXksCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiQXBwbGVDb2xvckVt
b2ppIiwgICAgICAgICAgICAgV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5LAogI2Vs
c2UKICAgICAgICAgQCJBcHBsZSBDb2xvciBFbW9qaSIsICAgICAgICAgICBXZWJLaXRQaWN0b2dy
YXBoRm9udFByZWZlcmVuY2VLZXksCkBAIC00MjUsMTIgKzQyNSwxMiBAQCArICh2b2lkKWluaXRp
YWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRVc2Vz
RW5jb2RpbmdEZXRlY3RvclByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDpOT10sICAgV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSwK
ICAgICAgICAgQCIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSwKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAg
IFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVBy
ZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5P
XSwgICBXZWJLaXRTaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0UHJlZmVyZW5jZUtleSwKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEphdmFFbmFibGVkUHJlZmVyZW5jZUtl
eSwKICNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktp
dEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTQzOCw3ICs0MzgsNyBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBX
ZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
ICBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5LAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHlQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sICBXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
UHJlZmVyZW5jZUtleSwKQEAgLTQ0Nyw3ICs0NDcsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXREYXRhYmFzZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
ICBXZWJLaXRIVFRQRXF1aXZFbmFibGVkUHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCAgIFdlYktpdFN0b3JhZ2VUcmFja2VyRW5hYmxlZFByZWZlcmVuY2VLZXksCiAj
ZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRMb2Nh
bFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTQ1NywxMSArNDU3LDExIEBAICsgKHZv
aWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdl
YktpdERpc3BsYXlJbWFnZXNLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpO
T10sICAgV2ViS2l0TG9hZFNpdGVJY29uc0tleSwKICAgICAgICAgQCIxODAwIiwgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5
LAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVu
Y2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBX
ZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgIFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdl
YktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0
UHJlZmVyZW5jZUtleSwKQEAgLTQ3MCw3ICs0NzAsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICNl
bmRpZgogICAgICAgICBAIjAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZVNp
dGVTcGVjaWZpY1Nwb29maW5nUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6V2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yXSwgV2ViS2l0RWRpdGFi
bGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5LAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRl
eHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1
c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgICBXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LApAQCAtNDk4LDcg
KzQ5OCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6REVGQVVMVF9TVUJQSVhFTF9BTlRJQUxJQVNFRF9MQVlFUl9URVhUX0VOQUJMRURdLCBX
ZWJLaXRTdWJwaXhlbEFudGlhbGlhc2VkTGF5ZXJUZXh0RW5hYmxlZFByZWZlcmVuY2VLZXksCiAK
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXREaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFU
Rk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OllFU10sICBXZWJLaXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRDYW52YXNVc2VzQWNj
ZWxlcmF0ZWREcmF3aW5nUHJlZmVyZW5jZUtleSwKICNlbHNlCkBAIC01MTcsNyArNTE3LDcgQEAg
KyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10s
ICBXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TGFyZ2VJbWFnZUFzeW5j
RGVjb2RpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sICBXZWJLaXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5LAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQz
Ml90PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDpzdGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNhYmxlZCld
LCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LApAQCAtNTMzLDcgKzUzMyw3IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSwgIFdlYktpdEFWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWRLZXksCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U3VwcHJlc3Nlc0luY3JlbWVudGFs
UmVuZGVyaW5nS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXR0YWNobWVu
dEVsZW1lbnRFbmFibGVkXSwgV2ViS2l0QXR0YWNobWVudEVsZW1lbnRFbmFibGVkUHJlZmVyZW5j
ZUtleSwKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6Tk9dLCAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5Q
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdl
YktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlS2V5LApA
QCAtNTY5LDcgKzU2OSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6WUVTXSwgICBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
LAogCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgIFdlYktpdFNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uS2V5LAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShXSVJFTEVTU19UQVJHRVRf
UExBWUJBQ0spCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
QWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5LAogI2VuZGlmCkBAIC01
ODAsNyArNTgwLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OldlYkFsbG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6Tk9dLCAgIFdlYktpdFRlbGVwaG9uZVBhcnNpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6LTFdLCAgICAgIFdlYktpdExheW91dEludGVy
dmFsUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDotMS4w
Zl0sIFdlYktpdE1heFBhcnNlRHVyYXRpb25QcmVmZXJlbmNlS2V5LApAQCAtNjQ5LDcgKzY0OSw3
IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCBXZWJLaXREaXJlY3RvcnlVcGxvYWRFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIFdlYktpdFdlYkFuaW1hdGlvbnNFbmFibGVk
UHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCBXZWJLaXRWaXN1YWxW
aWV3cG9ydEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU10sIFdlYktpdFZpc3VhbFZpZXdwb3J0RW5hYmxlZFByZWZlcmVuY2VL
ZXksCkBAIC02OTMsNyArNjkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEBOTywg
V2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIG5pbF07CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRo
aXMgdmFsdWUgc2hvdWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBpcyBhc3N1bWVkIGluIHRoZSBp
bml0aWFsaXphdGlvbiBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkgYWJvdmUK
ICAgICBBU1NFUlQoa1BERkRpc3BsYXlTaW5nbGVQYWdlQ29udGludW91cyA9PSAxKTsKICNlbmRp
ZgpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKE5TU3RyaW5nICopaWRlbnRpZmllcgogLSAoaWQpX3Zh
bHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogewogICAgIE5TU3RyaW5nICpfa2V5ID0gS0VZKGtl
eSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX19i
bG9jayBpZCBvID0gbmlsOwogICAgIGRpc3BhdGNoX3N5bmMoX3ByaXZhdGUtPnJlYWRXcml0ZVF1
ZXVlLCBeewogICAgICAgICBvID0gW19wcml2YXRlLT52YWx1ZXMuZ2V0KCkgb2JqZWN0Rm9yS2V5
Ol9rZXldOwpAQCAtNzQzLDExICs3NDMsMTEgQEAgLSAodm9pZClfc2V0U3RyaW5nVmFsdWU6KE5T
U3RyaW5nICopdmFsdQogICAgIGlmIChbW3NlbGYgX3N0cmluZ1ZhbHVlRm9yS2V5OmtleV0gaXNF
cXVhbFRvU3RyaW5nOnZhbHVlXSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TU3RyaW5nICpfa2V5
ID0gS0VZKGtleSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9wcml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsK
ICNlbmRpZgogICAgIFtfcHJpdmF0ZS0+dmFsdWVzLmdldCgpIHNldE9iamVjdDp2YWx1ZSBmb3JL
ZXk6X2tleV07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgfSk7CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKQEAgLTc2NiwxMSAr
NzY2LDExIEBAIC0gKHZvaWQpX3NldEludGVnZXJWYWx1ZTooaW50KXZhbHVlIGZvcksKICAgICBp
ZiAoW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTprZXldID09IHZhbHVlKQogICAgICAgICByZXR1
cm47CiAgICAgTlNTdHJpbmcgKl9rZXkgPSBLRVkoa2V5KTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMoX3ByaXZh
dGUtPnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgW19wcml2YXRlLT52YWx1ZXMuZ2V0
KCkgc2V0T2JqZWN0OkAodmFsdWUpIGZvcktleTpfa2V5XTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJpdmF0
ZS0+YXV0b3NhdmVzKQpAQCAtNzg5LDExICs3ODksMTEgQEAgLSAodm9pZClfc2V0VW5zaWduZWRJ
bnRWYWx1ZToodW5zaWduZWQgaQogICAgIGlmIChbc2VsZiBfdW5zaWduZWRJbnRWYWx1ZUZvcktl
eTprZXldID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgTlNTdHJpbmcgKl9rZXkgPSBL
RVkoa2V5KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMoX3ByaXZhdGUtPnJlYWRXcml0ZVF1ZXVlLCBeewogI2Vu
ZGlmCiAgICAgW19wcml2YXRlLT52YWx1ZXMuZ2V0KCkgc2V0T2JqZWN0OkAodmFsdWUpIGZvcktl
eTpfa2V5XTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJpdmF0ZS0+YXV0b3NhdmVzKQpAQCAtODEyLDExICs4
MTIsMTEgQEAgLSAodm9pZClfc2V0RmxvYXRWYWx1ZTooZmxvYXQpdmFsdWUgZm9ySwogICAgIGlm
IChbc2VsZiBfZmxvYXRWYWx1ZUZvcktleTprZXldID09IHZhbHVlKQogICAgICAgICByZXR1cm47
CiAgICAgTlNTdHJpbmcgKl9rZXkgPSBLRVkoa2V5KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMoX3ByaXZhdGUt
PnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgW19wcml2YXRlLT52YWx1ZXMuZ2V0KCkg
c2V0T2JqZWN0OkAodmFsdWUpIGZvcktleTpfa2V5XTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJpdmF0ZS0+
YXV0b3NhdmVzKQpAQCAtODM0LDExICs4MzQsMTEgQEAgLSAodm9pZClfc2V0Qm9vbFZhbHVlOihC
T09MKXZhbHVlIGZvcktleQogICAgIGlmIChbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OmtleV0gPT0g
dmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICBOU1N0cmluZyAqX2tleSA9IEtFWShrZXkpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNo
X2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CiAjZW5kaWYKICAgICBb
X3ByaXZhdGUtPnZhbHVlcy5nZXQoKSBzZXRPYmplY3Q6QCh2YWx1ZSkgZm9yS2V5Ol9rZXldOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIH0pOwogI2Vu
ZGlmCiAgICAgaWYgKF9wcml2YXRlLT5hdXRvc2F2ZXMpCkBAIC04NTcsMTEgKzg1NywxMSBAQCAt
ICh2b2lkKV9zZXRMb25nTG9uZ1ZhbHVlOihsb25nIGxvbmcpdmFsCiAgICAgaWYgKFtzZWxmIF9s
b25nTG9uZ1ZhbHVlRm9yS2V5OmtleV0gPT0gdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICBO
U1N0cmluZyAqX2tleSA9IEtFWShrZXkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdy
aXRlUXVldWUsIF57CiAjZW5kaWYKICAgICBbX3ByaXZhdGUtPnZhbHVlcy5nZXQoKSBzZXRPYmpl
Y3Q6QCh2YWx1ZSkgZm9yS2V5Ol9rZXldOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIH0pOwogI2VuZGlmCiAgICAgaWYgKF9wcml2YXRlLT5hdXRvc2F2
ZXMpCkBAIC04ODAsMTEgKzg4MCwxMSBAQCAtICh2b2lkKV9zZXRVbnNpZ25lZExvbmdMb25nVmFs
dWU6KHVuc2lnCiAgICAgaWYgKFtzZWxmIF91bnNpZ25lZExvbmdMb25nVmFsdWVGb3JLZXk6a2V5
XSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TU3RyaW5nICpfa2V5ID0gS0VZKGtl
eSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlz
cGF0Y2hfYmFycmllcl9zeW5jKF9wcml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKICNlbmRpZgog
ICAgIFtfcHJpdmF0ZS0+dmFsdWVzLmdldCgpIHNldE9iamVjdDpAKHZhbHVlKSBmb3JLZXk6X2tl
eV07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfSk7
CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKQEAgLTEwMDIsNyArMTAwMiw3
IEBAIC0gKHZvaWQpc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWU6KE5TU3QKICAgICBbc2VsZiBf
c2V0U3RyaW5nVmFsdWU6IGVuY29kaW5nIGZvcktleTogV2ViS2l0RGVmYXVsdFRleHRFbmNvZGlu
Z05hbWVQcmVmZXJlbmNlS2V5XTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChCT09MKXVzZXJTdHlsZVNoZWV0RW5hYmxlZAogewogICAgIHJl
dHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJsZWRQ
cmVmZXJlbmNlS2V5XTsKQEAgLTEwNzMsOSArMTA3Myw5IEBAIC0gKHZvaWQpc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbjooTlNVUkwKIHsKICAgICAvLyBuby1vcAogfQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpc2hvdWxkUHJpbnRCYWNr
Z3JvdW5kcwogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRTaG91
bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleV07CkBAIC0xMTY3LDcgKzExNjcsNyBAQCAt
IChCT09MKWF1dG9zYXZlcwogICAgIHJldHVybiBfcHJpdmF0ZS0+YXV0b3NhdmVzOwogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2V0
VGFic1RvTGlua3M6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcg
Zm9yS2V5OiBXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleV07CkBAIC0xMjI1LDcgKzEyMjUs
NyBAQCAtIChCT09MKXVzZXNQYWdlQ2FjaGUKIAogLSAodm9pZClfcG9zdENhY2hlTW9kZWxDaGFu
Z2VkTm90aWZpY2F0aW9uCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKSB7CiAgICAgICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpfY21kIHdpdGhPYmplY3Q6bmlsIHdhaXRVbnRpbERv
bmU6Tk9dOwogICAgICAgICByZXR1cm47CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCAtICh2b2lkKXNl
dFhTU0F1ZGl0b3JFbmFibGVkOihCT09MKWZsYWcKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9PTClyZXNw
ZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29s
VmFsdWVGb3JLZXk6V2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZl
cmVuY2VLZXldOwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgLSAodm9pZClzZXRUZXh0QXJlYXNBcmVS
ZXNpemFibGU6KEJPT0wpZgogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5
OiBXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5XTsKIH0KLSNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChC
T09MKXNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQKIHsKQEAgLTE1MzQsNyArMTUzNCw3IEBA
IC0gKE5TVGltZUludGVydmFsKV9iYWNrRm9yd2FyZENhY2hlRXhwaXIKICAgICByZXR1cm4gKE5T
VGltZUludGVydmFsKVtzZWxmIF9mbG9hdFZhbHVlRm9yS2V5OldlYktpdEJhY2tGb3J3YXJkQ2Fj
aGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXldOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9zdGFuZGFsb25lCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0U3RhbmRhbG9uZVByZWZlcmVuY2VLZXldOwpAQCAt
MTU3OCw3ICsxNTc4LDcgQEAgLSAoQk9PTClfdGV4dEF1dG9zaXppbmdFbmFibGVkCiB9CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9p
ZClfc2V0TGF5b3V0SW50ZXJ2YWw6KGludClsCiB7CiAgICAgW3NlbGYgX3NldEludGVnZXJWYWx1
ZTpsIGZvcktleTpXZWJLaXRMYXlvdXRJbnRlcnZhbFByZWZlcmVuY2VLZXldOwpAQCAtMTY0OSw5
ICsxNjQ5LDkgQEAgLSAoZmxvYXQpX3Bhc3N3b3JkRWNob0R1cmF0aW9uCiAgICAgcmV0dXJuIFtz
ZWxmIF9mbG9hdFZhbHVlRm9yS2V5OldlYktpdFBhc3N3b3JkRWNob0R1cmF0aW9uUHJlZmVyZW5j
ZUtleV07CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAtIChmbG9hdClQREZTY2FsZUZhY3RvcgogewogICAgIHJldHVybiBbc2VsZiBfZmxvYXRW
YWx1ZUZvcktleTpXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXldOwpAQCAtMTY4Niw3
ICsxNjg2LDcgQEAgLSAodm9pZClzZXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpbgogICAg
IFtzZWxmIF9zZXRMb25nTG9uZ1ZhbHVlOnF1b3RhIGZvcktleTpXZWJLaXRBcHBsaWNhdGlvbkNh
Y2hlRGVmYXVsdE9yaWdpblF1b3RhXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAtIChQREZEaXNwbGF5TW9kZSlQREZEaXNwbGF5TW9kZQogewog
ICAgIFBERkRpc3BsYXlNb2RlIHZhbHVlID0gc3RhdGljX2Nhc3Q8UERGRGlzcGxheU1vZGU+KFtz
ZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5
XSk7CkBAIC0xNzYwLDcgKzE3NjAsNyBAQCAtICh2b2lkKXNldERhdGFiYXNlc0VuYWJsZWQ6KEJP
T0wpZGF0YWJhCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpkYXRhYmFzZXNFbmFibGVkIGZvcktl
eTpXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpc3RvcmFnZVRyYWNrZXJF
bmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0U3RvcmFn
ZVRyYWNrZXJFbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0xODMxLDcgKzE4MzEsNyBAQCArICh2
b2lkKV9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOihOCiAKIC0gKHZvaWQpX3Bvc3RQcmVm
ZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24KIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpIHsKICAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOl9jbWQgd2l0aE9iamVjdDpuaWwg
d2FpdFVudGlsRG9uZTpOT107CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzQsNyArMTg3NCw3IEBA
ICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmkKIAogKyAodm9pZClfc3dp
dGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYK
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsK
QEAgLTIzMjIsNyArMjMyMiw3IEBAIC0gKHZvaWQpc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW4KICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OiBXZWJLaXRFbmFibGVJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9PTCltZWRpYVBsYXliYWNrQWxs
b3dzQWlyUGxheQogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFs
bG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtleV07CkBAIC0yNDA0LDcgKzI0
MDQsNyBAQCAtICh2b2lkKXNldE5ldHdvcmtJbnRlcmZhY2VOYW1lOihOU1N0cmluCiB7CiAgICAg
W3NlbGYgX3NldFN0cmluZ1ZhbHVlOm5hbWUgZm9yS2V5OldlYktpdE5ldHdvcmtJbnRlcmZhY2VO
YW1lUHJlZmVyZW5jZUtleV07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIERlcHJlY2F0ZWQuIFVzZSAtdmlkZW9QbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUgYW5kIC1hdWRpb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVy
ZSBpbnN0ZWFkLgogLSAoQk9PTCltZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZQpAQCAt
MjUzOSw3ICsyNTM5LDcgQEAgLSAodm9pZClzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnM6KEJP
TwogCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KHZvaWQpX2ludmFsaWRhdGVDYWNoZWRQcmVmZXJlbmNlcwogewogICAgIGRpc3BhdGNoX2JhcnJp
ZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CkBAIC0yNjgyLDcgKzI2ODIsNyBA
QCAtICh2b2lkKXNldERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZDooQk9PCiAKIC0gKHZvaWQpc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFnZUJs
b2NraW5nUG9saWN5CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB3cml0ZSB0aGUgc2V0dGluZyBvdXQsIHNvIHdl
IGp1c3QgcmVzZXQgdGhlIGRlZmF1bHQgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBuZXcgc2V0dGlu
Zy4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHJlbW92ZXMgYW55IGRlZmF1bHRzIHByZXZpb3Vz
bHkgcmVnaXN0ZXJlZCBieSBjbGllbnQgcHJvY2Vzcywgd2hpY2ggaXMgbm90IGFwcHJvcHJpYXRl
IGZvciB0aGlzIG1ldGhvZCB0byBkby4KICAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OnN0b3Jh
Z2VCbG9ja2luZ1BvbGljeV0gZm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleV07
CkBAIC0zMjE3LDcgKzMyMTcsNyBAQCAtICh2b2lkKXNldE1lZGlhVXNlckdlc3R1cmVJbmhlcml0
c0Zyb21ECiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRNZWRpYVVz
ZXJHZXN0dXJlSW5oZXJpdHNGcm9tRG9jdW1lbnRdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKXF1aWNrTG9va0RvY3VtZW50U2F2aW5n
RW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdFF1aWNr
TG9va0RvY3VtZW50U2F2aW5nUHJlZmVyZW5jZUtleV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDcgKzY2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29yZVJlc291
cmNlOihSZQogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0zMzQsNyArMzM0LDcgQEAgLSAo
TlNTdHJpbmcgKilfc3VnZ2VzdGVkRmlsZW5hbWUKICAgICByZXR1cm4gc3VnZ2VzdGVkRmlsZW5h
bWU7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoTlNGaWxlV3JhcHBlciAqKV9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uCiB7CiAgICAgTlNG
aWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpbc2VsZiBkYXRhXV0gYXV0b3JlbGVhc2VdOwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21w
bGV0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGNsYXNzIFdlYlZpZXc7CiBA
Y2xhc3MgV2ViSFRNTFZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlRleHRJdGVyYXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgQGludGVyZmFjZSBXZWJUZXh0SXRlcmF0b3JQcml2YXRlIDog
TlNPYgogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3
ICsyNDMsNyBAQAogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9k
YXJ3aW4vZHlsZFNQSS5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5oIgpAQCAtMzA1LDcgKzMwNSw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViSW5kaWNhdGVM
YXllci5oIgogI2VuZGlmCiAjZW5kaWYKQEAgLTMyMiw3ICszMjIsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvV2ViTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5oPgogI2VuZGlmCkBAIC0zNjIsNyArMzYyLDcgQEAgU09GVF9MSU5LX0NM
QVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KExvb2t1cCwgTFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlLCBOU1N0cmluZyAqKQogI2Vu
ZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBA
aW50ZXJmYWNlIE5TU3BlbGxDaGVja2VyIChXZWJOU1NwZWxsQ2hlY2tlckRldGFpbHMpCiAtICh2
b2lkKV9wcmVmbGlnaHRDaG9zZW5TcGVsbFNlcnZlcjsKQEAgLTUzNCw3ICs1MzQsNyBAQCBfUHJh
Z21hKCJjbGFuZyBkaWFnbm9zdGljIHBvcCIpIFwKIHN0YXRpYyBCT09MIHNfZGlkU2V0Q2FjaGVN
b2RlbDsKIHN0YXRpYyBXZWJDYWNoZU1vZGVsIHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxE
b2N1bWVudFZpZXdlcjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogc3RhdGljIENsYXNzIHNfcGRmUmVwcmVzZW50YXRpb25DbGFzczsKIHN0YXRpYyBDbGFz
cyBzX3BkZlZpZXdDbGFzczsKICNlbmRpZgpAQCAtNTQzLDIwICs1NDMsMjAgQEAgc3RhdGljIENs
YXNzIHNfcGRmVmlld0NsYXNzOwogc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3BlbltdID0g
IkF0IGxlYXN0IG9uZSBXZWJWaWV3IGlzIHN0aWxsIG9wZW4uIjsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIFdlYlZpZXco
V2ViVmlld1ByaXZhdGUpCiAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVu
Y2VzICopcHJlZmVyZW5jZXM7CiAtICh2b2lkKV91cGRhdGVTY3JlZW5TY2FsZUZyb21XaW5kb3c7
CiBAZW5kCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkK
IC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5T
VmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW07CiBAZW5kCiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGNsYXNzIF9XZWJTYWZlRm9y
d2FyZGVyOwogCiBAaW50ZXJmYWNlIF9XZWJTYWZlQXN5bmNGb3J3YXJkZXIgOiBOU09iamVjdCB7
CkBAIC01NzAsMTMgKzU3MCwxMyBAQCBAaW50ZXJmYWNlIF9XZWJTYWZlRm9yd2FyZGVyIDogTlNP
YmplY3QKIHsKICAgICBpZCB0YXJnZXQ7IC8vIE5vbi1yZXRhaW5lZC4gRG9uJ3QgcmV0YWluIGRl
bGVnYXRlcy4KICAgICBpZCBkZWZhdWx0VGFyZ2V0OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIF9XZWJTYWZlQXN5bmNGb3J3YXJkZXIgKmFzeW5jRm9y
d2FyZGVyOwogICAgIGRpc3BhdGNoX29uY2VfdCBhc3luY0ZvcndhcmRlclByZWQ7CiAjZW5kaWYK
IH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFRhcmdldDooaWQpdGFyZ2V0IGRlZmF1bHRUYXJn
ZXQ6KGlkKWRlZmF1bHRUYXJnZXQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtICh2b2lkKWNsZWFyVGFyZ2V0OwogLSAoaWQpYXN5bmNGb3J3YXJkZXI7CiAj
ZW5kaWYKQEAgLTc2MCw3ICs3NjAsNyBAQCBOU1N0cmluZyAqV2ViRWxlbWVudElzQ29udGVudEVk
aXRhYmxlS2V5CiAKIE5TU3RyaW5nICpXZWJWaWV3UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9u
ID0gICAgICAgICAgQCJXZWJQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24iOwogTlNTdHJpbmcg
KldlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiA9ICBAIldlYlByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uIjsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNTdHJpbmcgKldlYlZpZXdQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uID0gICAgICAgICBAIldlYlByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24i
OwogI2Vsc2UKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1Byb2dyZXNzRXN0aW1hdGVkUHJvZ3Jl
c3NLZXkgPSBAIldlYlByb2dyZXNzRXN0aW1hdGVkUHJvZ3Jlc3NLZXkiOwpAQCAtNzc5LDcgKzc3
OSw3IEBAIGVudW0geyBXZWJWaWV3VmVyc2lvbiA9IDQgfTsKIAogc3RhdGljIE5TTXV0YWJsZVNl
dCAqc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXkgPSAg
ICAgICAgICAgIEAiY2FuR29CYWNrIjsKIE5TU3RyaW5nICpfV2ViQ2FuR29Gb3J3YXJkS2V5ID0g
ICAgICAgICBAImNhbkdvRm9yd2FyZCI7CiBOU1N0cmluZyAqX1dlYkVzdGltYXRlZFByb2dyZXNz
S2V5ID0gICAgQCJlc3RpbWF0ZWRQcm9ncmVzcyI7CkBAIC03OTAsNyArNzkwLDcgQEAgTlNTdHJp
bmcgKl9XZWJNYWluRnJhbWVVUkxLZXkgPSAgICAgICAgIAogTlNTdHJpbmcgKl9XZWJNYWluRnJh
bWVEb2N1bWVudEtleSA9ICAgIEAibWFpbkZyYW1lRG9jdW1lbnQiOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE5TU3RyaW5nICpXZWJRdWlj
a0xvb2tGaWxlTmFtZUtleSA9IEAiV2ViUXVpY2tMb29rRmlsZU5hbWVLZXkiOwogTlNTdHJpbmcg
KldlYlF1aWNrTG9va1VUSUtleSAgICAgID0gQCJXZWJRdWlja0xvb2tVVElLZXkiOwogI2VuZGlm
CkBAIC04MTYsNyArODE2LDcgQEAgQGludGVyZmFjZSBXZWJQcm9ncmVzc0l0ZW0gOiBOU09iamVj
dAogCiBzdGF0aWMgQk9PTCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ7CiBzdGF0aWMg
Qk9PTCBpY29uTG9hZGluZ0VuYWJsZWQgPSBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7
CiBzdGF0aWMgQk9PTCBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ7CiBzdGF0aWMg
Qk9PTCBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKQEAgLTEwOTksNyArMTA5OSw3IEBA
IC0gKE5TVmlld0NvbnRyb2xsZXIgKil0ZXh0TGlzdFZpZXdDb250cm8KICNlbmRpZiAvLyBIQVZF
KFRPVUNIX0JBUikKIAogQGludGVyZmFjZSBXZWJWaWV3ICgpCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV93YWtXaW5kb3dTY3JlZW5TY2FsZUNo
YW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwogLSAodm9pZClfd2FrV2luZG93
VmlzaWJpbGl0eUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwogI2Vsc2UK
QEAgLTExNTEsNyArMTE1MSw3IEBAICsgKE5TU3RyaW5nICopX3N0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGwKICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGFw
cGxpY2F0aW9uTmFtZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKHZvaWQpX3NldEJyb3dzZXJVc2VyQWdlbnRQcm9kdWN0VmVyc2lvbjooTlNT
dHJpbmcgKilwcm9kdWN0VmVyc2lvbiBidWlsZFZlcnNpb246KE5TU3RyaW5nICopYnVpbGRWZXJz
aW9uIGJ1bmRsZVZlcnNpb246KE5TU3RyaW5nICopYnVuZGxlVmVyc2lvbgogewogICAgIFtzZWxm
IHNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIlZlcnNpb24vJUAgTW9iaWxlLyVAIFNhZmFyaS8lQCIsIHByb2R1Y3RWZXJzaW9uLCBidWls
ZFZlcnNpb24sIGJ1bmRsZVZlcnNpb25dXTsKQEAgLTExNjEsNyArMTE2MSw3IEBAIC0gKHZvaWQp
X3NldFVJV2ViVmlld1VzZXJBZ2VudFdpdGhCdWlsZFYKIHsKICAgICBbc2VsZiBzZXRBcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ6W0AiTW9iaWxlLyIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
YnVpbGRWZXJzaW9uXV07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICsgKHZvaWQpX3JlcG9ydEV4Y2VwdGlvbjooSlNWYWx1ZVJl
ZilleGNlcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHRSZWYpY29udGV4dAogewpAQCAtMTE4MSw3
ICsxMTgxLDcgQEAgKyAodm9pZClfcmVwb3J0RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4YwogCiBz
dGF0aWMgYm9vbCBzaG91bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAg
ICAgcmV0dXJuICFNYWNBcHBsaWNhdGlvbjo6aXNBZG9iZUluc3RhbGxlcigpOwpAQCAtMTE5MCw3
ICsxMTkwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZygpCiAKIHN0
YXRpYyBib29sIHNob3VsZFJlc3RyaWN0V2luZG93Rm9jdXMoKQogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAg
ICByZXR1cm4gIU1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKTsKQEAgLTEyMDIsNyArMTIwMiw3
IEBAIC0gKHZvaWQpX2Rpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cwogICAgIHdlYlJlc291cmNl
TG9hZFNjaGVkdWxlcigpLnNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9yZWdpc3RlckRy
YWdnZWRUeXBlcwogewpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgLSh2b2lkKV9pbmplY3RPdXRsb29r
UXVpcmtzU2NyaXB0CiAKIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0
cmlidXRlU2V0dGVycygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBzdGF0aWMgYm9vbCBpc0lBZFBy
b2R1Y2VyTmVlZGluZ0F0dHJpYnV0ZVNldHRlclF1aXJrID0gIVdlYktpdExpbmtlZE9uT3JBZnRl
cihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklO
R19QUklPUklUWSkKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3Bl
Y3RQcmlvcml0eUluQ1NTQXQKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0ludGVybmFsSW5zdGFsbCgpCiB7CiAg
ICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IE1HR2V0Qm9vbEFuc3dlcihrTUdRQXBwbGVJbnRl
cm5hbEluc3RhbGxDYXBhYmlsaXR5KTsKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHN0YXRpYyBib29s
IGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IGYKIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJWkVfU0hP
UlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNp
b25zKCkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RGlzcGxh
eUFuZFJ1bm5pbmcKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVk
aWFQbGF5YmFjaygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5
YmFjayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX0lPU19WRVJTSU9O
XzlfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFj
azsKICNlbHNlCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1Bp
Y3R1cmVJblBpY3R1cmVNCiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvY29sID0gIVdlYktp
dExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0NPTlRFTlRfU0VDVVJJ
VFlfUE9MSUNZX1NPVVJDRV9TVEFSX1BST1RPQ09MX1JFU1RSSUNUSU9OKTsKICAgICByZXR1cm4g
c2hvdWxkQWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3Rv
Y29sOwogI2Vsc2UKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93
Q29udGVudFNlY3VyaXR5UG8KIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dXaW5kb3dPcGVuV2l0
aG91dFVzZXJHZXN0dXJlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1dpbmRvd09wZW5XaXRob3V0VXNl
ckdlc3R1cmUgPSBJT1NBcHBsaWNhdGlvbjo6aXNUaGVTZWNyZXRTb2NpZXR5SGlkZGVuTXlzdGVy
eSgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05f
MTBfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dXaW5kb3dPcGVuV2l0aG91dFVzZXJHZXN0dXJl
OwogI2Vsc2UKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93V2lu
ZG93T3BlbldpdGhvdXQKIAogc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9C
bGFuaygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9CbGFuayA9IGR5bGRfZ2V0
X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX0lPU19WRVJTSU9OXzEwXzA7CiAjZWxpZiBQ
TEFURk9STShNQUMpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9C
bGFuayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX01BQ09TWF9WRVJT
SU9OXzEwXzEyOwpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVy
dEludmFsaWRVUkxzVG9CbAogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXF1aXJlVXNlckdlc3R1cmVU
b0xvYWRWaWRlbygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8g
PSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl8xMF8w
OwogICAgIHJldHVybiBzaG91bGRSZXF1aXJlVXNlckdlc3R1cmVUb0xvYWRWaWRlbzsKICNlbHNl
CkBAIC0xMzU5LDcgKzEzNTksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3N0YW5kYXJkUHJlZmVyZW5jZXMg
cmV0YWluXTsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAg
IF9wcml2YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0g
W1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV0gcmV0YWluXTsKICNlbHNl
CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dD
b2xvcihDb2xvcjo6d2hpdGUpKTsKQEAgLTEzODYsNyArMTM4Niw3IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKIAogICAgIFtzZWxmIHVwZGF0ZVRvdWNoQmFyXTsK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3Rh
dGljIGJvb2wgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gZmFsc2U7CiAjZW5kaWYKICAgICBp
ZiAoIWRpZE9uZVRpbWVJbml0aWFsaXphdGlvbikgewpAQCAtMTQwMSw3ICsxNDAxLDcgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogCiAgICAgICAgIGluaXRpYWxp
emVET01XcmFwcGVySG9va3MoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAvLyBTZXQgdGhlIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC4KICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoJldlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KCkpOwogCkBAIC0xNDA5LDcgKzE0MDksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hCiAjZW5kaWYKICAgICAgICAgW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFy
ZWRXZWJEYXRhYmFzZU1hbmFnZXJdOwogCi0jaWYgUExBVEZPUk0oSU9TKSAgICAgICAgCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgICAgICAgIAogICAgICAgICBpZiAoW3N0YW5kYXJkUHJlZmVy
ZW5jZXMgc3RvcmFnZVRyYWNrZXJFbmFibGVkXSkKICNlbmRpZgogICAgICAgICBXZWJLaXRJbml0
aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDIyLDcgKzE0MjIsNyBAQCAtICh2b2lk
KV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjZW5kaWYKICAgICAgICAgRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0
ZVNldHRlcnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
IChJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIERlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1
ZSk7CiAjZW5kaWYKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aEZyYW1lTmEKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6
OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKQogICAgICk7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRN
ZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMgb24g
aU9TIGFzIHdlbGwuCkBAIC0xNDc5LDcgKzE0NzksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hCiAgICAgV2ViQ29yZTo6cHJvdmlkZU5vdGlmaWNhdGlvbihfcHJp
dmF0ZS0+cGFnZSwgbmV3IFdlYk5vdGlmaWNhdGlvbkNsaWVudChzZWxmKSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9u
VG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChzZWxmKSk7
CiAjZW5kaWYKICNlbmRpZgpAQCAtMTQ5MiwxOCArMTQ5MiwxOCBAQCAtICh2b2lkKV9jb21tb25J
bml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNlc10gX2xvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFVz
ZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ioc2hvdWxkVXNlTGVnYWN5QmFj
a2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG5lZWRzT3V0bG9va1F1aXJrc1Njcmlw
dCgpKSB7CiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCh0cnVlKTsKICAgICAgICAgW3NlbGYg
X2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdOwogICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0UGFzc2l2ZVRvdWNoTGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVudChsaW5r
ZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RUaGF0RGVmYXVsdHNUb1Bhc3NpdmVUb3VjaExp
c3RlbmVyc09uRG9jdW1lbnQpKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gUHJlc2VydmUgdGhlIGJlaGF2aW9yIHdlIGhhZCBi
ZWZvcmUgPHJkYXI6Ly9wcm9ibGVtLzc1ODA4Njc+CiAgICAgLy8gYnkgZW5mb3JjaW5nIGEgNU1C
IGxpbWl0IGZvciBzZXNzaW9uIHN0b3JhZ2UuCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YSg1ICogMTAyNCAqIDEwMjQpOwpAQCAtMTUyMiw3ICsx
NTIyLDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogCiAgICAg
W1dlYkZyYW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoUGFnZTpfcHJpdmF0ZS0+cGFnZSBmcmFtZU5h
bWU6ZnJhbWVOYW1lIGZyYW1lVmlldzpmcmFtZVZpZXddOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhy
ZWFkTlNSdW5Mb29wKCk7CiAjZWxzZQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFtOU1J1bkxv
b3AgbWFpblJ1bkxvb3BdOwpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgLSAodm9pZClfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIGlmIChbW3NlbGYgY2xhc3NdIHNob3VsZEluY2x1
ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICArK1dlYlZpZXdDb3VudDsKIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3NlbGYgX3JlZ2lz
dGVyRHJhZ2dlZFR5cGVzXTsKICNlbmRpZgogCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCAtICh2b2lk
KV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihf
cHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOldlYlByZWZlcmVuY2VzQ2hhbmdlZEludGVy
bmFsTm90aWZpY2F0aW9uIG9iamVjdDpwcmVmc107CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtzZWxmIF9wcmVmZXJlbmNlc0NoYW5nZWQ6W3Nl
bGYgcHJlZmVyZW5jZXNdXTsKICAgICBbW3NlbGYgcHJlZmVyZW5jZXNdIF9wb3N0UHJlZmVyZW5j
ZXNDaGFuZ2VkQVBJTm90aWZpY2F0aW9uXTsKICNlbHNlCkBAIC0xNTY5LDcgKzE1NjksNyBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKICAgICBXZWJJbnN0YWxs
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9G
SVJTVF9WRVJTSU9OX1dJVEhfTE9DQUxfUkVTT1VSQ0VfU0VDVVJJVFlfUkVTVFJJQ1RJT04pKSB7
CiAgICAgICAgIC8vIE9yaWdpbmFsbHksIHdlIGFsbG93ZWQgYWxsIGxvY2FsIGxvYWRzLgogICAg
ICAgICBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5UG9saWN5OjpB
bGxvd0xvY2FsTG9hZHNGb3JBbGwpOwpAQCAtMTYyOSw3ICsxNjI5LDcgQEAgKyAoTlNBcnJheSAq
KV9zdXBwb3J0ZWRNSU1FVHlwZXMKICAgICByZXR1cm4gW1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBl
c0FsbG93SW1hZ2VUeXBlT21pc3Npb246Tk9dIGFsbEtleXNdOwogfQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsgKE5TQXJyYXkgKilfc3VwcG9ydGVk
RmlsZUV4dGVuc2lvbnMKIHsKICAgICBOU011dGFibGVTZXQgKmV4dGVuc2lvbnMgPSBbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdF07CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCArIChOU0FycmF5ICop
X3N1cHBvcnRlZEZpbGVFeHRlbnNpb25zCiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZCllbmFibGVXZWJUaHJlYWQKIHsKICAg
ICBzdGF0aWMgQk9PTCBpc1dlYlRocmVhZEVuYWJsZWQgPSBOTzsKQEAgLTE4MTUsNyArMTgxNSw3
IEBAIC0gKHZvaWQpdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlU2gKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogCkBAIC0yMDE5LDcgKzIwMTksNyBAQCAtIChDR1JlY3QpX2RhdGFJ
bnRlcmFjdGlvbkNhcmV0UmVjdAogfQogCiAjZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIE5TTXV0YWJsZVNldCAq
a25vd25QbHVnaW5NSU1FVHlwZXMoKQogewpAQCAtMjA0NiwxMSArMjA0NiwxMSBAQCArIChCT09M
KV92aWV3Q2xhc3M6KENsYXNzICopdkNsYXNzIGFuZFJlCiAgICAgQ2xhc3Mgdmlld0NsYXNzID0g
W1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXSBfd2Vi
a2l0X29iamVjdEZvck1JTUVUeXBlOk1JTUVUeXBlXTsKICAgICBDbGFzcyByZXBDbGFzcyA9IFtb
V2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOllFU10gX3dlYmtp
dF9vYmplY3RGb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgV2ViUERGVmlldyAoW1dlYlZpZXcgX2dldFBE
RlZpZXdDbGFzc10pCiAjZW5kaWYKICAgICBpZiAoIXZpZXdDbGFzcyB8fCAhcmVwQ2xhc3MgfHwg
W1tXZWJQREZWaWV3IHN1cHBvcnRlZE1JTUVUeXBlc10gY29udGFpbnNPYmplY3Q6TUlNRVR5cGVd
KSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjdW5kZWYg
V2ViUERGVmlldwogI2VuZGlmCiAgICAgICAgIC8vIE91ciBvcHRpbWl6YXRpb24gdG8gYXZvaWQg
bG9hZGluZyB0aGUgcGx1Zy1pbiBEQiBhbmQgaW1hZ2UgdHlwZXMgZm9yIHRoZSBIVE1MIGNhc2Ug
ZmFpbGVkLgpAQCAtMjA5NSw3ICsyMDk1LDcgQEAgLSAoQk9PTClfdmlld0NsYXNzOihDbGFzcyAq
KXZDbGFzcyBhbmRSZQogewogICAgIGlmIChbW3NlbGYgY2xhc3NdIF92aWV3Q2xhc3M6dkNsYXNz
IGFuZFJlcHJlc2VudGF0aW9uQ2xhc3M6ckNsYXNzIGZvck1JTUVUeXBlOk1JTUVUeXBlIGFsbG93
aW5nUGx1Z2luczpbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGFyZVBsdWdJbnNFbmFibGVkXV0pCiAg
ICAgICAgIHJldHVybiBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKSB7CiAgICAgICAgIFdl
YkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlID0gW19wcml2YXRlLT5wbHVnaW5EYXRh
YmFzZSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAgICAgICAgIGlmIChwbHVnaW5QYWNr
YWdlKSB7CkBAIC0yMTM0LDcgKzIxMzQsNyBAQCArIChCT09MKWNhblNob3dGaWxlOihOU1N0cmlu
ZyAqKXBhdGgKICAgICByZXR1cm4gW1tzZWxmIGNsYXNzXSBjYW5TaG93TUlNRVR5cGU6W1dlYlZp
ZXcgX01JTUVUeXBlRm9yRmlsZTpwYXRoXV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogKyAoTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlRXh0ZW5z
aW9uRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZQogewogICAgIHJldHVybiBbW05TVVJMRmls
ZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gcHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGU6dHlwZV07CkBAIC0yMTQ2LDcgKzIxNDYsNyBAQCAtIChCT09MKV9pc0Nsb3NlZAogICAgIHJl
dHVybiAhX3ByaXZhdGUgfHwgX3ByaXZhdGUtPmNsb3NlZDsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9kaXNwYXRjaFVubG9hZEV2
ZW50CiB7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCArIChCT09MKV9pc1VuZGVyTWVtb3J5UHJlc3N1
cmUKICAgICByZXR1cm4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9jbG9zZVBsdWdpbkRhdGFiYXNlcwog
ewpAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgLSAodm9pZClfY2xvc2VQbHVnaW5EYXRhYmFzZXMKIAog
ICAgIC8vIENsb3NlIGJvdGggc2V0cyBvZiBwbHVnLWluIGRhdGFiYXNlcyBiZWNhdXNlIHBsdWct
aW5zIG5lZWQgYW4gb3Bwb3J0dW5pdHkgdG8gY2xlYW4gdXAgZmlsZXMsIGV0Yy4KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVW5sb2FkIHRo
ZSBXZWJWaWV3IGxvY2FsIHBsdWctaW4gZGF0YWJhc2UuIAogICAgIGlmIChfcHJpdmF0ZS0+cGx1
Z2luRGF0YWJhc2UpIHsKICAgICAgICAgW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBkZXN0cm95
QWxsUGx1Z2luSW5zdGFuY2VWaWV3c107CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCAtICh2b2lkKV9j
bG9zZVdpdGhGYXN0VGVhcmRvd24gCiAgICAgV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXI6OnN1
cHByZXNzTWVzc2FnZXMoIkF0IGxlYXN0IG9uZSBXZWJWaWV3IHdhcyBjbG9zZWQgd2l0aCBmYXN0
IHRlYXJkb3duLiIpOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRpZgogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CkBAIC0yMzAx
LDcgKzIzMDEsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoCiAv
LyBwdWJsaWMgbWV0aG9kIC1jbG9zZSBpbnN0ZWFkLgogLSAodm9pZClfY2xvc2UKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBbHdheXMgY2xl
YXIgZGVsZWdhdGVzIG9uIGNhbGxpbmcgdGhyZWFkLCBiZWNhc3VlIGNhbGxlciBjYW4gZGVhbGxv
Y2F0ZSBkZWxlZ2F0ZXMgcmlnaHQgYWZ0ZXIgY2FsbGluZyAtY2xvc2UKICAgICAvLyAoYW5kIGNv
dWxkIGluIGZhY3QgYWxyZWFkeSBiZSBpbiBkZWxlZ2F0ZSdzIC1kZWFsbG9jIG1ldGhvZCwgYXMg
c2VlbiBpbiA8cmRhcjovL3Byb2JsZW0vMTE1NDA5NzI+KS4KIApAQCAtMjMzMCwxMSArMjMzMCwx
MSBAQCAtICh2b2lkKV9jbG9zZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxF
KFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgW3NlbGYgX2V4aXRWaWRlb0Z1bGxzY3JlZW5dOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcHJpdmF0
ZS0+Y2xvc2luZyA9IFlFUzsKICNlbmRpZgogCkBAIC0yMzQzLDcgKzIzNDMsNyBAQCAtICh2b2lk
KV9jbG9zZQogCiAgICAgW3NlbGYgc2V0SG9zdFdpbmRvdzpuaWxdOwogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2VsZiBzZXREb3dubG9hZERl
bGVnYXRlOm5pbF07CiAgICAgW3NlbGYgc2V0RWRpdGluZ0RlbGVnYXRlOm5pbF07CiAgICAgW3Nl
bGYgc2V0RnJhbWVMb2FkRGVsZWdhdGU6bmlsXTsKQEAgLTIzNTgsNyArMjM1OCw3IEBAIC0gKHZv
aWQpX2Nsb3NlCiAgICAgW19wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIHdlYlZp
ZXdDbG9zZWRdOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIFRvIGF2b2lkIGxlYWtzLCBjYWxsIHJlbW92ZURyYWdDYXJldCBp
biBjYXNlIGl0IHdhc24ndCBjYWxsZWQgYWZ0ZXIgbW92ZURyYWdDYXJldFRvUG9pbnQuCiAgICAg
W3NlbGYgcmVtb3ZlRHJhZ0NhcmV0XTsKICNlbmRpZgpAQCAtMjM3Miw3ICsyMzcyLDcgQEAgLSAo
dm9pZClfY2xvc2UKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG51bGxwdHI7CiAgICAgV2ViS2l0OjpE
ZWZlcnJlZFBhZ2VEZXN0cnVjdG9yOjpjcmVhdGVEZWZlcnJlZFBhZ2VEZXN0cnVjdG9yKHN0ZDo6
dW5pcXVlX3B0cjxQYWdlPihwYWdlKSk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+aGFzU3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcpIHsKICAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNs
b3NlU3BlbGxEb2N1bWVudFdpdGhUYWc6X3ByaXZhdGUtPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFn
XTsKICAgICAgICAgX3ByaXZhdGUtPmhhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gTk87CkBA
IC0yMzg2LDcgKzIzODYsNyBAQCAtICh2b2lkKV9jbG9zZQogCiAgICAgW1tzZWxmIF9ub3RpZmlj
YXRpb25Qcm92aWRlcl0gdW5yZWdpc3RlcldlYlZpZXc6c2VsZl07CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNEaXN0cmlidXRlZE5vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRp
ZgogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CkBAIC0yNDAwLDcgKzI0MDAsNyBAQCAtICh2b2lkKV9jbG9zZQogCiAgICAgW3Nl
bGYgX2Nsb3NlUGx1Z2luRGF0YWJhc2VzXTsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9wcml2YXRlLT5tX3Bs
YXliYWNrVGFyZ2V0UGlja2VyKSB7CiAgICAgICAgIF9wcml2YXRlLT5tX3BsYXliYWNrVGFyZ2V0
UGlja2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIF9wcml2YXRlLT5tX3BsYXliYWNrVGFyZ2V0
UGlja2VyID0gbnVsbHB0cjsKQEAgLTI0MTQsNyArMjQxNCw3IEBAIC0gKHZvaWQpX2Nsb3NlCiAg
ICAgICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpZRVNdOwogICAgIH0KICNlbmRpZgotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZpeCBmb3IgcHJv
YmxlbXMgc3VjaCBhcyA8cmRhcjovL3Byb2JsZW0vNTc3NDU4Nz4gQ3Jhc2ggY2xvc2luZyB0YWIg
aW4gV2ViQ29yZTo6RnJhbWU6OnBhZ2UoKSBmcm9tIC1bV2ViQ29yZUZyYW1lQnJpZGdlIHBhdXNl
VGltZW91dHNdCiAgICAgfSk7CiAjZW5kaWYgICAgICAgICAgICAKQEAgLTI0MjgsMTIgKzI0Mjgs
MTIgQEAgLSAoQk9PTClfaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUKIAogKyAoTlNTdHJpbmcgKilf
TUlNRVR5cGVGb3JGaWxlOihOU1N0cmluZyAqKXBhdGgKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBbcGF0
aCBwYXRoRXh0ZW5zaW9uXTsKICNlbmRpZgogICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IG5pbDsK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
R2V0IHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLgogICAgIGlmIChbZXh0ZW5zaW9u
IGxlbmd0aF0gIT0gMCkgewogICAgICAgICBNSU1FVHlwZSA9IFtbTlNVUkxGaWxlVHlwZU1hcHBp
bmdzIHNoYXJlZE1hcHBpbmdzXSBNSU1FVHlwZUZvckV4dGVuc2lvbjpleHRlbnNpb25dOwpAQCAt
MjUzOCw3ICsyNTM4LDcgQEAgLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09M
KQogCiAtICh2b2lkKXNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOihCT09MKXNob3dpbmcK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7CiAKICAgICBpZiAoc2hvd2luZykgewpAQCAtMjU1Nywx
MyArMjU1NywxMyBAQCAtICh2b2lkKXNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOihCCiAj
ZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAodm9pZClfc2V0SG9zdEFwcGxpY2F0aW9uUHJvY2Vzc0lkZW50aWZpZXI6KHBpZF90KXBpZCBh
dWRpdFRva2VuOihhdWRpdF90b2tlbl90KWF1ZGl0VG9rZW4KIHsKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBhdWRpdERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3Qg
VUludDgqKSZhdWRpdFRva2VuLCBzaXplb2YoYXVkaXRUb2tlbikpKTsKICAgICBSZW1vdGVJbnNw
ZWN0b3I6OnNpbmdsZXRvbigpLnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWQsIGF1ZGl0
RGF0YSk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKIC0gKFdlYkNv
cmU6OlBhZ2UqKXBhZ2UKQEAgLTI1NzEsNyArMjU3MSw3IEBAIC0gKFdlYkNvcmU6OlBhZ2UqKXBh
Z2UKICAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2U7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNNZW51ICopX21lbnVGb3JFbGVtZW50OihO
U0RpY3Rpb25hcnkgKillbGVtZW50IGRlZmF1bHRJdGVtczooTlNBcnJheSAqKWl0ZW1zCiB7CiAg
ICAgTlNBcnJheSAqZGVmYXVsdE1lbnVJdGVtcyA9IFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgc2hh
cmVkVUlEZWxlZ2F0ZV0gd2ViVmlldzpzZWxmIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OmVs
ZW1lbnQgZGVmYXVsdE1lbnVJdGVtczppdGVtc107CkBAIC0yNjUwLDcgKzI2NTAsNyBAQCAtICh2
b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmllCiAtICh2b2lkKV9zZXRGb3JtRGVs
ZWdhdGU6IChpZDxXZWJGb3JtRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX3ByaXZhdGUtPmZv
cm1EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyIGNsZWFyVGFy
Z2V0XTsKICAgICBbX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAg
ICBfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyID0gbmlsOwpAQCAtMjY2Miw3ICsyNjYy
LDcgQEAgLSAoaWQ8V2ViRm9ybURlbGVnYXRlPilfZm9ybURlbGVnYXRlCiAgICAgcmV0dXJuIF9w
cml2YXRlLT5mb3JtRGVsZWdhdGU7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9mb3JtRGVsZWdhdGVGb3J3YXJkZXIKIHsKICAgICBpZiAo
X3ByaXZhdGUtPmNsb3NpbmcpCkBAIC0yNjg3LDcgKzI2ODcsNyBAQCAtIChpZClfZm9ybURlbGVn
YXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9uZWVkc0Fkb2JlRnJhbWVSZWxv
YWRpbmdRdWlyawogewogICAgIHN0YXRpYyBCT09MIG5lZWRzUXVpcmsgPSBfQ0ZBcHBWZXJzaW9u
Q2hlY2tMZXNzVGhhbihDRlNUUigiY29tLmFkb2JlLkFjcm9iYXQiKSwgLTEsIDkuMCkKQEAgLTI3
NDEsMTEgKzI3NDEsMTEgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5n
UQogICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcGVydHVy
ZSgpOwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX25lZWRzUHJlSFRN
TDVQYXJzZXJRdWlya3MKIHsgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBBT0wgSW5zdGFudCBNZXNzZW5nZXIgYW5kIE1pY3Jvc29mdCBN
eSBEYXkgY29udGFpbiBtYXJrdXAgaW5jb21wYXRpYmxlCiAgICAgLy8gd2l0aCB0aGUgbmV3IEhU
TUw1IHBhcnNlci4gSWYgdGhlc2UgYXBwbGljYXRpb25zIHdlcmUgbGlua2VkIGFnYWluc3QgYQog
ICAgIC8vIHZlcnNpb24gb2YgV2ViS2l0IHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhl
IEhUTUw1IHBhcnNlciwgZW5hYmxlCkBAIC0yNzczLDcgKzI3NzMsNyBAQCAtIChCT09MKV9uZWVk
c1ByZUhUTUw1UGFyc2VyUXVpcmtzCiAKIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGb3IgV2ViVmlld3MgdGhhdCBs
b2FkIHN5bmNocm9ub3VzbHksIHByZWZlcmVuY2UgY2hhbmdlcyBuZWVkIHRvIGJlIHByb3BhZ2F0
ZWQKICAgICAvLyBkb3duIHRvIFdlYkNvcmUgc3luY2hyb25vdXNseSBzbyB0aGF0IGxvYWRzIGlu
IHRoYXQgV2ViVmlldyBoYXZlIHRoZSBjb3JyZWN0CiAgICAgLy8gdXAtdG8tZGF0ZSBzZXR0aW5n
cy4KQEAgLTI3ODUsNyArMjc4NSw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbjoKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSAoV2ViUHJlZmVyZW5j
ZXMgKilbbm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgW3NlbGYgX3ByZWZlcmVuY2VzQ2hhbmdl
ZDpwcmVmZXJlbmNlc107CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB9IGVsc2UgewogICAgICAgICBXZWJUaHJlYWRSdW4oXnsKICAgICAgICAgICAg
IC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHByZWZzIG9iamVjdCBoYXMgYWxyZWFkeSBjaGFu
Z2VkIGJlZm9yZSB0aGUgaW52b2NhdGlvbiBjb3VsZCBiZSBjYWxsZWQKQEAgLTI4MTIsNyArMjgx
Miw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBpZiAo
IV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBpT1Mgd2FpdHMgdG8gY2FsbCBbV2ViRGF0
YWJhc2VNYW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gdW50aWwKICAgICAvLyBkaWRP
bmVUaW1lSW5pdGlhbGl6YXRpb24gaXMgdHJ1ZSBzbyB0aGF0IHdlIGRvbid0IGluaXRpYWxpemUg
ZGF0YWJhc2VzCiAgICAgLy8gdW50aWwgdGhlIGZpcnN0IFdlYlZpZXcgaGFzIGJlZW4gY3JlYXRl
ZC4gVGhpcyBpcyBiZWNhdXNlIGRhdGFiYXNlCkBAIC0yODYxLDcgKzI4NjEsNyBAQCAtICh2b2lk
KV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3Muc2V0U3RhbmRh
cmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKICAgICBzZXR0
aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoW3ByZWZlcmVuY2VzIGxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseV0pOwogICAgIHNldHRpbmdzLnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdTZXR0aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1h
Z2VMb2FkaW5nUHJlZmVyZW5jZV0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHNldHRpbmdzLnNldFNob3VsZFByaW50QmFja2dyb3VuZHModHJ1ZSk7
CiAjZWxzZQogICAgIHNldHRpbmdzLnNldFNob3VsZFByaW50QmFja2dyb3VuZHMoW3ByZWZlcmVu
Y2VzIHNob3VsZFByaW50QmFja2dyb3VuZHNdKTsKQEAgLTI5ODEsNyArMjk4MSw3IEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHNldHRpbmdzLnNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBs
YXliYWNrKFtwcmVmZXJlbmNlcyBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja10pOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0
dGluZ3Muc2V0U3RhbmRhbG9uZShbcHJlZmVyZW5jZXMgX3N0YW5kYWxvbmVdKTsKICAgICBzZXR0
aW5ncy5zZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgX3RlbGVw
aG9uZU51bWJlclBhcnNpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0QWxsb3dNdWx0aUVs
ZW1lbnRJbXBsaWNpdFN1Ym1pc3Npb24oW3ByZWZlcmVuY2VzIF9hbGxvd011bHRpRWxlbWVudElt
cGxpY2l0Rm9ybVN1Ym1pc3Npb25dKTsKQEAgLTMwMDUsNyArMzAwNSw3IEBAIC0gKHZvaWQpX3By
ZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy5zZXRNaW5pbXVtWm9v
bUZvbnRTaXplKFtwcmVmZXJlbmNlcyBfbWluaW11bVpvb21Gb250U2l6ZV0pOwogICAgIHNldHRp
bmdzLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgX3RleHRBdXRvc2l6aW5n
RW5hYmxlZF0pOwogI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gVGhpcyBwYXJz
ZXMgdGhlIHVzZXIgc3R5bGVzaGVldCBzeW5jaHJvbm91c2x5IHNvIGFueXRoaW5nIHRoYXQgbWF5
IGFmZmVjdCBpdCBzaG91bGQgYmUgZG9uZSBmaXJzdC4KQEAgLTMxNjQsNyArMzE2NCw3IEBAIC0g
KHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBpZiAoX3ByaXZhdGUt
Pnpvb21zVGV4dE9ubHkgIT0gem9vbXNUZXh0T25seSkKICAgICAgICAgW3NlbGYgX3NldFpvb21N
dWx0aXBsaWVyOl9wcml2YXRlLT56b29tTXVsdGlwbGllciBpc1RleHRPbmx5Onpvb21zVGV4dE9u
bHldOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W1tzZWxmIHdpbmRvd10gc2V0VGlsZUJvcmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBzaG93RGVi
dWdCb3JkZXJzXV07CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0VGlsZVBhaW50Q291bnRzVmlzaWJs
ZTpbcHJlZmVyZW5jZXMgc2hvd1JlcGFpbnRDb3VudGVyXV07CiAgICAgW1tzZWxmIHdpbmRvd10g
c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDpbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZF1dOwpAQCAtMzE5NSw3ICszMTk1LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0
TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIHJldHVybiBbbyByZXNwb25kc1RvU2VsZWN0b3I6c10g
PyBbbyBtZXRob2RGb3JTZWxlY3RvcjpzXSA6IDA7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9VSUtpdERlbGVnYXRlRm9yd2FyZGVyCiB7
CiAgICAgaWYgKF9wcml2YXRlLT5jbG9zaW5nKQpAQCAtMzIyNSw3ICszMjI1LDcgQEAgLSAodm9p
ZClfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbQogICAgIGNhY2hlLT5jYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZTpmb3JEYXRhU291cmNlOikpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYWNoZS0+Y29ubmVjdGlvblByb3BlcnRpZXNGdW5j
ID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpjb25uZWN0aW9uUHJvcGVy
dGllc0ZvclJlc291cmNlOmRhdGFTb3VyY2U6KSk7CiAgICAgY2FjaGUtPndlYlRocmVhZERpZEZp
bmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxl
Y3Rvcih3ZWJUaHJlYWRXZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNv
dXJjZTopKTsKICAgICBjYWNoZS0+d2ViVGhyZWFkRGlkRmFpbExvYWRpbmdXaXRoRXJyb3JGcm9t
RGF0YVNvdXJjZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJUaHJlYWRX
ZWJWaWV3OnJlc291cmNlOmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOmZyb21EYXRhU291cmNlOikp
OwpAQCAtMzI5MCw3ICszMjkwLDcgQEAgLSAodm9pZClfY2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUlt
cGxlbWVudAogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9k
KGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CiAg
ICAgY2FjaGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rv
cih3ZWJWaWV3OmRpZERldGVjdFhTUzopKTsKICAgICBjYWNoZS0+ZGlkUmVtb3ZlRnJhbWVGcm9t
SGllcmFyY2h5RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OikpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGNhY2hlLT53ZWJUaHJlYWREaWRMYXlvdXRGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVGhyZWFkV2ViVmlldzpkaWRMYXlvdXQ6KSk7
CiAjZW5kaWYKIApAQCAtMzMwMCw3ICszMzAwLDcgQEAgLSAodm9pZClfY2FjaGVGcmFtZUxvYWRE
ZWxlZ2F0ZUltcGxlbWVudAogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOwogICAgIGlmIChw
YWdlKSB7CiAgICAgICAgIHVuc2lnbmVkIG1pbGVzdG9uZXMgPSBEaWRGaXJzdExheW91dDsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbWlsZXN0
b25lcyB8PSBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CiAjZWxzZQogICAgICAgICBp
ZiAoY2FjaGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jKQpAQCAt
MzM2MSw3ICszMzYxLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiAtIChpZClfcG9saWN5RGVs
ZWdhdGVGb3J3YXJkZXIKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAj
ZW5kaWYKQEAgLTMzNzIsNyArMzM3Miw3IEBAIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRl
cgogCiAtIChpZClfVUlEZWxlZ2F0ZUZvcndhcmRlcgogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2luZykKICAgICAg
ICAgcmV0dXJuIG5pbDsKICNlbmRpZgpAQCAtMzM4MSw3ICszMzgxLDcgQEAgLSAoaWQpX1VJRGVs
ZWdhdGVGb3J3YXJkZXIKICAgICByZXR1cm4gX3ByaXZhdGUtPlVJRGVsZWdhdGVGb3J3YXJkZXI7
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlk
KV9VSURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewogICAgIGlkIGRlbGVnYXRl
ID0gc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGU7CkBAIC0zMzk4LDcgKzMzOTgsNyBAQCAtIChp
ZClfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0CiAKIC0gKGlkKV9lZGl0aW5nRGVs
ZWdhdGVGb3J3YXJkZXIKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAj
ZW5kaWYgICAgCkBAIC0zNTAyLDcgKzM1MDIsNyBAQCAtIChCT09MKV9pc1BlcmZvcm1pbmdQcm9n
cmFtbWF0aWNGb2N1cwogICAgIHJldHVybiBfcHJpdmF0ZS0+cHJvZ3JhbW1hdGljRm9jdXNDb3Vu
dCAhPSAwOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpX2RpZENoYW5nZVZhbHVlRm9yS2V5OiAoTlNTdHJpbmcgKilrZXkKIHsKICAg
ICBMT0cgKEJpbmRpbmdzLCAiY2FsbGluZyBkaWRDaGFuZ2VWYWx1ZUZvcktleTogJUAiLCBrZXkp
OwpAQCAtMzcwNyw3ICszNzA3LDcgQEAgLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvckZyYW1lOihX
ZWJGcmFtZQogICAgICAgICBfcHJpdmF0ZS0+ZGlkRHJhd1RpbGVzID0gMDsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCkBAIC0zODk4LDcgKzM4OTgsNyBAQCArIChCT09M
KV9zaG91bGRVc2VGb250U21vb3RoaW5nCiAgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpzaG91bGRV
c2VTbW9vdGhpbmcoKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiArICh2b2lkKV9zZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcjooQk9PTClm
CiB7CiAgICAgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoZik7CkBAIC0zOTEwLDcgKzM5
MTAsNyBAQCArIChCT09MKV91c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcgogfQogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3Nl
dFVJS2l0RGVsZWdhdGU6KGlkKWRlbGVnYXRlCiB7CiAgICAgX3ByaXZhdGUtPlVJS2l0RGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKQEAgLTQwMTAsOSArNDAxMCw5IEBAIC0gKE5TVVJMICopX2Rpc3BsYXlV
UkwKICAgICBbW1VSTCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKICAgICByZXR1cm4gVVJMOwogfQot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQp
c2V0QWx3YXlzU2hvd1ZlcnRpY2FsU2Nyb2xsZXI6KEJPT0wpZmxhZwogewogICAgIFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsdmlldyA9IFtbW3NlbGYgbWFpbkZyYW1lXSBmcmFtZVZp
ZXddIF9zY3JvbGxWaWV3XTsKQEAgLTQwNTIsNyArNDA1Miw3IEBAIC0gKEJPT0wpYWx3YXlzU2hv
d0hvcml6b250YWxTY3JvbGxlcgogICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xs
dmlldyA9IFtbW3NlbGYgbWFpbkZyYW1lXSBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XTsKICAgICBy
ZXR1cm4gW3Njcm9sbHZpZXcgaG9yaXpvbnRhbFNjcm9sbGluZ01vZGVMb2NrZWRdICYmIFtzY3Jv
bGx2aWV3IGhvcml6b250YWxTY3JvbGxpbmdNb2RlXSA9PSBTY3JvbGxiYXJBbHdheXNPbjsKIH0K
LSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAtICh2b2lkKV9zZXRVc2VGYXN0SW1hZ2VTY2FsaW5nTW9kZTooQk9PTClmbGFnCiB7CkBA
IC00MDgyLDcgKzQwODIsNyBAQCAtICh2b2lkKV9zZXRDb29raWVFbmFibGVkOihCT09MKWVuYWJs
ZQogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRDb29raWVFbmFibGVkKGVu
YWJsZSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogLSAodm9pZClfc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOihOU0FycmF5ICopbmV3UGF0
aHMKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKQEAgLTQwOTMsNyArNDA5
Myw3IEBAIC0gKHZvaWQpX3NldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczooTlMKIH0KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09M
KV9sb2NrZWRfcGx1Z0luc0FyZVJ1bm5pbmdJbkZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CiAg
ICAgLy8gQXNrIHBsdWctaW5zIGluIHRoaXMgZnJhbWUKQEAgLTQxOTksNyArNDE5OSw3IEBAIC0g
KHZvaWQpX3NldE5lZWRzVW5yZXN0cmljdGVkR2V0TWF0Y2hlZEMKICAgICBpZiAoX3ByaXZhdGUt
PnBhZ2UpCiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldENyb3NzT3JpZ2lu
Q2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKGZsYWcpOwogfQotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9h
dHRhY2hTY3JpcHREZWJ1Z2dlclRvQWxsRnJhbWVzCiB7CkBAIC00MjEzLDcgKzQyMTMsNyBAQCAt
ICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dlckZyb21BbGxGcmFtCiAgICAgICAgIFtraXQoZnJh
bWUpIF9kZXRhY2hTY3JpcHREZWJ1Z2dlcl07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29s
b3IgKiliYWNrZ3JvdW5kQ29sb3IKIHsKICAgICBpZiAoW19wcml2YXRlLT5iYWNrZ3JvdW5kQ29s
b3IgaXNFcXVhbDpiYWNrZ3JvdW5kQ29sb3JdKQpAQCAtNDI2NCw3ICs0MjY0LDcgQEAgLSAodm9p
ZClzZXREZWZlcnNDYWxsYmFja3M6KEJPT0wpZGVmZXIKICAgICByZXR1cm4gX3ByaXZhdGUtPnBh
Z2UtPnNldERlZmVyc0xvYWRpbmcoZGVmZXIpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0RpY3Rpb25hcnkgKilxdWlja0xvb2tDb250ZW50
Rm9yVVJMOihOU1VSTCAqKXVybAogewogICAgIHJldHVybiBuaWw7CkBAIC00NDAyLDcgKzQ0MDIs
NyBAQCArICh2b2lkKV9kb05vdFN0YXJ0T2JzZXJ2aW5nTmV0d29ya1JlYWNoCiB7CiAgICAgRGVw
cmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2Vy
dmF0aW9uKHRydWUpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIC0gKE5TQXJyYXkg
KilfdG91Y2hFdmVudFJlZ2lvbnMKQEAgLTQ0ODUsNyArNDQ4NSw3IEBAIC0gKFdlYlRleHRJdGVy
YXRvciAqKXRleHRJdGVyYXRvckZvclJlY3QKICAgICByZXR1cm4gW1tbV2ViVGV4dEl0ZXJhdG9y
IGFsbG9jXSBpbml0V2l0aFJhbmdlOmtpdChzZWxlY3Rpb25JbnNpZGVSZWN0LnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfY2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQpAQCAtNDY0MCw3ICs0NjQwLDcgQEAgLSAo
TlNBcnJheSopdHJhY2tlZFJlcGFpbnRSZWN0cwogICAgIHJldHVybiBbcmVjdHNBcnJheSBhdXRv
cmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogLSAoTlNQYXN0ZWJvYXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIHsKICAgICByZXR1
cm4gX3ByaXZhdGUgPyBfcHJpdmF0ZS0+aW5zZXJ0aW9uUGFzdGVib2FyZCA6IG5pbDsKQEAgLTQ2
ODUsNyArNDY4NSw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2liaWxpdHlTdGF0ZQogLSAodm9pZClf
dXBkYXRlQWN0aXZlU3RhdGUKIHsKICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZhdGUtPnBhZ2Up
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIF9w
cml2YXRlLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRBY3RpdmUoW1tzZWxmIHdpbmRvd10g
aXNLZXlXaW5kb3ddKTsKICNlbHNlCiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5zZXRBY3RpdmUoW1tzZWxmIHdpbmRvd10gX2hhc0tleUFwcGVhcmFuY2VdKTsKQEAg
LTQ5MjIsNyArNDkyMiw3IEBAIC0gKHZvaWQpX3NldFVzZUZpeGVkTGF5b3V0OihCT09MKWZpeGVk
CiAgICAgICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShJbnRTaXplKCkpOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldEZp
eGVkTGF5b3V0U2l6ZTooTlNTaXplKXNpemUKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gW3Nl
bGYgX21haW5Db3JlRnJhbWVdOwpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgLSAoQk9PTClfdXNlRml4
ZWRMYXlvdXQKICAgICByZXR1cm4gdmlldy0+dXNlRml4ZWRMYXlvdXQoKTsKIH0KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU1NpemUpX2ZpeGVk
TGF5b3V0U2l6ZQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFt
ZV07CkBAIC01MTUwLDcgKzUxNTAsNyBAQCAtIChOU1VJbnRlZ2VyKV9wYWdlQ291bnQKICAgICBy
ZXR1cm4gcGFnZS0+cGFnZUNvdW50KCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dGbG9hdClfYmFja2luZ1NjYWxlRmFjdG9yCiB7CiAg
ICAgcmV0dXJuIFtzZWxmIF9kZXZpY2VTY2FsZUZhY3Rvcl07CkBAIC01MjA1LDcgKzUyMDUsNyBA
QCAtICh2b2lkKV9kaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OihXCiAgICAgW1tzZWxmIF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1l
VmlldzpmcmFtZVZpZXddOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChXZWJGaXhlZFBvc2l0aW9uQ29udGVudCopX2ZpeGVkUG9zaXRpb25Db250
ZW50CiB7CiAgICAgcmV0dXJuIF9wcml2YXRlID8gX3ByaXZhdGUtPl9maXhlZFBvc2l0aW9uQ29u
dGVudCA6IG5pbDsKQEAgLTUyNTIsNyArNTI1Miw3IEBAICsgKHZvaWQpX3NldFRpbGVDYWNoZUxh
eWVyUG9vbENhcGFjaXR5OigKIHsKICAgICBMZWdhY3lUaWxlQ2FjaGU6OnNldExheWVyUG9vbENh
cGFjaXR5KGNhcGFjaXR5KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClfc2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzOihXZWJFZGdlSW5zZXRzKWluc2V0cwogewpAQCAtNTM4Myw3ICs1MzgzLDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVGFyZ2V0OihpZCl0IGRlZgogICAgIHJldHVybiBzZWxmOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZClhc3lu
Y0ZvcndhcmRlcgogewogICAgIGRpc3BhdGNoX29uY2UoJmFzeW5jRm9yd2FyZGVyUHJlZCwgXnsK
QEAgLTU0MDYsNyArNTQwNiw3IEBAIC0gKHZvaWQpY2xlYXJUYXJnZXQKIAogLSAodm9pZClmb3J3
YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJl
bnQoKSkgewogICAgICAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVudHNdOwogICAgICAgICBX
ZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CkBAIC01NDI4LDcgKzU0MjgsNyBAQCAt
ICh2b2lkKWZvcndhcmRJbnZvY2F0aW9uOihOU0ludm9jYXRpb24gCiAgICAgLy8gRG8gbm90aGlu
ZyBxdWlldGx5IGlmIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQuCiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpcmVzcG9uZHNUb1NlbGVjdG9y
OihTRUwpYVNlbGVjdG9yCiB7CiAgICAgcmV0dXJuIFtkZWZhdWx0VGFyZ2V0IHJlc3BvbmRzVG9T
ZWxlY3RvcjphU2VsZWN0b3JdOwpAQCAtNTQ0Miw3ICs1NDQyLDcgQEAgLSAoTlNNZXRob2RTaWdu
YXR1cmUgKiltZXRob2RTaWduYXR1cmVGbwogCiBAZW5kCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBfV2ViU2FmZUFzeW5jRm9y
d2FyZGVyCiAKIC0gKGlkKWluaXRXaXRoRm9yd2FyZGVyOihfV2ViU2FmZUZvcndhcmRlciAqKWZv
cndhcmRlcgpAQCAtNTQ5Myw3ICs1NDkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAg
IHJldHVybjsKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7
CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAg
ICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKQEAgLTU1MDIsMTMgKzU1MDIsMTMg
QEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgV1RGOjpzZXRQcm9jZXNzUHJpdmlsZWdlcyhhbGxQ
cml2aWxlZ2VzKCkpOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cGVybWl0
UHJvY2Vzc1RvVXNlQ29va2llQVBJKHRydWUpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGUpIG5hbWU6TlNBcHBsaWNhdGlvbldpbGxUZXJtaW5hdGVOb3RpZmljYXRpb24g
b2JqZWN0Ok5TQXBwXTsKICNlbmRpZgogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2NhY2hlTW9kZWxD
aGFuZ2VkTm90aWZpY2F0aW9uOikgbmFtZTpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2Vk
SW50ZXJuYWxOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihf
cHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOikgbmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92
ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBO
TzsKIAogI2Vsc2UKQEAgLTU1MzQsNyArNTUzNCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogI2Vu
ZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
KyAoQk9PTClfc2hvdWxkQXV0b21hdGljVGV4dFJlcGxhY2VtZW50QmVFbmFibGVkCiB7CiAgICAg
TlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXTsKQEAgLTU2MDUsNyArNTYwNSw3IEBAICsgKHZvaWQpX2FwcGxpY2F0aW9uV2lsbFRl
cm1pbmF0ZQogCiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNsb3Nl
TG9jYWxTdG9yYWdlKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogKyAoQk9PTClfY2FuU2hvd01JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUVUeXBlIGFsbG93aW5nUGx1Z2luczooQk9PTClhbGxvd1BsdWdpbnMKIHsKQEAgLTU2
MzEsNyArNTYzMSw3IEBAIC0gKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopX3BsdWdpbkZvck1JTUUK
ICAgICBpZiAocGx1Z2luUGFja2FnZSkKICAgICAgICAgcmV0dXJuIHBsdWdpblBhY2thZ2U7CiAg
ICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQogICAgICAgICByZXR1cm4gW19wcml2YXRlLT5w
bHVnaW5EYXRhYmFzZSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAjZW5kaWYKQEAgLTU2
NDgsNyArNTY0OCw3IEBAIC0gKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopX3BsdWdpbkZvckV4dGUK
ICAgICBpZiAocGx1Z2luUGFja2FnZSkKICAgICAgICAgcmV0dXJuIHBsdWdpblBhY2thZ2U7CiAg
ICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQogICAgICAgICByZXR1cm4gW19wcml2YXRlLT5w
bHVnaW5EYXRhYmFzZSBwbHVnaW5Gb3JFeHRlbnNpb246ZXh0ZW5zaW9uXTsKICNlbmRpZgpAQCAt
NTY1Niw3ICs1NjU2LDcgQEAgLSAoV2ViQmFzZVBsdWdpblBhY2thZ2UgKilfcGx1Z2luRm9yRXh0
ZQogICAgIHJldHVybiBuaWw7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAodm9pZClhZGRQbHVnaW5JbnN0YW5jZVZpZXc6KE5TVmlldyAqKXZp
ZXcKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKQEAgLTU2ODUsNyArNTY4
NSw3IEBAIC0gKEJPT0wpX2lzTUlNRVR5cGVSZWdpc3RlcmVkQXNQbHVnaW46KE4KICAgICBpZiAo
W1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0gaXNNSU1FVHlwZVJlZ2lzdGVyZWQ6
TUlNRVR5cGVdKQogICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+cGx1Z2lu
RGF0YWJhc2UgJiYgW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBpc01JTUVUeXBlUmVnaXN0ZXJl
ZDpNSU1FVHlwZV0pCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKQEAgLTU2OTUsNyArNTY5
NSw3IEBAIC0gKEJPT0wpX2lzTUlNRVR5cGVSZWdpc3RlcmVkQXNQbHVnaW46KE4KIAogKyAoQk9P
TCljYW5TaG93TUlNRVR5cGVBc0hUTUw6KE5TU3RyaW5nICopTUlNRVR5cGUKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogPHJkYXI6
Ly9wcm9ibGVtLzc5NjE2NTY+ICtbV2ViVmlldyBjYW5TaG93TUlNRVR5cGVBc0hUTUw6XSByZWdy
ZXNzZWQgc2lnbmlmaWNhbnRseSBpbiBpT1MgNC4wCiAgICAgLy8gRmFzdCBwYXRoIGZvciB0aGUg
Y29tbW9uIGNhc2UgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIE1JTUUgdHlwZSByZWdpc3RyeS4KICAg
ICBpZiAoW01JTUVUeXBlIGlzRXF1YWxUb1N0cmluZzpAInRleHQvaHRtbCJdKQpAQCAtNTczOCw3
ICs1NzM4LDcgQEAgKyAodm9pZClzZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNBcnJheQogICAg
IFt2aWV3VHlwZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogKyAoTlNVUkwgKilVUkxGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZAogewogICAgIHJldHVybiBbcGFzdGVib2FyZCBfd2ViX2Jlc3RVUkxd
OwpAQCAtNTc1Nyw3ICs1NzU3LDcgQEAgICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNj
aGVtZUFzTAogCiAtIChpZClfaW5pdFdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKSBhcmd1
bWVudHMKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TQ29kZXIgKmRlY29kZXIgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTpAImRlY29kZXIi
XTsKICAgICBpZiAoZGVjb2RlcikgewogICAgICAgICBzZWxmID0gW3NlbGYgaW5pdFdpdGhDb2Rl
cjpkZWNvZGVyXTsKQEAgLTU3NjksMTQgKzU3NjksMTQgQEAgLSAoaWQpX2luaXRXaXRoQXJndW1l
bnRzOihOU0RpY3Rpb25hcnkgKgogICAgICAgICBOU1N0cmluZyAqZnJhbWVOYW1lID0gW2FyZ3Vt
ZW50cyBvYmplY3RGb3JLZXk6QCJmcmFtZU5hbWUiXTsKICAgICAgICAgTlNTdHJpbmcgKmdyb3Vw
TmFtZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZ3JvdXBOYW1lIl07CiAgICAgICAgIHNl
bGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBO
YW1lOmdyb3VwTmFtZV07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwogfQogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBib29sIGNsaWVudE5l
ZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCkKIHsKICAgICBpZiAoV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfV0VCVklFV19JTklUX1RIUkVB
RF9XT1JLQVJPVU5EKSkKQEAgLTU4MDgsNyArNTgwOCw3IEBAIHN0YXRpYyBib29sIG5lZWRzV2Vi
Vmlld0luaXRUaHJlYWRXb3JrYXIKICAgICBzdGF0aWMgYm9vbCBpc09sZENsaWVudCA9IGNsaWVu
dE5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCk7CiAgICAgcmV0dXJuIGlzT2xkQ2xp
ZW50ICYmICFwdGhyZWFkX21haW5fbnAoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWYKIHsKQEAgLTU4MTcsNyArNTgxNyw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWYgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5T
U3RyaW5nICopZ3JvdXBOYW1lCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAobmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91bmQoKSkK
ICAgICAgICAgcmV0dXJuIFtbc2VsZiBfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZF0gaW5pdFdp
dGhGcmFtZTpmIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZV07CiAjZW5k
aWYKQEAgLTU4MjYsNyArNTgyNiw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihO
U1JlY3QpZiAKICAgICByZXR1cm4gW3NlbGYgX2luaXRXaXRoRnJhbWU6ZiBmcmFtZU5hbWU6ZnJh
bWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWVdOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopZGVjb2RlcgogewogICAgIGlmIChuZWVkc1dlYlZpZXdJbml0VGhyZWFkV29ya2Fy
b3VuZCgpKQpAQCAtNTkyNiw3ICs1OTI2LDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5T
Q29kZXIgKillbmNvZAogCiAgICAgTE9HKEVuY29kaW5nLCAiRnJhbWVOYW1lID0gJUAsIEdyb3Vw
TmFtZSA9ICVALCB1c2VCYWNrRm9yd2FyZExpc3QgPSAlZFxuIiwgW1tzZWxmIG1haW5GcmFtZV0g
bmFtZV0sIFtzZWxmIGdyb3VwTmFtZV0sIChpbnQpdXNlQmFja0ZvcndhcmRMaXN0KTsKIH0KLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiAtICh2b2lkKWRlYWxsb2MKIHsKQEAgLTU5MzgsNyArNTkzOCw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIC8vIGNhcnJpZWQgb3V0IGJlZm9yZSB3ZSBhcmUgZGVhbGxvYydkLgogICAgIEBhdXRv
cmVsZWFzZXBvb2wgewogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIGlmIChfcHJpdmF0ZSkKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X2dlb2xv
Y2F0aW9uUHJvdmlkZXIgc3RvcFRyYWNraW5nV2ViVmlldzpzZWxmXTsKICNlbmRpZgpAQCAtNTk1
Miw3ICs1OTUyLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgICAgIGlmIChbW3NlbGYgY2xhc3Nd
IHNob3VsZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICAgICAgLS1XZWJWaWV3
Q291bnQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBpZiAoW3NlbGYgX25lZWRzRnJhbWVMb2FkRGVsZWdhdGVSZXRhaW5RdWlya10pCiAg
ICAgICAgICAgICBbX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlIHJlbGVhc2VdOwogI2VuZGlm
CkBAIC01OTcwLDcgKzU5NzAsNyBAQCAtICh2b2lkKWNsb3NlCiAgICAgLy8gX2Nsb3NlIGV4aXN0
ZWQgZmlyc3QsIGFuZCBzb21lIGNsaWVudHMgbWlnaHQgYmUgY2FsbGluZyBvciBvdmVycmlkaW5n
IGl0LCBzbyBjYWxsIHRocm91Z2guCiAgICAgW3NlbGYgX2Nsb3NlXTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+bGF5ZXJG
bHVzaENvbnRyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmxheWVyRmx1c2hDb250cm9sbGVy
LT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIF9wcml2YXRlLT5sYXllckZsdXNoQ29udHJvbGxlciA9
IG51bGxwdHI7CkBAIC01OTg4LDcgKzU5ODgsNyBAQCAtIChCT09MKXNob3VsZENsb3NlV2l0aFdp
bmRvdwogICAgIHJldHVybiBfcHJpdmF0ZS0+c2hvdWxkQ2xvc2VXaXRoV2luZG93OwogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJWE1FOiBV
c2UgQXBwS2l0IGNvbnN0YW50cyBmb3IgdGhlc2Ugd2hlbiB0aGV5IGFyZSBhdmFpbGFibGUuCiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3aW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc05v
dGlmaWNhdGlvbiA9IEAiTlNXaW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc05vdGlmaWNh
dGlvbiI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZh
Y3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSI7IApAQCAtNjA2
OSw3ICs2MDY5LDcgQEAgLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKgog
ICAgICAgICBbc2VsZiBhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6d2luZG93XTsKICAgICB9
CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiB7CkBAIC02MDg0LDcgKzYwODQs
NyBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKICAgICAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldENhblN0YXJ0TWVkaWEodHJ1ZSk7CiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXRJc0lu
V2luZG93KHRydWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtzZWxmIHByZWZlcmVu
Y2VzXTsKICAgICAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgICAg
IFt3aW5kb3cgc2V0VGlsZUJvcmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBzaG93RGVidWdCb3Jk
ZXJzXV07CkBAIC02MDkyLDEyICs2MDkyLDEyIEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRv
dwogICAgICAgICBbd2luZG93IHNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ6W3ByZWZlcmVu
Y2VzIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRdXTsKICNlbmRpZgogICAgIH0KLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCiAgICAgICAgIFtf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVl
bl07CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKFtzZWxmIF9kZXZp
Y2VTY2FsZUZhY3Rvcl0pOwogI2VuZGlmCiAKQEAgLTYxMTYsNyArNjExNiw3IEBAIC0gKHZvaWQp
dmlld0RpZE1vdmVUb1dpbmRvdwogICAgIFtzZWxmIF91cGRhdGVWaXNpYmlsaXR5U3RhdGVdOwog
fQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZv
aWQpZG9XaW5kb3dEaWRDaGFuZ2VTY3JlZW4KIHsKICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZh
dGUtPnBhZ2UpCkBAIC02MjA4LDcgKzYyMDgsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JlZW5TY2Fs
ZUZyb21XaW5kb3cKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcihz
Y2FsZUZhY3Rvcik7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2Vz
ICopcHJlZnMKIHsKQEAgLTYyNTksNyArNjI1OSw3IEBAIC0gKE5TU3RyaW5nICopcHJlZmVyZW5j
ZXNJZGVudGlmaWVyCiAtICh2b2lkKXNldFVJRGVsZWdhdGU6ZGVsZWdhdGUKIHsKICAgICBfcHJp
dmF0ZS0+VUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciBjbGVh
clRhcmdldF07CiAjZW5kaWYKICAgICBbX3ByaXZhdGUtPlVJRGVsZWdhdGVGb3J3YXJkZXIgcmVs
ZWFzZV07CkBAIC02MjcxLDcgKzYyNzEsNyBAQCAtIChpZClVSURlbGVnYXRlCiAgICAgcmV0dXJu
IF9wcml2YXRlLT5VSURlbGVnYXRlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChpZClfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXIKIHsK
ICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCkBAIC02Mjg1LDcgKzYyODUsNyBAQCAtIChpZClf
cmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXIKIAogLSAodm9pZClzZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTogZGVsZWdhdGUKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRl
ciBjbGVhclRhcmdldF07CiAgICAgW19wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVG
b3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0
ZUZvcndhcmRlciA9IG5pbDsKQEAgLTYzMTMsNyArNjMxMyw3IEBAIC0gKGlkKWRvd25sb2FkRGVs
ZWdhdGUKIC0gKHZvaWQpc2V0UG9saWN5RGVsZWdhdGU6ZGVsZWdhdGUKIHsKICAgICBfcHJpdmF0
ZS0+cG9saWN5RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlRm9yd2FyZGVy
IGNsZWFyVGFyZ2V0XTsKICNlbmRpZgogICAgIFtfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3
YXJkZXIgcmVsZWFzZV07CkBAIC02MzI1LDcgKzYzMjUsNyBAQCAtIChpZClwb2xpY3lEZWxlZ2F0
ZQogICAgIHJldHVybiBfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGU7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9mcmFtZUxvYWREZWxlZ2F0
ZUZvcndhcmRlcgogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2luZykKQEAgLTYzNDMsNyArNjM0
Myw3IEBAIC0gKHZvaWQpc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGUKICAgICAvLyB1bmNv
bnZlcmVkIGEgbGF0ZW50IGJ1ZyBpbiBhdCBsZWFzdCBvbmUgV2ViS2l0IGFwcCB3aGVyZSB0aGUg
ZGVsZWdhdGUgd2Fzbid0IHByb3Blcmx5IHJldGFpbmVkIGJ5IHRoZSBhcHAgYW5kCiAgICAgLy8g
d2FzIGRlYWxsb2MnZWQgYmVmb3JlIGJlaW5nIGNsZWFyZWQuCiAgICAgLy8gVGhpcyBpcyBhbiBl
ZmZvcnQgdG8ga2VlcCBzdWNoIGFwcHMgd29ya2luZyBmb3Igbm93LgotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtzZWxmIF9uZWVkc0ZyYW1l
TG9hZERlbGVnYXRlUmV0YWluUXVpcmtdKSB7CiAgICAgICAgIFtkZWxlZ2F0ZSByZXRhaW5dOwog
ICAgICAgICBbX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlIHJlbGVhc2VdOwpAQCAtNjQwNywx
MSArNjQwNywxMSBAQCAtIChCT09MKWdvQmFjawogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAg
ICAgICAgIHJldHVybiBOTzsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgIVdlYlRocmVhZElz
RW5hYmxlZCgpKQogI2VuZGlmCiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5iYWNrRm9yd2Fy
ZCgpLmdvQmFjaygpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+YmFja0Zvcndh
cmQoKS5nb0JhY2soKTsKICAgICB9KTsKQEAgLTY0MjUsMTEgKzY0MjUsMTEgQEAgLSAoQk9PTCln
b0ZvcndhcmQKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gTk87CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2Vi
VGhyZWFkSXNDdXJyZW50KCkgfHwgIVdlYlRocmVhZElzRW5hYmxlZCgpKQogI2VuZGlmCiAgICAg
cmV0dXJuIF9wcml2YXRlLT5wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlRocmVhZFJ1bihe
ewogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKICAg
ICB9KTsKQEAgLTY2NTUsNyArNjY1NSw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmkKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZFRocmVl
KCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFJldHVybiBzdGF0ZW1lbnRzIGFyZSBvbmx5IHZhbGlkIGluIGEgZnVuY3Rpb24gYnV0IHNv
bWUgYXBwbGljYXRpb25zIHBhc3MgaW4gc2NyaXB0cwogICAgIC8vIHByZWZpeGVkIHdpdGggcmV0
dXJuICg8cmRhcjovL3Byb2JsZW1zLzUxMDM3MjAmNDYxNjg2MD4pIHNpbmNlIG9sZGVyIFdlYktp
dCB2ZXJzaW9ucwogICAgIC8vIHNpbGVudGx5IGlnbm9yZWQgdGhlIHJldHVybi4gSWYgdGhlIGFw
cGxpY2F0aW9uIGlzIGxpbmtlZCBhZ2FpbnN0IGFuIGVhcmxpZXIgdmVyc2lvbgpAQCAtNjcwNyw3
ICs2NzA3LDcgQEAgLSAodm9pZClzZXRIb3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RXaQogICAg
ICAgICByZXR1cm47CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJh
bWVdOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAgICAgIFtbW2tpdChmcmFtZSkgZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddIHZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdzpob3N0V2luZG93XTsK
ICAgICBpZiAoX3ByaXZhdGUtPmhvc3RXaW5kb3cgJiYgW3NlbGYgd2luZG93XSAhPSBfcHJpdmF0
ZS0+aG9zdFdpbmRvdykKQEAgLTY3MTksNyArNjcxOSw3IEBAIC0gKHZvaWQpc2V0SG9zdFdpbmRv
dzooTlNXaW5kb3cgKilob3N0V2kKICAgICBfcHJpdmF0ZS0+aG9zdFdpbmRvdyA9IFtob3N0V2lu
ZG93IHJldGFpbl07CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAgICAgIFtb
W2tpdChmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdEaWRNb3ZlVG9Ib3N0V2lu
ZG93XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcihbc2VsZiBfZGV2aWNlU2NhbGVG
YWN0b3JdKTsKICNlbmRpZgogfQpAQCAtNjkxNiwxMiArNjkxNiwxMiBAQCAtIChCT09MKWJlY29t
ZUZpcnN0UmVzcG9uZGVyCiAgICAgLy8gVGhpcyB3b3JrcyB0b2dldGhlciB3aXRoIHNldE5leHRL
ZXlWaWV3IHRvIHNwbGljZSB0aGUgV2ViVmlldyBpbnRvCiAgICAgLy8gdGhlIGtleSBsb29wIHNp
bWlsYXIgdG8gdGhlIHdheSBOU1Njcm9sbFZpZXcgZG9lcyB0aGlzLiBOb3RlIHRoYXQKICAgICAv
LyBXZWJGcmFtZVZpZXcgaGFzIHZlcnkgc2ltaWxhciBjb2RlLgotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxm
IHdpbmRvd107CiAjZW5kaWYKICAgICBXZWJGcmFtZVZpZXcgKm1haW5GcmFtZVZpZXcgPSBbW3Nl
bGYgbWFpbkZyYW1lXSBmcmFtZVZpZXddOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1Jlc3BvbmRlciAqcHJldmlvdXNGaXJzdFJlc3BvbmRl
ciA9IFtbc2VsZiB3aW5kb3ddIF9vbGRGaXJzdFJlc3BvbmRlckJlZm9yZUJlY29taW5nXTsKICAg
ICBCT09MIGZyb21PdXRzaWRlID0gIVtwcmV2aW91c0ZpcnN0UmVzcG9uZGVyIGlzS2luZE9mQ2xh
c3M6W05TVmlldyBjbGFzc11dIHx8ICghWyhOU1ZpZXcgKilwcmV2aW91c0ZpcnN0UmVzcG9uZGVy
IGlzRGVzY2VuZGFudE9mOnNlbGZdICYmIHByZXZpb3VzRmlyc3RSZXNwb25kZXIgIT0gc2VsZik7
CiAKQEAgLTY5NDAsNyArNjk0MCw3IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXIKICNl
bmRpZgogCiAgICAgaWYgKFttYWluRnJhbWVWaWV3IGFjY2VwdHNGaXJzdFJlc3BvbmRlcl0pIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBf
cHJpdmF0ZS0+YmVjb21pbmdGaXJzdFJlc3BvbmRlciA9IFlFUzsKICAgICAgICAgX3ByaXZhdGUt
PmJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tT3V0c2lkZSA9IGZyb21PdXRzaWRlOwogICAgICAg
ICBbd2luZG93IG1ha2VGaXJzdFJlc3BvbmRlcjptYWluRnJhbWVWaWV3XTsKQEAgLTcwMzIsNyAr
NzAzMiw3IEBAIC0gKGRvdWJsZSllc3RpbWF0ZWRQcm9ncmVzcwogICAgIHJldHVybiBfcHJpdmF0
ZS0+cGFnZS0+cHJvZ3Jlc3MoKS5lc3RpbWF0ZWRQcm9ncmVzcygpOwogfQogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TQXJyYXkgKilwYXN0ZWJv
YXJkVHlwZXNGb3JTZWxlY3Rpb24KIHsKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRv
Y3VtZW50VmlldyA9IFtbW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XTsKQEAgLTcwOTAsNyArNzA5MCw3IEBAIC0gKHZvaWQpcmVtb3ZlRHJhZ0NhcmV0
CiAgICAgICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VuZGVkKCk7CiAjZW5kaWYKIH0K
LSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAtICh2b2lkKXNldE1haW5GcmFtZVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcKIHsKQEAg
LTcxMjgsNyArNzEyOCw3IEBAIC0gKE5TU3RyaW5nICopbWFpbkZyYW1lVGl0bGUKICAgICByZXR1
cm4gKG1haW5GcmFtZVRpdGxlICE9IG5pbCkgPyBtYWluRnJhbWVUaXRsZSA6IChOU1N0cmluZyAq
KUAiIjsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAtIChOU0ltYWdlICopbWFpbkZyYW1lSWNvbgogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRp
b25DaGVja1JvdW5kVGhyZWUoKTsKQEAgLTczNDgsNyArNzM0OCw3IEBAIHN0YXRpYyBXZWJGcmFt
ZVZpZXcgKmNvbnRhaW5pbmdGcmFtZVZpZXcKICAgICByZXR1cm4gKFdlYkZyYW1lVmlldyAqKXZp
ZXc7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoZmxvYXQpX2RldmljZVNjYWxlRmFjdG9yCiB7CiAgICAgaWYgKF9wcml2YXRlLT5jdXN0b21E
ZXZpY2VTY2FsZUZhY3RvciAhPSAwKQpAQCAtNzM4MCw3ICs3MzgwLDcgQEAgKyAoV2ViQ2FjaGVN
b2RlbClfbWF4Q2FjaGVNb2RlbEluQW55SW5zdAogCiArICh2b2lkKV9jYWNoZU1vZGVsQ2hhbmdl
ZE5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGlzIG5lZWRzIHRv
IGhhcHBlbiBvbiB0aGUgV2ViIFRocmVhZAogICAgIFdlYlRocmVhZFJ1biheewogI2VuZGlmCkBA
IC03MzkyLDcgKzczOTIsNyBAQCArICh2b2lkKV9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlv
bjooCiAgICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOmNhY2hlTW9kZWxdOwogICAgIGVsc2Ug
aWYgKGNhY2hlTW9kZWwgPCBbc2VsZiBfY2FjaGVNb2RlbF0pCiAgICAgICAgIFtzZWxmIF9zZXRD
YWNoZU1vZGVsOnN0ZDo6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10g
Y2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pXTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNlbmRpZgog
fQpAQCAtNzQyOSw3ICs3NDI5LDcgQEAgLSAoV2ViRnJhbWVWaWV3ICopX2ZyYW1lVmlld0F0V2lu
ZG93UG9pbgogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2VkKQogICAgICAgICByZXR1cm4gbmls
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNW
aWV3ICp2aWV3ID0gW3NlbGYgaGl0VGVzdDpbW3NlbGYgc3VwZXJ2aWV3XSBjb252ZXJ0UG9pbnQ6
cG9pbnQgZnJvbVZpZXc6bmlsXV07CiAjZWxzZQogICAgIC8vW1dlYlZpZXcgc3VwZXJ2aWV3XSBv
biBpT1MgaXMgbmlsLCBkb24ndCBkbyBhIGNvbnZlcnRQb2ludApAQCAtNzQ0NCwxNCArNzQ0NCwx
NCBAQCAtIChXZWJGcmFtZVZpZXcgKilfZnJhbWVWaWV3QXRXaW5kb3dQb2luCiAKICsgKHZvaWQp
X3ByZWZsaWdodFNwZWxsQ2hlY2tlck5vdzooaWQpc2VuZGVyCiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICNlbmRpZgogfQog
CiArICh2b2lkKV9wcmVmbGlnaHRTcGVsbENoZWNrZXIKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEFzIEFwcEtpdCBkb2VzLCB3ZSB3aXNo
IHRvIGRlbGF5IHRpY2tsaW5nIHRoZSBzaGFyZWQgc3BlbGxjaGVja2VyIGludG8gZXhpc3RlbmNl
IG9uIGFwcGxpY2F0aW9uIGxhdW5jaC4KICAgICBpZiAoW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlckV4aXN0c10pIHsKICAgICAgICAgW3NlbGYgX3ByZWZsaWdodFNwZWxsQ2hlY2tl
ck5vdzpzZWxmXTsKQEAgLTc1MDMsNyArNzUwMyw3IEBAIC0gKElCQWN0aW9uKXRha2VTdHJpbmdV
UkxGcm9tOiBzZW5kZXIKIAogLSAoQk9PTCljYW5Hb0JhY2sKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAgICAgaWYg
KCFfcHJpdmF0ZS0+cGFnZSkKICNlbHNlCkBAIC03NTE2LDcgKzc1MTYsNyBAQCAtIChCT09MKWNh
bkdvQmFjawogCiAtIChCT09MKWNhbkdvRm9yd2FyZAogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBpZiAoIV9w
cml2YXRlLT5wYWdlKQogI2Vsc2UKQEAgLTc1MzksNyArNzUzOSw3IEBAIC0gKElCQWN0aW9uKWdv
Rm9yd2FyZDooaWQpc2VuZGVyCiAKIC0gKElCQWN0aW9uKXN0b3BMb2FkaW5nOihpZClzZW5kZXIK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
V2ViVGhyZWFkTm90Q3VycmVudCgpKSB7CiAgICAgICAgIF9wcml2YXRlLT5pc1N0b3BwaW5nID0g
dHJ1ZTsKICAgICAgICAgV2ViVGhyZWFkU2V0U2hvdWxkWWllbGQoKTsKQEAgLTc1NDgsMTIgKzc1
NDgsMTIgQEAgLSAoSUJBY3Rpb24pc3RvcExvYWRpbmc6KGlkKXNlbmRlcgogICAgICAgICBfcHJp
dmF0ZS0+aXNTdG9wcGluZyA9IGZhbHNlOwogI2VuZGlmCiAgICAgW1tzZWxmIG1haW5GcmFtZV0g
c3RvcExvYWRpbmddOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIH0pOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIC0gKHZvaWQpc3RvcExvYWRpbmdBbmRDbGVhcgogewogICAgIGlmIChXZWJU
aHJlYWROb3RDdXJyZW50KCkgJiYgIVdlYlRocmVhZElzTG9ja2VkKCkpIHsKQEAgLTc1ODEsMTEg
Kzc1ODEsMTEgQEAgLSAodm9pZClzdG9wTG9hZGluZ0FuZENsZWFyCiAKIC0gKElCQWN0aW9uKXJl
bG9hZDooaWQpc2VuZGVyCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgV2ViVGhyZWFkUnVuKF57CiAjZW5kaWYgICAgICAgICAgICAKICAgICBbW3Nl
bGYgbWFpbkZyYW1lXSByZWxvYWRdOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIH0pOwogI2VuZGlmICAgICAgICAgICAgCiB9CkBAIC03NjMyLDcgKzc2
MzIsNyBAQCAtIChJQkFjdGlvbil0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luCiAgICAgW3Nl
bGYgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOiFbc2VsZiBpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZF1dOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKElCQWN0aW9uKXRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlOihp
ZClzZW5kZXIKIHsKICAgICBbc2VsZiBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6IVtzZWxm
IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZF1dOwpAQCAtNzc0NCw3ICs3NzQ0LDcgQEAgLSAoQk9P
TCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogICAgIEJPT0wgcmVzdWx0ID0gW3Nl
bGYgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTppdGVtXTsKICAgICBy
ZXR1cm4gQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3VsdCwgc2VsZiwgQHNlbGVj
dG9yKHdlYlZpZXc6dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpkZWZhdWx0VmFsaWRhdGlvbjop
LCBpdGVtLCByZXN1bHQpOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBlbmQKIApAQCAtNzg0Myw3ICs3ODQzLDcgQEAgLSAo
dm9pZClzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5OihCT09MKQogICAgIC8vIHdlIHVzZSB0aGlz
IHRvIHRlbGwgTlNUcmVlQ29udHJvbGxlciB0byByZXNldCBpdHMgb2JzZXJ2ZXJzIGFuZCBjbGVh
ciBpdHMgc3RhdGUKICAgICBpZiAoX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPT0g
bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSkKICAgICAgICAgcmV0dXJuOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3NlbGYgX3dpbGxDaGFuZ2VWYWx1
ZUZvcktleTpfV2ViTWFpbkZyYW1lRG9jdW1lbnRLZXldOwogICAgIF9wcml2YXRlLT5tYWluRnJh
bWVEb2N1bWVudFJlYWR5ID0gbWFpbkZyYW1lRG9jdW1lbnRSZWFkeTsKICAgICBbc2VsZiBfZGlk
Q2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZURvY3VtZW50S2V5XTsKQEAgLTc4OTgsNyAr
Nzg5OCw3IEBAIC0gKEJPT0wpc2hvdWxkQ2xvc2UKICAgICByZXR1cm4gY29yZUZyYW1lLT5sb2Fk
ZXIoKS5zaG91bGRDbG9zZSgpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9t
SlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC04MDY5LDcgKzgwNjksNyBAQCAtICh2b2lkKXNjcm9sbERP
TVJhbmdlVG9WaXNpYmxlOihET01SYW5nCiAgICAgW1tbW3JhbmdlIHN0YXJ0Q29udGFpbmVyXSBv
d25lckRvY3VtZW50XSB3ZWJGcmFtZV0gX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOnJhbmdlXTsK
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9p
ZClzY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5nZSB3aXRoSW5zZXQ6KENH
RmxvYXQpaW5zZXQKIHsKICAgICBbW1tbcmFuZ2Ugc3RhcnRDb250YWluZXJdIG93bmVyRG9jdW1l
bnRdIHdlYkZyYW1lXSBfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6cmFuZ2Ugd2l0aEluc2V0Omlu
c2V0XTsKQEAgLTgxNDcsNyArODE0Nyw3IEBAIC0gKHZvaWQpYWRkVmlzaXRlZExpbmtzOihOU0Fy
cmF5ICopdmlzaXQKICAgICAgICAgdmlzaXRlZExpbmtTdG9yZS5hZGRWaXNpdGVkTGluayh1cmxT
dHJpbmcpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAtICh2b2lkKXJlbW92ZVZpc2l0ZWRMaW5rOihOU1VSTCAqKXVybAogewogICAgIF9wcml2YXRl
LT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpLnJlbW92ZVZpc2l0ZWRMaW5rKFVSTCh1cmwpLnN0
cmluZygpKTsKQEAgLTgxNTYsNyArODE1Niw3IEBAIC0gKHZvaWQpcmVtb3ZlVmlzaXRlZExpbms6
KE5TVVJMICopdXJsCiAKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJp
dmF0ZSkKIAogLSAoZmxvYXQpX2hlYWRlckhlaWdodApAQCAtODI4Miw3ICs4MjgyLDcgQEAgLSAo
dm9pZClyZW1vdmVPYnNlcnZlcjooTlNPYmplY3QgKilhbk9icwogCiBAZW5kCiAKLSNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRWRpdGluZwpAQCAtODMxMiw3ICs4
MzEyLDcgQEAgLSAoRE9NUmFuZ2UgKillZGl0YWJsZURPTVJhbmdlRm9yUG9pbnQ6KAogCiAtIChC
T09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5n
ZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0
aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZwog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
RklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vNDk4NTMy
MT4gLSBXZSBjYW4gcGhhc2UgaXQgb3V0IG9uY2UgQXBlcnR1cmUgY2FuIGFkb3B0IHRoZSBuZXcg
YmVoYXZpb3Igb24gdGhlaXIgZW5kCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9BUEVSVFVSRV9RVUlSSykgJiYgW1tbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxl
LkFwZXJ0dXJlIl0pCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC04NDI4LDcgKzg0MjgsNyBAQCAt
ICh2b2lkKXNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlCiAgICAgICAgIHJldHVybjsK
IAogICAgIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGZsYWc7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCBmb3JLZXk6V2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkXTsKICNlbmRpZgog
ICAgIGlmIChbc2VsZiBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZF0pCkBAIC04NDQy
LDcgKzg0NDIsNyBAQCAtIChCT09MKWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkCiAg
ICAgcmV0dXJuIChjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgJiYgW3NlbGYgX2NvbnRp
bnVvdXNDaGVja2luZ0FsbG93ZWRdKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcK
IHsKICAgICBpZiAoIV9wcml2YXRlLT5oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZykgewpAQCAt
ODQ1OCw3ICs4NDU4LDcgQEAgLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyCiAgICAgaWYg
KCFfcHJpdmF0ZS0+YWxsb3dzVW5kbykKICAgICAgICAgcmV0dXJuIG5pbDsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNVbmRvTWFuYWdlciAq
dW5kb01hbmFnZXIgPSBbW3NlbGYgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gdW5kb01hbmFn
ZXJGb3JXZWJWaWV3OnNlbGZdOwogICAgIGlmICh1bmRvTWFuYWdlcikKICAgICAgICAgcmV0dXJu
IHVuZG9NYW5hZ2VyOwpAQCAtODUxNyw3ICs4NTE3LDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlRGVjbGFyYQogCiBAZW5kCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdHcmFt
bWFyQ2hlY2tpbmcpCiAKIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgbWVyZ2VkIGlu
dG8gV2ViVmlld0VkaXRpbmcgd2hlbiB3ZSdyZSBub3QgaW4gQVBJIGZyZWV6ZQpAQCAtODU1Niw3
ICs4NTU2LDcgQEAgLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcgogCiAt
IChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIE5POwogI2Vsc2UK
ICAgICByZXR1cm4gYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwpAQCAtODU2NSw3
ICs4NTY1LDcgQEAgLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYgogCiAt
IChCT09MKWlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxzZQogICAg
IHJldHVybiBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKQEAgLTg1NzQsNyArODU3NCw3
IEBAIC0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogCiAtIChCT09MKWlz
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxzZQogICAgIHJldHVy
biBhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDsKQEAgLTg1ODMsNyArODU4Myw3IEBA
IC0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmwKIAogLSAoQk9PTClpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxzZQogICAgIHJldHVybiBh
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOwpAQCAtODU5MiwxNCArODU5MiwxNCBAQCAt
IChCT09MKWlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlCiAKIC0gKEJPT0wpaXNBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIE5POwogI2Vsc2UKICAgICByZXR1cm4g
YXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKICNlbmRpZgogfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClzZXRBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZwogewpAQCAtODY3MSw3ICs4
NjcxLDcgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3RpbwogICAgIFtz
ZWxmIHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF1dOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGVuZAogCkBAIC04NzUy
LDcgKzg3NTIsNyBAQCAtICh2b2lkKV9wZXJmb3JtUmVzcG9uZGVyT3BlcmF0aW9uOihTRUwpCiAK
IEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJEKQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBGT1JXQVJEKGNsZWFyVGV4dCkKIEZPUldBUkQo
dG9nZ2xlQm9sZCkKIEZPUldBUkQodG9nZ2xlSXRhbGljKQpAQCAtODg0Nyw3ICs4ODQ3LDcgQEAg
KyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQogCiAgICAgTlNVSW50ZWdl
ciBuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogICAgIE5TVUludGVnZXIgbnN1cmxDYWNo
ZURpc2tDYXBhY2l0eSA9IDA7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdW5zaWduZWQgdGlsZUxheWVyUG9vbENhcGFjaXR5ID0gMDsKICNlbmRpZgog
CkBAIC04ODY1LDcgKzg4NjUsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1v
ZGVsKWNhCiAgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAxMDI0
OwogICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikKICAgICAgICAgICAgIGNhY2hlVG90
YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhY2hlVG90YWxD
YXBhY2l0eSA9IDQgKiAxMDI0ICogMTAyNDsgCiAjZW5kaWYKQEAgLTg4NzksNyArODg3OSw3IEBA
ICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2EKICAgICAgICAgLy8gRm91
bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgbnN1cmxDYWNo
ZURpc2tDYXBhY2l0eSA9IFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV07CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gVGlsZUNhY2hlIGxh
eWVyIHBvb2wgY2FwYWNpdHksIGluIGJ5dGVzLgogICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0
KQogICAgICAgICAgICAgdGlsZUxheWVyUG9vbENhcGFjaXR5ID0gMjQgKiAxMDI0ICogMTAyNDsK
QEAgLTg5MzAsNyArODkzMCw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9k
ZWwpY2EKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9
IDIwICogMTAyNCAqIDEwMjQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgLy8gVGlsZUNhY2hlIGxheWVyIHBvb2wgY2FwYWNpdHksIGluIGJ5
dGVzLgogICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0KQogICAgICAgICAgICAgdGlsZUxheWVy
UG9vbENhcGFjaXR5ID0gMjQgKiAxMDI0ICogMTAyNDsKQEAgLTg5NzAsNyArODk3MCw3IEBAICsg
KHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2EKIAogICAgICAgICBkZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsID0gNjBfczsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0KQogICAg
ICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMTYgKiAxMDI0ICogMTAyNDsKICAg
ICAgICAgZWxzZQpAQCAtOTAwMiw3ICs5MDAyLDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDoo
V2ViQ2FjaGVNb2RlbCljYQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuc3VybENhY2hlRGlz
a0NhcGFjaXR5ID0gNTAgKiAxMDI0ICogMTAyNDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBUaWxlQ2FjaGUgbGF5ZXIgcG9vbCBjYXBh
Y2l0eSwgaW4gYnl0ZXMuCiAgICAgICAgIGlmIChtZW1TaXplID49IDEwMjQpCiAgICAgICAgICAg
ICB0aWxlTGF5ZXJQb29sQ2FwYWNpdHkgPSA0OCAqIDEwMjQgKiAxMDI0OwpAQCAtOTAyNSw3ICs5
MDI1LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQogCiAgICAg
YXV0byYgcGFnZUNhY2hlID0gUGFnZUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICBwYWdlQ2FjaGUu
c2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBzdGQ6Om1heChu
c3VybENhY2hlTWVtb3J5Q2FwYWNpdHksIFtuc3VybENhY2hlIG1lbW9yeUNhcGFjaXR5XSk7CiAg
ICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOwogICAgIGlmICgoY2ZDYWNoZSA9IFtuc3VybENhY2hl
IF9DRlVSTENhY2hlXSkpCkBAIC05MDM3LDcgKzkwMzcsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1v
ZGVsOihXZWJDYWNoZU1vZGVsKWNhCiAjZW5kaWYKICAgICBbbnN1cmxDYWNoZSBzZXREaXNrQ2Fw
YWNpdHk6bnN1cmxDYWNoZURpc2tDYXBhY2l0eV07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbV2ViVmlldyBfc2V0VGlsZUNhY2hlTGF5ZXJQb29s
Q2FwYWNpdHk6dGlsZUxheWVyUG9vbENhcGFjaXR5XTsKICNlbmRpZgogCkBAIC05MDUwLDcgKzkw
NTAsNyBAQCArIChXZWJDYWNoZU1vZGVsKV9jYWNoZU1vZGVsCiAgICAgcmV0dXJuIHNfY2FjaGVN
b2RlbDsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAtICh2b2lkKV9vcGVuRnJhbWVJbk5ld1dpbmRvd0Zyb21NZW51OihOU01lbnVJdGVtICopc2Vu
ZGVyCiB7CiAgICAgQVNTRVJUX0FSRyhzZW5kZXIsIFtzZW5kZXIgaXNLaW5kT2ZDbGFzczpbTlNN
ZW51SXRlbSBjbGFzc11dKTsKQEAgLTkxMDMsNyArOTEwMyw3IEBAIC0gKHZvaWQpX3NlYXJjaFdp
dGhTcG90bGlnaHRGcm9tTWVudTooaWQKIAogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3Nw
YWNlXSBzaG93U2VhcmNoUmVzdWx0c0ZvclF1ZXJ5U3RyaW5nOnNlbGVjdGVkU3RyaW5nXTsKIH0K
LSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBAZW5kCiAKQEAgLTkxNjAsNyArOTE2MCw3IEBAIC0gKHZvaWQpX3JldHJpZXZlS2V5Ym9h
cmRVSU1vZGVGcm9tUHJlZmUKICAgICAvLyBCaXQgMCBpcyBzZXQgaWYgdXNlciBjYW4gc2V0IHRo
ZSBmb2N1cyB0byBtZW51cywgdGhlIGRvY2ssIGFuZCB2YXJpb3VzIHdpbmRvd3MgdXNpbmcgdGhl
IGtleWJvYXJkLgogICAgIC8vIEJpdCAxIGlzIHNldCBpZiBjb250cm9scyBvdGhlciB0aGFuIHRl
eHQgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgdGFiIG9yZGVyIChXZWJLaXQgYWxzbyBhbHdh
eXMgaW5jbHVkZXMgbGlzdHMpLgogICAgIF9wcml2YXRlLT5fa2V5Ym9hcmRVSU1vZGUgPSAobW9k
ZSAmIDB4MikgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBjaGVj
ayBmb3IgdGFiYmluZyB0byBsaW5rcwogICAgIGlmIChbX3ByaXZhdGUtPnByZWZlcmVuY2VzIHRh
YnNUb0xpbmtzXSkKICAgICAgICAgX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZSA9IChLZXlib2Fy
ZFVJTW9kZSkoX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZSB8IEtleWJvYXJkQWNjZXNzVGFic1Rv
TGlua3MpOwpAQCAtOTE3NCw3ICs5MTc0LDcgQEAgLSAoS2V5Ym9hcmRVSU1vZGUpX2tleWJvYXJk
VUlNb2RlCiAKICAgICAgICAgW3NlbGYgX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVy
ZW5jZXM6bmlsXTsKICAgICAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIAogICAgICAgICAgICAgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6KSAKICAgICAgICAg
ICAgIG5hbWU6S2V5Ym9hcmRVSU1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CkBAIC05MTg3LDcgKzkxODcsNyBAQCAtIChLZXlib2FyZFVJTW9kZSlfa2V5Ym9hcmRVSU1vZGUK
ICAgICByZXR1cm4gX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZTsKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRJbnNlcnRpb25Q
YXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCiB7CiAgICAgX3ByaXZhdGUtPmlu
c2VydGlvblBhc3RlYm9hcmQgPSBwYXN0ZWJvYXJkOwpAQCAtOTI2Niw3ICs5MjY2LDcgQEAgLSAo
dm9pZClfc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaQogKi8KIGJvb2wgTGF5ZXJGbHVz
aENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKIApAQCAtOTI4
OSw3ICs5Mjg5LDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQog
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBFbnN1cmUgZml4ZWQgcG9zaXRpb25zIGxheWVycyBhcmUgd2hlcmUg
dGhleSBzaG91bGQgYmUuCiAgICAgW21fd2ViVmlldyBfc3luY2hyb25pemVDdXN0b21GaXhlZFBv
c2l0aW9uTGF5b3V0UmVjdF07CiAjZW5kaWYKQEAgLTkzMTUsNyArOTMxNSw3IEBAIGJvb2wgTGF5
ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIAogLSAodm9pZClfc2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyRmx1c2gKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgpAQCAtOTMzNCw3ICs5MzM0LDcgQEAgLSAoQk9PTClfZmx1c2hDb21wb3NpdGluZ0NoYW5n
ZXMKICAgICByZXR1cm4gWUVTOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAtICh2b2lkKV9zY2hlZHVsZUxheWVyRmx1c2hGb3JQZW5kaW5nVGlsZUNh
Y2hlUmVwYWludAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFt
ZV07CkBAIC05MzYzLDcgKzkzNjMsNyBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAg
ICAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVu
Q29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46KFVJVmlldyAqKVtbW3NlbGYgd2luZG93XSBo
b3N0TGF5ZXJdIGRlbGVnYXRlXSBtb2RlOm1vZGVdOwogI2Vsc2UKICAgICAgICAgW19wcml2YXRl
LT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRvd10gc2Ny
ZWVuXV07CkBAIC05NDI1LDcgKzk0MjUsNyBAQCAtICh2b2lkKV9jbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCi0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50KillbGVtZW50IHdpdGhLZXlib2FyZDooQk9P
TCl3aXRoS2V5Ym9hcmQKIHsKICAgICBpZiAoIVtbc2VsZiBwcmVmZXJlbmNlc10gZnVsbFNjcmVl
bkVuYWJsZWRdKQpAQCAtOTYyMiw3ICs5NjIyLDcgQEAgLSAodm9pZCloaWRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlCiAgICAgX3ByaXZhdGUtPmZvcm1WYWxpZGF0aW9uQnViYmxlID0gbnVsbHB0cjsK
IH0KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyICopIF9kZXZpY2VQaWNr
ZXIKIHsKICAgICBpZiAoIV9wcml2YXRlLT5tX3BsYXliYWNrVGFyZ2V0UGlja2VyKQpAQCAtMTAx
MTMsNyArMTAxMTMsNyBAQCAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZToo
CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9yZXNldEFsbEdlb2xvY2F0aW9uUGVy
bWlzc2lvbgogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTEwMTg2LDcgKzEwMTg2LDcg
QEAgKyAodm9pZClfc2V0Rm9udFdoaXRlbGlzdDooTlNBcnJheSAqKXdoaQogfQogQGVuZAogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW1wbGVtZW50YXRp
b24gV2ViVmlldyAoV2ViVmlld0lPU1BERikKIAogKyAoQ2xhc3MpX2dldFBERlJlcHJlc2VudGF0
aW9uQ2xhc3MKQEAgLTEwMjIwLDcgKzEwMjIwLDcgQEAgKyAodm9pZClfc2V0UERGVmlld0NsYXNz
OihDbGFzcylwZGZWaWV3QwogCiAtIChOU1ZpZXcqKWZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcK
IHsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3By
aXZhdGUtPm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyICYmIFtfcHJpdmF0ZS0+bmV3RnVsbHNjcmVl
bkNvbnRyb2xsZXIgaXNGdWxsU2NyZWVuXSkKICAgICAgICAgcmV0dXJuIFtfcHJpdmF0ZS0+bmV3
RnVsbHNjcmVlbkNvbnRyb2xsZXIgd2ViVmlld1BsYWNlaG9sZGVyXTsKICNlbmRpZgpAQCAtMTAy
MzgsMTEgKzEwMjM4LDExIEBAIHZvaWQgV2ViSW5zdGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcih2
b2kKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgICAgIGF1
dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFu
ZGxlcihbXSAoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKSB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAg
ICAgV2ViVGhyZWFkUnVuKF57CiAjZW5kaWYKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpyZWxl
YXNlTWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cyk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAgICAgfSk7CiAjZW5kaWYKICAgICAg
ICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAj
aW1wb3J0IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgIldlYkNhcmV0Q2hhbmdlTGlzdGVuZXIuaCIKICNlbmRpZgogCkBAIC03NywxNyAr
NzcsMTcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogQGNsYXNzIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpICYmIFBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBX
ZWJJbmRpY2F0ZUxheWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBXQUtXaW5kb3c7CiBAY2xhc3MgV2ViRXZlbnQ7CiBAY2xh
c3MgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyOwogI2VuZGlmCiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBAaW50
ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIGlkIGVkaXRpbmdEZWxlZ2F0
ZUZvcndhcmRlcjsKICAgICBpZCBzY3JpcHREZWJ1Z0RlbGVnYXRlOwogICAgIGlkIGhpc3RvcnlE
ZWxlZ2F0ZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZCByZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXI7CiAgICAgaWQgZm9ybURlbGVn
YXRlRm9yd2FyZGVyOwogI2VuZGlmCkBAIC0yMzAsNyArMjMwLDcgQEAgQGludGVyZmFjZSBXZWJW
aWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICAKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXM7CiAgICAgQk9PTCB1c2VTaXRlU3BlY2lmaWNTcG9vZmluZzsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1VSTCAqdXNlclN0eWxlU2hlZXRM
b2NhdGlvbjsKICNlbmRpZgogCkBAIC0yNDQsNyArMjQ0LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3
UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBXZWJIaXN0b3J5RGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hlIGhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9uczsKIAogICAgIEJPT0wgY2xvc2Vk
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEJPT0wg
Y2xvc2luZzsKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgIE5TVUludGVnZXIg
ZGV2aWNlT3JpZW50YXRpb247CkBAIC0yNTgsNyArMjU4LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3
UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIGJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9t
T3V0c2lkZTsKICAgICBCT09MIHVzZXNQYWdlQ2FjaGU7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TQ29sb3IgKmJhY2tncm91bmRDb2xvcjsK
ICNlbHNlCiAgICAgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3I7CkBAIC0yNzYsNyArMjc2LDcg
QEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIGRhc2hi
b2FyZEJlaGF2aW9yQWxsb3dXaGVlbFNjcm9sbGluZzsKICNlbmRpZgogICAgIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEJPT0wgaXNTdG9wcGluZzsK
IAogICAgIGlkIFVJS2l0RGVsZWdhdGU7CkBAIC0zMDUsNyArMzA1LDcgQEAgQGludGVyZmFjZSBX
ZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICNlbmRpZgogCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdlYktpdCBoYXMgYm90aCBhIGds
b2JhbCBwbHVnLWluIGRhdGFiYXNlIGFuZCBhIHNlcGFyYXRlLCBwZXIgV2ViVmlldyBwbHVnLWlu
IGRhdGFiYXNlLiBEYXNoYm9hcmQgdXNlcyB0aGUgcGVyIFdlYlZpZXcgZGF0YWJhc2UuCiAgICAg
V2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlOwogI2VuZGlmCkBAIC0zMjMsNyArMzIz
LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIHBv
c3RzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbnM7CiAgICAgUmVmUHRyPExheWVy
Rmx1c2hDb250cm9sbGVyPiBsYXllckZsdXNoQ29udHJvbGxlcjsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNQYXN0ZWJvYXJkICppbnNlcnRp
b25QYXN0ZWJvYXJkOwogICAgIFJldGFpblB0cjxOU0ltYWdlPiBfbWFpbkZyYW1lSWNvbjsKICNl
bmRpZgpAQCAtMzQ0LDcgKzM0NCw3IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09i
amVjdCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkluZGljYXRlTGF5ZXIg
KmluZGljYXRlTGF5ZXI7CiAjZW5kaWYKICNlbmRpZgpAQCAtMzYxLDcgKzM2MSw3IEBAIEBpbnRl
cmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgaW50IHZhbGlkYXRpb25NZXNz
YWdlVGltZXJNYWduaWZpY2F0aW9uOwogCiAgICAgZmxvYXQgY3VzdG9tRGV2aWNlU2NhbGVGYWN0
b3I7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2Vi
Rml4ZWRQb3NpdGlvbkNvbnRlbnQqIF9maXhlZFBvc2l0aW9uQ29udGVudDsKICNlbmRpZgogCkBA
IC0zNzMsNyArMzczLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsK
IAogICAgIEJPT0wgX2RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb247CiAKLSNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDEx
ICs0MiwxMSBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5M
b29wLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIldlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBv
cnQgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKICNlbmRpZgogCkBAIC0xMjQsNyAr
MTI0LDcgQEAgLSAodm9pZClfd2luZG93VmlzaWJpbGl0eUNoYW5nZWQ6KE5TTm90aQogCiArICh2
b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgLSAoaWQpaW5pdCAKICAgICBk
YXNoYm9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlzU3RvcHBpbmcg
PSBOTzsKICAgICBfZ2VvbG9jYXRpb25Qcm92aWRlciA9IFtXZWJHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIHNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXJdOwogI2VuZGlmCkBAIC0xNzYsNyArMTc2LDcg
QEAgLSAodm9pZClkZWFsbG9jCiB7ICAgIAogICAgIEFTU0VSVChhcHBsaWNhdGlvbklzVGVybWlu
YXRpbmcgfHwgIXBhZ2UpOwogICAgIEFTU0VSVChhcHBsaWNhdGlvbklzVGVybWluYXRpbmcgfHwg
IXByZWZlcmVuY2VzKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIEFTU0VSVCghaW5zZXJ0aW9uUGFzdGVib2FyZCk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClkZWFsbG9jCiAjZW5kaWYKIAog
ICAgIFthcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgcmVsZWFzZV07Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbYmFja2dyb3VuZENvbG9yIHJl
bGVhc2VdOwogI2Vsc2UKICAgICBDR0NvbG9yUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3IpOwpAQCAt
MjAyLDEyICsyMDIsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW21lZGlhU3R5bGUgcmVsZWFz
ZV07CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbaW5kaWNhdGVMYXllciByZWxlYXNlXTsKICNl
bmRpZgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBbVUlLaXREZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBbZm9ybURlbGVn
YXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIFtfY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgcmVsZWFz
ZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IERpY3Rpb25hcnlQb3B1cElu
Zm87CiB9CiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBEcmFnSXRlbTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgc3RydWN0IERy
YWdJdGVtOwogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjsKIGNsYXNzIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5o
PgogI2VuZGlmCkBAIC0xNTMsNyArMTUzLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3
SW50ZXJuYWwpCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJTYWZlRm9yd2FyZGVyKQogLSAoaWQp
YXN5bmNGb3J3YXJkZXI7CiBAZW5kCkBAIC0xNzAsMjMgKzE3MCwyMyBAQCBAaW50ZXJmYWNlIFdl
YlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAtIChXVEY6OlN0cmluZylfdXNlckFnZW50U3Ry
aW5nOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogLSAoTlNNZW51ICopX21lbnVGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50
IGRlZmF1bHRJdGVtczooTlNBcnJheSAqKWl0ZW1zOwogI2VuZGlmCiAtIChpZClfVUlEZWxlZ2F0
ZUZvcndhcmRlcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC0gKGlkKV9VSURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcjsKICNlbmRpZgogLSAo
aWQpX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcjsKIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlk
KV9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKIC0gKGlkKV9yZXNvdXJjZUxvYWREZWxlZ2F0
ZUZvcndhcmRlcjsKIC0gKGlkKV9VSUtpdERlbGVnYXRlRm9yd2FyZGVyOwogI2VuZGlmCiAtICh2
b2lkKV9wdXNoUGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzOwogLSAodm9pZClfcG9wUGVyZm9y
bWluZ1Byb2dyYW1tYXRpY0ZvY3VzOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAtICh2b2lkKV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lOwogI2VuZGlmCiArIChCT09MKV92aWV3Q2xhc3M6KENsYXNzICopdkNs
YXNzIGFuZFJlcHJlc2VudGF0aW9uQ2xhc3M6KENsYXNzICopckNsYXNzIGZvck1JTUVUeXBlOihO
U1N0cmluZyAqKU1JTUVUeXBlIGFsbG93aW5nUGx1Z2luczooQk9PTClhbGxvd1BsdWdpbnM7CkBA
IC0yMDIsNyArMjAyLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3T3RoZXJJbnRlcm5h
bAogLSAoQk9PTClfaXNQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXM7CiAtICh2b2lkKV9tb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeSBtb2RpZmllckZs
YWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3M7CiAtIChXZWJWaWV3ICopX29wZW5OZXdXaW5k
b3dXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfd3JpdGVJbWFnZUZvckVsZW1l
bnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgd2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAq
KXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKIC0gKHZvaWQp
X3dyaXRlTGlua0VsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgd2l0aFBhc3RlYm9hcmRU
eXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVi
b2FyZDsKIC0gKHZvaWQpX29wZW5GcmFtZUluTmV3V2luZG93RnJvbU1lbnU6KE5TTWVudUl0ZW0g
KilzZW5kZXI7CkBAIC0yMTEsNyArMjExLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3
T3RoZXJJbnRlcm5hbAogI2VuZGlmCiAtICh2b2lkKV9wcm9ncmVzc0NvbXBsZXRlZDooV2ViRnJh
bWUgKilmcmFtZTsKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilm
cmFtZTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAo
dm9pZClfZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogLSAodm9pZClf
ZGlkRmFpbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciBmb3JGcmFtZTooV2ViRnJhbWUg
KilmcmFtZTsKIC0gKHZvaWQpX2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJy
b3IgKillcnJvciBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAtICh2b2lkKXNldEN1
cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxpZ2h0ICopbm9kZUhpZ2hsaWdodDsKIC0g
KFdlYk5vZGVIaWdobGlnaHQgKiljdXJyZW50Tm9kZUhpZ2hsaWdodDsKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWFkZFBsdWdpbkluc3Rh
bmNlVmlldzooTlNWaWV3ICopdmlldzsKIC0gKHZvaWQpcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3
OihOU1ZpZXcgKil2aWV3OwogLSAodm9pZClyZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXdzRm9yOihX
ZWJGcmFtZSopd2ViRnJhbWU7CkBAIC0yNDcsMTEgKzI0NywxMSBAQCBAaW50ZXJmYWNlIFdlYlZp
ZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAKICsgKEJPT0wpX2NhbkhhbmRsZVJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgZm9yTWFpbkZyYW1lOihCT09MKWZvck1haW5GcmFtZTsKIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9z
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wp
X2lzU3RvcHBpbmc7CiAtIChCT09MKV9pc0Nsb3Npbmc7CiAKQEAgLTI4MSw3ICsyODEsNyBAQCBA
aW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBkZWZpbmVk
KF9fY3BsdXNwbHVzKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAtIChCT09MKV9zdXBwb3J0c0Z1bGxT
Y3JlZW5Gb3JFbGVtZW50OihXZWJDb3JlOjpFbGVtZW50KillbGVtZW50IHdpdGhLZXlib2FyZDoo
Qk9PTCl3aXRoS2V5Ym9hcmQ7CiAtICh2b2lkKV9lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50OihX
ZWJDb3JlOjpFbGVtZW50KillbGVtZW50OwogLSAodm9pZClfZXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50OihXZWJDb3JlOjpFbGVtZW50KillbGVtZW50OwpAQCAtMzA1LDcgKzMwNSw3IEBAIEBpbnRl
cmZhY2UgV2ViVmlldyAoV2ViVmlld090aGVySW50ZXJuYWwKIC0gKHZvaWQpX3NldFByZXNzdXJl
RXZlbnQ6KE5TRXZlbnQgKilldmVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIC0gKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIgKikgX2RldmljZVBpY2tlcjsKIC0gKHZvaWQpX2FkZFBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50Oih1aW50NjRfdCljbGllbnRJZDsKIC0gKHZvaWQpX3JlbW92ZVBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50Oih1aW50NjRfdCljb250ZXh0SWQ7CkBAIC0zMjQsNyArMzI0LDcgQEAgQGlu
dGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3T3RoZXJJbnRlcm5hbAogLSAodm9pZClzaG93Rm9ybVZh
bGlkYXRpb25NZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ugd2l0aEFuY2hvclJlY3Q6KE5TUmVj
dClhbmNob3JSZWN0OwogLSAodm9pZCloaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlOwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE1h
aW5GcmFtZUljb246KE5TSW1hZ2UgKilpY29uOwogI2VuZGlmCiBAZW5kCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyNjEp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEgQEAKKzIw
MTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAg
U3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dp
bmdTb3VyY2UuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKGdldFNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWRDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2FsbFVJ
U2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVBcHBNYWluLm1t
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9T
Lm06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250cm9sbGVyLm06
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChkZXN0cm95V2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVz
Rm9yVGVzdGluZyk6CisgICAgICAgIChhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKToKKyAgICAg
ICAgKHJlbGVhc2VHbG9iYWxDb250cm9sbGVycyk6CisgICAgICAgIChhZGRUZXN0UGx1Z2luc1Rv
UGx1Z2luU2VhcmNoUGF0aCk6CisgICAgICAgIChwcmVwYXJlQ29uc2lzdGVudFRlc3RpbmdFbnZp
cm9ubWVudCk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZU1haW4pOgorICAgICAgICAoZHVtcEZyYW1lQXNQREYpOgorICAgICAgICAoZHVtcEJhY2tG
b3J3YXJkTGlzdEZvckFsbFdpbmRvd3MpOgorICAgICAgICAodXBkYXRlRGlzcGxheSk6CisgICAg
ICAgIChkdW1wKToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKGRpc3BsYXlXZWJWaWV3KToK
KyAgICAgICAgKGRpc3BsYXlBbmRUcmFja1JlcGFpbnRzV2ViVmlldyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW06CisgICAgICAgICgtW0R1bXBS
ZW5kZXJUcmVlV2luZG93IGNsb3NlXSk6CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlV2luZG93
IHdlYlZpZXddKToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVXaW5kb3cgd2ViVmlld1N0YXJ0
ZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbRXZl
bnRTZW5kaW5nQ29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAg
ICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtFdmVudFNl
bmRpbmdDb250cm9sbGVyIGN1cnJlbnRFdmVudFRpbWVdKToKKyAgICAgICAgKC1bRXZlbnRTZW5k
aW5nQ29udHJvbGxlciBjbGVhcktpbGxSaW5nXSk6CisgICAgICAgIChtb2RpZmllckZsYWdzKToK
KyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZURvd246d2l0aE1vZGlmaWVy
czpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBzY2FsZVBhZ2VCeTphdFg6
YW5kWTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhN
b2RpZmllcnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3Zl
VG9YOlk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxC
eVg6YW5kWTpjb250aW51b3VzbHk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIga2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW0ZyYW1lTG9h
ZERlbGVnYXRlIGluaXRdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgZGVhbGxvY10p
OgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBwcm9jZXNzV29yazpdKToKKyAgICAgICAg
KC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENvbW1pdExv
YWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgZGlkQ2xlYXJXaW5k
b3dPYmplY3RJblN0YW5kYXJkV29ybGRGb3JGcmFtZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIgdGltZXJGaXJlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TWFpbkZyYW1lSXNGaXJzdFJl
c3BvbmRlcik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9u
RW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZSk6CisgICAgICAgIChUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKToKKyAgICAg
ICAgKFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6YWJvcnRNb2RhbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0aW9uKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpm
b2N1c1dlYlZpZXcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9y
KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkIGNv
bnN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIG1vZGFsV2luZG93V2lsbENsb3NlOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZp
ZXdSdW5Nb2RhbDpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OnN1cHBvcnRzRnVs
bFNjcmVlbkZvckVsZW1lbnQ6d2l0aEtleWJvYXJkOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRl
IGRlYWxsb2NdKToKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9i
amMtY2xhc3MtbmFtZXM6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL3Nw
aS9VSUtpdFRlc3RTUEkuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3
aW4vV2Vha0xpbmtpbmcuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdDo6U2V0VXApOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTm9IaXN0b3J5SXRlbVNjcm9sbFRv
RnJhZ21lbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FuaW1hdGVkUmVzaXplLm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9CdW5kbGVSYW5nZUhhbmRsZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW06
CisgICAgICAgICgtW0J1bmRsZVJhbmdlSGFuZGxlUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db2RpbmcubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
cHlIVE1MLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29w
eVVSTC5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFF
bmFibGVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlp
bmcubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jhc2gubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FZGl0b3JTdGF0ZVRl
c3RzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXhpdEZ1
bGxzY3JlZW5PbkVudGVyUGlQLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRmluZEluUGFnZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0ZpeGVkTGF5b3V0U2l6ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvR2VvbG9jYXRpb24ubW06CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZUNs
ZWFyLm1tOgorICAgICAgICAoZGVmYXVsdFdlYnNpdGVDYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05TRmlsZU1hbmFnZXJFeHRy
YXMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5
aW5nLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxh
eWluZ0NvbnRyb2xzVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QYXN0ZUhUTUwubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlUlRG
RC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9v
ay5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbmRlcmVk
SW1hZ2VXaXRoT3B0aW9ucy5tbToKKyAgICAgICAgKHJ1blRlc3RXaXRoV2lkdGgpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRp
b25zUGx1Z0luLm1tOgorICAgICAgICAoLVtSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4g
cmVuZGVySW1hZ2VXaXRoV2lkdGg6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaHJpbmtUb0ZpdC5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Zpc2libGVDb250
ZW50UmVjdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAocGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVs
dGlwbGVBdHRhY2htZW50cyk6CisgICAgICAgIChwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhJbWFn
ZSk6CisgICAgICAgIChwbGF0Zm9ybUNvcHlQTkcpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld1RhcmdldEZv
ckFjdGlvbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tQREZWaWV3U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2subW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3RpdmF0ZWRF
bGVtZW50SW5mby5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5wdXREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvQXVk
aW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRMZWdhY3kvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9BY2Nlc3NpbmdQYXN0ZWRJbWFn
ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY2Nlc3NpYmlsaXR5VGVz
dHNJT1MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRU
ZXN0cy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRl
c3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0ZvY3VzUHJlc2Vy
dmF0aW9uVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9h
cmRJbnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Jl
bmRlcmluZ1Byb2dyZXNzVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvU2Nyb2xsVmlld0luc2V0VGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvU2V0VGltZW91dEZ1bmN0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL1N5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvVGVzdElucHV0RGVsZWdhdGUubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvVGV4dEF1dG9zaXppbmdCb29zdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9VSVBhc3RlYm9hcmRUZXN0cy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdUZXN0cy5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
bmZpZy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9y
SU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9s
bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xs
ZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVy
TWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1YlVSTCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjp3ZWJQcm9jZXNzTmFtZSk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpuZXR3b3JrUHJvY2Vzc05hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
aW52b2tlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2Vi
Vmlld0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmltYWdlQ291
bnRJbkdlbmVyYWxQYXN0ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmNsZWFuVXBLZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjprZXlFeGlz
dHNJbktleWNoYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5u
ZXJXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5u
ZXJXS1dlYlZpZXcubW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tOgorCiAyMDE4LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1BTT05dIENhcCBudW1iZXIgb2YgU3VzcGVuZGVkUGFnZVByb3h5
IG9iamVjdHMgYW5kIGFsbG93IGEgV2ViUGFnZVByb3h5IHRvIGhhdmUgbW9yZSB0aGFuIG9uZQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZpY2F0aW9u
TGlzdGVuZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFp
blB0cjxOb3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAj
ZW5kaWYKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCi0jaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2RlZmluZSBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAxCiAjZWxzZQogI2RlZmlu
ZSBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAwCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBpbmRleE9mQ2hpbGRDYWxs
YmFjayhKCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIChkb3VibGUpdG9B
WEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVsZW1lbnQpKTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgSlNW
YWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNlbnRl
bmNlQXRPZmZzZXRDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
c2VudGVuY2VBdE9mZnNldC5nZXQoKSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldElzU2VhcmNoRmll
bGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CkBAIC0x
NTI4LDkgKzE1MjgsOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB0ZXh0TWFya2VyUmFuZ2VNYXRjaGVz
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgSlNWYWx1ZVJlZiBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGF1dG8gdmFsdWVTdHJpbmcgPSB0b0FYRWxlbWVu
dCh0aGlzT2JqZWN0KS0+c3VwcG9ydGVkQWN0aW9ucygpOwpAQCAtMTU1NCw3ICsxNTU0LDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgbWF0aFByZXNjcmlwdHNEZXNjcmlwdAogLy8gSW1wbGVtZW50YXRp
b24KIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KLSNpZiAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpIHsgcmV0dXJuIDA7IH0KIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9u
KGludCwgaW50KSB7IHJldHVybiAwOyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
dFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0IHsgfQpAQCAtMTU2
NSw3ICsxNTY1LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbAog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4geyBudWxscHRyIH07IH0K
ICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0VmFsdWUoSlNTdHJpbmdSZWYpIHsgfQpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQogewogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTg0NSw3ICsxODQ1LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRKUwogICAgICAgICB7ICJ2ZXJ0aWNhbFNjcm9sbGJhciIsIHZlcnRpY2FsU2Nyb2xs
YmFyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic3RhcnRUZXh0TWFya2VyIiwgc3Rh
cnRUZXh0TWFya2VyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5kVGV4dE1hcmtl
ciIsIGVuZFRleHRNYXJrZXJDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB7ICJpZGVudGlmaWVyIiwgZ2V0SWRl
bnRpZmllckNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRyYWl0cyIsIGdldFRyYWl0
c0NhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVsZW1lbnRUZXh0UG9zaXRpb24iLCBn
ZXRFbGVtZW50VGV4dFBvc2l0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTE4NTQsOCArMTg1
NCw4IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAg
eyAiaGFzQ29udGFpbmVkQnlGaWVsZHNldFRyYWl0IiwgaGFzQ29udGFpbmVkQnlGaWVsZHNldFRy
YWl0Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNTZWFyY2hGaWVsZCIsIGdldElz
U2VhcmNoRmllbGRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1RleHRBcmVhIiwg
Z2V0SXNUZXh0QXJlYUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIHsgInN1cHBvcnRlZEFjdGlvbnMiLCBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2ss
IDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAibWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRo
UG9zdHNjcmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm1h
dGhQcmVzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJh
Y2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAid29yZEF0T2Zmc2V0Iiwgd29yZEF0T2Zm
c2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibGluZUF0T2Zmc2V0IiwgbGluZUF0T2Zm
c2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2VudGVuY2VBdE9mZnNldCIsIHNlbnRl
bmNlQXRPZmZzZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgeyAibGlua2VkRWxlbWVudCIsIGxpbmtlZEVs
ZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJoZWFkZXJFbGVtZW50QXRJbmRleCIs
IGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVu
dHNGb3JSYW5nZSIsIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IHVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiwgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1
ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHks
IGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTVmFsdWVS
ZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBi
b29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiBhbWJp
Z3VpdHlSZXNvbHV0aW9uLCBKU1ZhbHVlUmVmIHNlYXJjaFN0cmluZ3MsIEpTU3RyaW5nUmVmIHJl
cGxhY2VtZW50U3RyaW5nLCBKU1N0cmluZ1JlZiBhY3Rpdml0eSk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBlbGVtZW50c0ZvclJhbmdlKHVu
c2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYgZWxlbWVudHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdG
b3JTZWxlY3Rpb24oKTsKICAgICB2b2lkIGluY3JlYXNlVGV4dFNlbGVjdGlvbigpOwpAQCAtMjk3
LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBi
ZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9uIG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0
aW1lbHkgZmFzaGlvbi4KICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CiAg
ICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRyYWl0cygpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBpZGVudGlmaWVyKCk7CiAgICAgaW50IGVsZW1lbnRUZXh0UG9zaXRpb24oKTsKQEAgLTMx
MSw5ICszMTEsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSB0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKEpTU3RyaW5nUmVmLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAg
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBSZXR1cm5zIGFuIG9yZGVyZWQgbGlz
dCBvZiBzdXBwb3J0ZWQgYWN0aW9ucyBmb3IgYW4gZWxlbWVudC4KICAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gc3VwcG9ydGVkQWN0aW9ucygpOwogICAgIApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZUZpbGVEcmFnZ2luZ1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEy
ICs1NiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW5jbHVkZSA8d3Rm
L0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
PENhcmJvbi9DYXJib24uaD4KICNlbmRpZgogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5n
RW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAo
YXJndW1lbnRDb3VudCA8IDEpCkBAIC0xODQ0LDcgKzE4NDQsNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBnZXRXZWJIaXN0b3J5SXRlbUNvdW50CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFNlY3VyZUV2
ZW50SW5wdXRJc0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpOwogI2Vsc2UKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGZhbHNlKTsKQEAgLTIyMTYsNyAr
MjIxNiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmMKICAgICAg
ICAgeyAic2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkIiwgc2V0U3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lvbmFsRnJh
bWVMb2FkcyIsIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCBzZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB7ICJzZXRUZWxlcGhvbmVOdW1iZXJQYXJz
aW5nRW5hYmxlZCIsIHNldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0UGFnZVBhdXNlZCIsIHNldFBhZ2VQYXVzZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogI2VuZGlmCkBAIC0yNDQ0LDcgKzI0NDQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJ1
blVJU2NyaXB0KEpTQ29udGV4dFJlCiB2b2lkIFRlc3RSdW5uZXI6OmNhbGxVSVNjcmlwdENhbGxi
YWNrKHVuc2lnbmVkIGNhbGxiYWNrSUQsIEpTU3RyaW5nUmVmIHJlc3VsdCkKIHsKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvdGVjdGVkUmVzdWx0KHJlc3VsdCk7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRCwgcHJv
dGVjdGVkUmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IHByb3RlY3RlZFRoaXMtPm1haW5GcmFtZUpTQ29udGV4dCgpOwogICAgICAgICBKU1ZhbHVlUmVm
IHJlc3VsdFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcHJvdGVjdGVkUmVzdWx0
LmdldCgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVk
KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCk7
CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRpb24sIEpT
U3RyaW5nUmVmIHBvbGljeSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBzZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZChib29sIGVu
YWJsZSk7CiAgICAgdm9pZCBzZXRQYWdlUGF1c2VkKGJvb2wgcGF1c2VkKTsKICNlbmRpZgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBw
b3J0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKICNpZiBQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSAiTUQ1LmgiCi0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBl
cy5oPgogI2RlZmluZSBDT01NT05fRElHRVNUX0ZPUl9PUEVOU1NMCiAjaW5jbHVkZSA8Q29tbW9u
Q3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkR1bXBSZW5k
ZXJUcmVlLmgiCiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShJT1Mp
CisjaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
Ly8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIKIApAQCAtODIsNCArODIsNCBAQCBQbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VGV4CiAgICAgcmV0dXJuIG1fdGV4dE1h
cmtlclJhbmdlOwogfQogCi0jZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJCiAgICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCi0j
aWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oSU9TKQorI2lmIFNVUFBPUlRT
X0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFRleHQgbWFya2Vy
cwogCkBAIC02NTYsNyArNjU2LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nl
c3NpYmlsaQogfQogCiAKLSNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI3ByYWdtYSBtYXJrIFVudXNlZAogCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUFwcE1haW4u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZU1hYy5oIgogCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmll
dy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0R1bXBS
ZW5kZXJUcmVlQnJvd3NlclZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVU
aHJlYWQuaD4KQEAgLTE3Myw0ICsxNzMsNCBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29t
aW5nOihVSVNjcm9sCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1Rl
eHRJbnB1dENvbnRyb2xsZXJJT1MubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRleHRJ
bnB1dENvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzUxMDYyODc+IE9ubHkgcGFydGlh
bCBzdXBwb3J0IGZvciBUZXh0SW5wdXRDb250cm9sbGVyIGhhcyBiZWVuIGltcGxlbWVudGVkIG9u
IGlPUyBzbyBmYXIuIFdlIG5lZWQgdG8gZmluaXNoIHRoZSBpbXBsZW1lbnRhdGlvbgogLy8gaGVy
ZSB0byBicmluZyBpdCB1cCB0byBwYXJpdHkgd2l0aCB0aGUgTWFjIHZlcnNpb24gKHNlZSBUZXh0
SW5wdXRDb250cm9sbGVyTWFjLm0pLCBhbmQgdGhlbiByZWVuYWJsZSBza2lwcGVkIGlPUyB0ZXN0
cyB0aGF0IHVzZSBUZXh0SW5wdXRDb250cm9sbGVyLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIlVJU2NyaXB0Q29udHJvbGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcuaCIK
ICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5oIgpAQCAtMzg3LDQgKzM4Nyw0IEBAIEpTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW8KIAogfQogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FwcGxlU2NyaXB0Q29udHJvbGxlci5tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250cm9sbGVy
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiQXBwbGVTY3JpcHRDb250cm9sbGVyLmgiCiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+ICAgLy8gZm9yIGFlRGVzY0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLCB3aGljaCBpcyBwZW5kaW5nIEFQSSByZXZpZXcKQEAg
LTEyOSw0ICsxMjksNCBAQCAtIChOU1N0cmluZyAqKWRvSmF2YVNjcmlwdDooTlNTdHJpbmcgKilh
CiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBACiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRHluYW1pY1Njcm9s
bEJhcnNWaWV3Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5oIgogI2ltcG9y
dCAiSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBA
IC0xMjUsNyArMTI1LDcgQEAgZXh0ZXJuICJDIiB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFj
ZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZAogCkBAIC0x
NjUsNyArMTY1LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3ICgpCiAtIChCT09MKV9mbHVzaENvbXBv
c2l0aW5nQ2hhbmdlczsKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdJbnRlcm5hbEZvclRlc3Rp
bmcpCiAtIChXZWJDb3JlOjpGcmFtZSopX21haW5Db3JlRnJhbWU7CiBAZW5kCkBAIC0yMDgsNyAr
MjA4LDcgQEAgc3RhdGljIFJlc291cmNlTG9hZERlbGVnYXRlICpyZXNvdXJjZUxvYQogc3RhdGlj
IEhpc3RvcnlEZWxlZ2F0ZSAqaGlzdG9yeURlbGVnYXRlOwogUG9saWN5RGVsZWdhdGUgKnBvbGlj
eURlbGVnYXRlID0gbnVsbHB0cjsKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGlj
eURlbGVnYXRlID0gbnVsbHB0cjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIHN0YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVz
aXplckRlbGVnYXRlOwogI2VuZGlmCiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+IGFsbG93ZWRIb3N0CiAKIHN0YXRpYyBXZWJIaXN0b3J5SXRlbSAqcHJl
dlRlc3RCRkl0ZW07IC8vIGN1cnJlbnQgYi9mIGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlv
dXMgdGVzdAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBj
b25zdCBDR1JlY3QgbGF5b3V0VGVzdFZpZXdwb3J0UmVjdCA9IHsgezAsIDB9LCB7c3RhdGljX2Nh
c3Q8Q0dGbG9hdD4oVGVzdFJ1bm5lcjo6dmlld1dpZHRoKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
VGVzdFJ1bm5lcjo6dmlld0hlaWdodCl9IH07CiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpn
V2ViQnJvd3NlclZpZXcgPSBuaWw7CiBEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXcgKmdXZWJT
Y3JvbGxWaWV3ID0gbmlsOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEln
bm9yZVdlYkNvcmVOb2RlTGVha3MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TU2V0ICphbGxvd2Vk
Rm9udEZhbWlseVNldCgpCiB7CiAgICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tO
U1NldCBzZXRXaXRoT2JqZWN0czoKQEAgLTU4NSwxMCArNTg1LDEwIEBAIHN0YXRpYyB2b2lkIGFj
dGl2YXRlRm9udHNJT1MoKQogICAgIGZvbnREYXRhKEZXRlRURik7CiAgICAgZm9udERhdGEoRldG
T1RGKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHN0YXRpYyB2b2lkIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChVSVdl
YkJyb3dzZXJWaWV3ICp3ZWJCcm93c2VyVmlldywgVUlXZWJTY3JvbGxWaWV3ICpzY3JvbGxWaWV3
KQogewogICAgIC8vIFRoZXNlIHZhbHVlcyBtYXRjaCBNb2JpbGVTYWZhcmkncywgc2VlIC1bVGFi
RG9jdW1lbnQgX2NyZWF0ZURvY3VtZW50Vmlld10uCkBAIC02MzgsNyArNjM4LDcgQEAgc3RhdGlj
IHZvaWQgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZAogfQogI2VuZGlmCiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBEUlRNb2Nr
U2Nyb2xsZXIgOiBOU1Njcm9sbGVyCiBAZW5kCiAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMg
dm9pZCByZWdpc3Rlck1vY2tTY3JvbGxiYXJzKCkKIAogV2ViVmlldyAqY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdygpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgVGVzdFJ1bm5l
cjo6dmlld1dpZHRoLCBUZXN0UnVubmVyOjp2aWV3SGVpZ2h0KTsKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZWxzZQpAQCAtNzI4LDcg
KzcyOCw3IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBb
V2ViVmlldyBfc2V0Rm9udFdoaXRlbGlzdDpmb250V2hpdGVsaXN0KCldOwogI2VuZGlmCiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFt3ZWJWaWV3
IHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDpZRVNdOwogICAgIFt3ZWJWaWV3IHNl
dEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpOT107CiAgICAgW3dlYlZpZXcgc2V0
QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6Tk9dOwpAQCAtNzg2LDcgKzc4Niw3IEBAIFdl
YlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBhZGp1c3RXZWJEb2N1
bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2ViQnJvd3NlclZpZXcsIHNjcm9sbFZpZXcpOwogI2Vu
ZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZvciByZWFzb25zIHRoYXQgYXJlIG5vdCBlbnRpcmVseSBjbGVhciwgdGhlIGZvbGxvd2lu
ZyBwYWlyIG9mIGNhbGxzIG1ha2VzIFdlYlZpZXcgaGFuZGxlIGl0cwogICAgIC8vIGR5bmFtaWMg
c2Nyb2xsYmFycyBwcm9wZXJseS4gV2l0aG91dCBpdCwgZXZlcnkgZnJhbWUgd2lsbCBhbHdheXMg
aGF2ZSBzY3JvbGxiYXJzLgogICAgIE5TQml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0gW3dlYlZp
ZXcgYml0bWFwSW1hZ2VSZXBGb3JDYWNoaW5nRGlzcGxheUluUmVjdDpbd2ViVmlldyBib3VuZHNd
XTsKQEAgLTgxMiwxMyArODEyLDEzIEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3Jl
ZW5XaW5kb3cKIHN0YXRpYyB2b2lkIGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KFdl
YlZpZXcgKndlYlZpZXcpCiB7CiAgICAgQVNTRVJUKHdlYlZpZXcgPT0gW21haW5GcmFtZSB3ZWJW
aWV3XSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOU1dpbmRvdyAqd2luZG93ID0gW3dlYlZpZXcgd2luZG93XTsKICNlbmRpZgogICAgIFt3ZWJW
aWV3IGNsb3NlXTsKICAgICBtYWluRnJhbWUgPSBuaWw7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdvcmsgYXJvdW5kIHByb2JsZW0gd2hl
cmUgcmVnaXN0ZXJpbmcgZHJhZyB0eXBlcyBsZWF2ZXMgYW4gb3V0c3RhbmRpbmcKICAgICAvLyAi
cGVyZm9ybSBzZWxlY3RvciIgb24gdGhlIHdpbmRvdywgd2hpY2ggcmV0YWlucyB0aGUgd2luZG93
LiBJdCdzIGEgYml0CiAgICAgLy8gaW5lbGVnYW50IGFuZCBwZXJoYXBzIGRhbmdlcm91cyB0byBq
dXN0IGJsb3cgdGhlbSBhbGwgYXdheSwgYnV0IGluIHByYWN0aWNlCkBAIC04OTUsMTggKzg5NSwx
OCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW3ByZWZl
cmVuY2VzIHNldEphdmFFbmFibGVkOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0SmF2YVNjcmlw
dEVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RWRpdGFibGVMaW5rQmVoYXZpb3I6
V2ViS2l0RWRpdGFibGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXldOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3ByZWZlcmVuY2VzIHNldFRhYnNU
b0xpbmtzOk5PXTsKICNlbmRpZgogICAgIFtwcmVmZXJlbmNlcyBzZXRET01QYXN0ZUFsbG93ZWQ6
WUVTXTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFtwcmVmZXJlbmNlcyBzZXRTaG91bGRQcmludEJhY2tncm91bmRzOllFU107CiAjZW5kaWYKICAg
ICBbcHJlZmVyZW5jZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2Vy
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0WFNTQXVkaXRvckVuYWJsZWQ6Tk9dOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFBsdWdJbnNFbmFibGVkOllFU107Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbcHJlZmVyZW5jZXMgc2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlOllFU107CiAjZW5kaWYKIApAQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbcHJlZmVyZW5jZXMgc2V0SW52aXNp
YmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdWJwaXhl
bEFudGlhbGlhc2VkTGF5ZXJUZXh0RW5hYmxlZDpOT107CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBFbmFibGUgdGhlIHRyYWNrZXIgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBmaXJzdCBXZWJWaWV3IHdpbGwKICAgICAvLyBjYXVzZSBpbml0aWFsaXph
dGlvbiB0byB1c2UgdGhlIGNvcnJlY3QgZGF0YWJhc2UgcGF0aHMuCiAgICAgW3ByZWZlcmVuY2Vz
IHNldFN0b3JhZ2VUcmFja2VyRW5hYmxlZDpZRVNdOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICNlbmRpZgogICAgIFtwcmVmZXJl
bmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChbcHJlZmVyZW5jZXMgbW9j
a1Njcm9sbGJhcnNFbmFibGVkXSk7CiAjZW5kaWYKIApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgc3Rh
dGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aQogLy8gQ2FsbGVkIG9uY2Ugb24g
RHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWVzRm9yVGVzdGluZygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCiAKQEAgLTEwMzksNyAr
MTAzOSw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAgICAg
ICAgV2ViS2l0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja1ByZWZlcmVuY2VLZXk6IEBZRVMsCiAg
ICAgICAgIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmli
dXRlS2V5OiBATk8sCiAgICAgICAgIEAiVXNlV2ViS2l0V2ViSW5zcGVjdG9yIjogQFlFUywKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5T
UHJlZmVycmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLAogICAgICAgICBAIk5TVXNl
ckRpY3Rpb25hcnlSZXBsYWNlbWVudEl0ZW1zIjogQFtdLAogICAgICAgICBAIk5TVGVzdENvcnJl
Y3Rpb25EaWN0aW9uYXJ5IjogQHsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHN0YXRpYyB2b2lkIHNl
dERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAgICAgICAgfSwKICNlbmRpZgogICAgICAgICBA
IkFwcGxlU2Nyb2xsQmFyVmFyaWFudCI6IEAiRG91YmxlTWF4IiwKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TU2Nyb2xsQW5pbWF0aW9u
RW5hYmxlZCI6IEBOTywKICNlbmRpZgogICAgICAgICBAIk5TT3ZlcmxheVNjcm9sbGVyc0VuYWJs
ZWQiOiBATk8sCkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2Jh
bENvbnRyb2xsZXJzKCkKICAgICBwb2xpY3lEZWxlZ2F0ZSA9IFtbUG9saWN5RGVsZWdhdGUgYWxs
b2NdIGluaXRdOwogICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IFtbSGlzdG9yeURlbGVnYXRlIGFsbG9j
XSBpbml0XTsKICAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBbW0RlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSBhbGxvY10gaW5pdF07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IFtbU2Nyb2xsVmlld1Jlc2l6
ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CiAjZW5kaWYKIH0KQEAgLTExMDUsNyArMTEwNSw3IEBA
IHN0YXRpYyB2b2lkIHJlbGVhc2VHbG9iYWxDb250cm9sbGVycygpCiAgICAgcmVsZWFzZUFuZFpl
cm8oJnJlc291cmNlTG9hZERlbGVnYXRlKTsKICAgICByZWxlYXNlQW5kWmVybygmdWlEZWxlZ2F0
ZSk7CiAgICAgcmVsZWFzZUFuZFplcm8oJnBvbGljeURlbGVnYXRlKTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZWxlYXNlQW5kWmVybygmc2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZSk7CiAjZW5kaWYKIH0KQEAgLTExNDUsNyArMTE0NSw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVHbG9iYWxzRnJvbUNvbW1hbmQKIAogc3RhdGljIHZvaWQgYWRk
VGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciogZXhlY3V0YWJsZVBhdGgp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBO
U1N0cmluZyAqcHdkID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpleGVjdXRhYmxl
UGF0aF0gc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKICAgICBbV2ViUGx1Z2lu
RGF0YWJhc2Ugc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOltOU0FycmF5IGFycmF5V2l0aE9i
amVjdDpwd2RdXTsKICAgICBbW1dlYlBsdWdpbkRhdGFiYXNlIHNoYXJlZERhdGFiYXNlXSByZWZy
ZXNoXTsKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3RpbmdTZXJ2ZXJM
b29wKCkKIAogc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0aW5nRW52aXJvbm1lbnQo
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cG9zZUFzQ2xhc3MoIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCIsICJOU1Bhc3RlYm9hcmQiKTsK
ICAgICBwb3NlQXNDbGFzcygiRHVtcFJlbmRlclRyZWVFdmVudCIsICJOU0V2ZW50Iik7CiAjZWxz
ZQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0
aW5nRW52aQogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdU
ZXN0aW5nU2Vzc2lvbl07CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGFkanVzdEZvbnRzKCk7CiAgICAgcmVnaXN0ZXJNb2NrU2Nyb2xsYmFycygp
OwogCkBAIC0xMjU2LDcgKzEyNTYsNyBAQCB2b2lkIHdyaXRlQ3Jhc2hlZE1lc3NhZ2VPbkZhdGFs
RXJyb3IoaW50CiAKIHZvaWQgZHVtcFJlbmRlclRyZWUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFy
Z3ZbXSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBzZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CiAgICAgW1VJQXBwbGljYXRpb24g
c2hhcmVkQXBwbGljYXRpb25dLmlkbGVUaW1lckRpc2FibGVkID0gWUVTOwogICAgIFtbVUlTY3Jl
ZW4gbWFpblNjcmVlbl0gX3NldFNjYWxlOjIuMF07CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCB2b2lk
IGR1bXBSZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFyCiAKICAgICByZWxlYXNlR2xvYmFs
Q29udHJvbGxlcnMoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJv
YXJkc107CiAjZW5kaWYKIApAQCAtMTMxNywxMiArMTMxNywxMiBAQCB2b2lkIGR1bXBSZW5kZXJU
cmVlKGludCBhcmdjLCBjb25zdCBjaGFyCiAgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gMDsKICAg
ICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0
ZWFyRG93bklPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CiAjZW5kaWYKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGludCBfYXJnYzsK
IHN0YXRpYyBjb25zdCBjaGFyICoqX2FyZ3Y7CiAKQEAgLTEzOTYsMTQgKzEzOTYsMTQgQEAgaW50
IER1bXBSZW5kZXJUcmVlTWFpbihpbnQgYXJnYywgY29uc3QgYwogICAgIFdURjo6c2V0UHJvY2Vz
c1ByaXZpbGVnZXMoYWxsUHJpdmlsZWdlcygpKTsKICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnBlcm1pdFByb2Nlc3NUb1VzZUNvb2tpZUFQSSh0cnVlKTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIF9VSUFwcGxpY2F0aW9uTG9h
ZFdlYktpdCgpOwogI2VuZGlmCiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgc2V0
RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCk7IC8vIE11c3QgYmUgY2FsbGVk
IGJlZm9yZSBOU0FwcGxpY2F0aW9uIGluaXRpYWxpemF0aW9uLgogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW0R1bXBSZW5kZXJUcmVlQXBw
bGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOyAvLyBGb3JjZSBBcHBLaXQgdG8gaW5pdCBpdHNl
bGYKIAogICAgICAgICBkdW1wUmVuZGVyVHJlZShhcmdjLCBhcmd2KTsKQEAgLTE1MjYsNyArMTUy
Niw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmEKIAogc3RhdGlj
IE5TRGF0YSAqZHVtcEZyYW1lQXNQREYoV2ViRnJhbWUgKmZyYW1lKQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtMTU5NCw3ICsxNTk0LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJh
Y2tGb3J3YXJkTGlzdEZvcldlYlZpZQogICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGNoYW5nZVdpbmRvd1NjYWxl
SWZOZWVkZWQoY29uc3QgY2hhciogdGVzdFBhdGhPclVSKQogewogICAgIFdURjo6U3RyaW5nIGxv
Y2FsUGF0aE9yVXJsID0gU3RyaW5nKHRlc3RQYXRoT3JVUik7CkBAIC0xNjQxLDcgKzE2NDEsNyBA
QCBzdGF0aWMgY29uc3QgY2hhciAqbWV0aG9kTmFtZVN0cmluZ0ZvckZhCiBzdGF0aWMgdm9pZCBk
dW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxsV2luZG93cygpCiB7CiAgICAgZm9yIChOU1dpbmRvdyAq
d2luZG93IGluIFtEdW1wUmVuZGVyVHJlZVdpbmRvdyBvcGVuV2luZG93c10pIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tbd2luZG93IGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10gb2JqZWN0QXRJbmRleDow
XTsKICNlbHNlCiAgICAgICAgIEFTU0VSVChbW3dpbmRvdyBjb250ZW50Vmlld10gaXNLaW5kT2ZD
bGFzczpbV2ViVmlldyBjbGFzc11dKTsKQEAgLTE2NzYsNyArMTY3Niw3IEBAIGJvb2wgc2hvdWxk
U2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKIHN0YXRpYyB2b2lkIHVwZGF0ZURpc3BsYXkoKQogewog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtnV2ViQnJvd3NlclZpZXcgbGF5
b3V0SWZOZWVkZWRdOyAvLyBSZS1lbmFibGVzIHRpbGUgcGFpbnRpbmcsIHdoaWNoIHdhcyBkaXNh
YmxlZCB3aGVuIGNvbW1pdHRpbmcgdGhlIGZyYW1lIGxvYWQuCiAgICAgW2dEcnRXaW5kb3cgbGF5
b3V0VGlsZXNOb3ddOwogICAgIFt3ZWJWaWV3IF9mbHVzaENvbXBvc2l0aW5nQ2hhbmdlc107CkBA
IC0xNjkwLDcgKzE2OTAsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVEaXNwbGF5KCkKIAogdm9pZCBk
dW1wKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKIApAQCAtMTc4OSw3ICsxNzg5LDcgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKAogICAgIHJldHVybiB0cnVlOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9v
bCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiB7CiAg
ICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJ2aWV3cG9ydC8iKSAmJiAhc3Ryc3RyKHBhdGhP
clVSTCwgInZpc3VhbC12aWV3cG9ydC8iKTsKQEAgLTE4MTUsNyArMTgxNSw3IEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3cG9ydChn
V2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBfc2V0QWxsb3dz
TWVzc2FnaW5nOllFU107CiAjZW5kaWYKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbd2ViVmlldyBtYWtlVGV4dFN0YW5k
YXJkU2l6ZTpuaWxdOwogICAgIFt3ZWJWaWV3IHJlc2V0UGFnZVpvb206bmlsXTsKICAgICBbd2Vi
VmlldyBfc2NhbGVXZWJWaWV3OjEuMCBhdE9yaWdpbjpOU1plcm9Qb2ludF07Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfc2V0Q3Vz
dG9tQmFja2luZ1NjYWxlRmFjdG9yOjBdOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgc2V0VGFiS2V5
Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOllFU107CkBAIC0xODMzLDEzICsxODMzLDEzIEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbcG9saWN5RGVsZWdhdGUg
c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTowXTsKICAgICBbdWlEZWxlZ2F0ZSByZXNldFRvQ29u
c2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzpvcHRpb25zXTsKICAgICBbZnJhbWVMb2FkRGVsZWdh
dGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZV07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfc2V0RGFzaGJvYXJkQmVoYXZpb3I6V2Vi
RGFzaGJvYXJkQmVoYXZpb3JVc2VCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlIHRvOk5PXTsKICNl
bmRpZgogICAgIFt3ZWJWaWV3IF9jbGVhck1haW5GcmFtZU5hbWVdOwogICAgIFtbd2ViVmlldyB1
bmRvTWFuYWdlcl0gcmVtb3ZlQWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVz
ZXJDb250ZW50RnJvbUdyb3VwOlt3ZWJWaWV3IGdyb3VwTmFtZV1dOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gc2V0
QXV0b2Rpc3BsYXk6Tk9dOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgc2V0VHJhY2tzUmVwYWludHM6
Tk9dOwpAQCAtMTg2NCwxMiArMTg2NCwxMiBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0CiAgICAgICAgIGdUZXN0UnVubmVyLT5yZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KCk7CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5Db3JlRnJh
bWVdKQogICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmln
Z2VyKCpmcmFtZSk7CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgW3dlYlZpZXcgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkOllFU107CiAgICAgW3dlYlZpZXcgc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkOk5PXTsKICAgICBbd2ViVmlldyBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDpO
T107CkBAIC0xODg1LDcgKzE4ODUsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHN0b3BUaW1l
cl07CiAgICAgW1tNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSByZXNldF07CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIENs
ZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgZ2VuZXJhbCBwYXN0ZWJvYXJkCiAgICAgW1tOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6TlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogI2VuZGlmCkBAIC0xOTAyLDcg
KzE5MDIsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAg
V2ViQ29yZVRlc3RTdXBwb3J0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAvLyBXb3Jr
IGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vOTkwOTA3Mz4gV2ViS2l0J3MgbWV0aG9kIG9mIGNhbGxp
bmcgZGVsZWdhdGVzIG9uCiAvLyB0aGUgbWFpbiB0aHJlYWQgaXMgbm90IHRocmVhZCBzYWZlLiBJ
ZiB0aGUgd2ViIHRocmVhZCBpcyBhdHRlbXB0aW5nIHRvIGNhbGwKIC8vIG91dCB0byBhIGRlbGVn
YXRlIG1ldGhvZCBvbiB0aGUgbWFpbiB0aHJlYWQsIHdlIHdhbnQgdG8gc3BpbiB0aGUgbWFpbiB0
aHJlYWQKQEAgLTE5ODQsNyArMTk4NCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiBpbnB1dEwKIAogICAgIGNvbnN0IGNoYXIqIHRlc3RVUkwoW1t1cmwgYWJzb2x1dGVTdHJp
bmddIFVURjhTdHJpbmddKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgY2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCh0ZXN0VVJMKTsKICNlbmRp
ZgogCkBAIC0xOTkzLDcgKzE5OTMsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1l
b3V0KTsKICAgICBnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1h
bmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKTsKICAgICB0b3BMb2FkaW5nRnJhbWUgPSBuaWw7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoIWRyYWdnaW5nSW5mbyk7IC8v
IHRoZSBwcmV2aW91cyB0ZXN0IHNob3VsZCBoYXZlIGNhbGxlZCBldmVudFNlbmRlci5tb3VzZVVw
IHRvIGRyb3AhCiAgICAgcmVsZWFzZUFuZFplcm8oJmRyYWdnaW5nSW5mbyk7CiAjZW5kaWYKQEAg
LTIwMjEsNyArMjAyMSw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1
dEwKICAgICAgICAgfQogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwu
Y19zdHIoKSkpCiAgICAgICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChn
V2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICNlbmRpZgpAQCAtMjA1Myw3ICsyMDUz
LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgICAgICB9
CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgWyhEdW1wUmVuZGVyVHJlZSAqKVVJQXBwIF93YWl0Rm9yV2ViVGhyZWFkXTsKICAgICBXZWJU
aHJlYWRMb2NrQWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKTsKICNlbmRpZgpA
QCAtMjA4OSw3ICsyMDg5LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlu
cHV0TAogICAgICAgICAgICAgICAgIGlmICh3aW5kb3cgPT0gW1ttYWluRnJhbWUgd2ViVmlld10g
d2luZG93XSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBbW1t3aW5kb3cgY29udGVudFZpZXddIHN1YnZpZXdzXSBvYmplY3RBdEluZGV4
OjBdOwogI2Vsc2UKICAgICAgICAgICAgICAgICBBU1NFUlQoW1t3aW5kb3cgY29udGVudFZpZXdd
IGlzS2luZE9mQ2xhc3M6W1dlYlZpZXcgY2xhc3NdXSk7CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAKIHZvaWQgZGlzcGxheVdl
YlZpZXcoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgW3dlYlZp
ZXcgZGlzcGxheV07CiAjZWxzZQpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgdm9pZCBkaXNwbGF5V2Vi
VmlldygpCiB2b2lkIGRpc3BsYXlBbmRUcmFja1JlcGFpbnRzV2ViVmlldygpCiB7CiAgICAgZGlz
cGxheVdlYlZpZXcoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIEZJWE1FOiBUcmFja2luZyByZXBhaW50cyBpcyBub3Qgc3BlY2lmaWMgdG8g
TWFjLiBXZSBzaG91bGQgZW5hYmxlIHN1Y2ggc3VwcG9ydCBvbiBpT1MuCiAgICAgV2ViVmlldyAq
d2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgW3dlYlZpZXcgc2V0VHJhY2tzUmVw
YWludHM6WUVTXTsKQEAgLTIxNTQsNyArMjE1NCw3IEBAIHZvaWQgZGlzcGxheUFuZFRyYWNrUmVw
YWludHNXZWJWaWV3KCkKICNlbmRpZgogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBEdW1wUmVuZGVyVHJlZUV2ZW50CiAK
ICsgKE5TUG9pbnQpbW91c2VMb2NhdGlvbgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWVEcmFnZ2luZ0luZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgi
CiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgpAQCAtMjk3LDQg
KzI5Nyw0IEBAIC0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCiAKIEBlbmQKIAotI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKLSNpZiBQTEFURk9STShJT1MpICYmIGRlZmluZWQoX19P
QkpDX18pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgZGVmaW5lZChfX09CSkNfXykKICNp
bXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjZW5kaWYKIApAQCAtNDgsNyArNDgsNyBAQCBleHRlcm4g
TmF2aWdhdGlvbkNvbnRyb2xsZXIqIGdOYXZpZ2F0aW9uCiBleHRlcm4gUG9saWN5RGVsZWdhdGUq
IHBvbGljeURlbGVnYXRlOwogZXh0ZXJuIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBv
bGljeURlbGVnYXRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBPQkpDX0NMQVNTIFVJV2luZG93OwogZXh0ZXJuIFVJV2luZG93ICptYWluV2luZG93Owog
I2Vsc2UKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbgogdW5zaWduZWQgd29ybGRJREZvcldvcmxkKFdlYlNjcmlwdFdvcmxkICopOwogCiAK
LSNpZiBQTEFURk9STShJT1MpICYmIGRlZmluZWQoX19PQkpDX18pCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgZGVmaW5lZChfX09CSkNfXykKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWUg
OiBVSUFwcGxpY2F0aW9uIHsKICAgICBCT09MIF9oYXNGbHVzaGVkV2ViVGhyZWFkUnVuUXVldWU7
CiAgICAgVUlCYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIgYmFja2dyb3VuZFRhc2tJZGVudGlmaWVy
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVBhc3RlYm9hcmQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgog
I2Vsc2UKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC00Nyw3ICs0Nyw3IEBAIEBpbnRlcmZhY2Ug
RHVtcFJlbmRlclRyZWVXaW5kb3cgOiBOU1dpbmQKIHsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
VUlXaW5kb3cgKnVpV2luZG93OwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVUlXZWJC
cm93c2VyVmlldyAqYnJvd3NlclZpZXc7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiVGVzdFJ1bm5lci5oIgogI2lt
cG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2Vu
ZGlmCiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIENGQXJyYXlDYWxsQmFja3MgTm9uUmV0YWlu
aW5nQXJyYQogCiBAaW1wbGVtZW50YXRpb24gRHVtcFJlbmRlclRyZWVXaW5kb3cKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQHN5bnRoZXNpemUgdWlXaW5k
b3cgPSBfdWlXaW5kb3c7CiBAc3ludGhlc2l6ZSBicm93c2VyVmlldyA9IF9icm93c2VyVmlldzsK
ICNlbmRpZgpAQCAtNzEsNyArNzEsNyBAQCAtICh2b2lkKV9hZGRUb09wZW5XaW5kb3dzCiAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKG9wZW5XaW5kb3dzUmVmLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNl
bGYpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1hc2s6
KE5TVUludGVnZXIpc3R5bGVNYXNrIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSlidWZmZXJp
bmdUeXBlIGRlZmVyOihCT09MKWRlZmVyQ3JlYXRpb24KIHsKICAgICBpZiAoKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6c3R5bGVNYXNrIGJh
Y2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpkZWZlckNyZWF0aW9uXSkpCkBAIC0xMDgsNyArMTA4
LDcgQEAgLSAodm9pZCljbG9zZQogCiAgICAgW3N1cGVyIGNsb3NlXTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEJ5IGRlZmF1bHQsIE5TV2lu
ZG93cyBhcmUgcmVsZWFzZWQgd2hlbiBjbG9zZWQuIE9uIGlPUyB3ZSBkbwogICAgIC8vIGl0IG1h
bnVhbGx5LCBhbmQgcmVsZWFzZSB0aGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcuCiAg
ICAgaWYgKF91aVdpbmRvdykgewpAQCAtMTMxLDcgKzEzMSw3IEBAIC0gKEJPT0wpX2hhc0tleUFw
cGVhcmFuY2UKICAgICByZXR1cm4gW3NlbGYgaXNLZXlXaW5kb3ddOwogfQogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpa2V5RG93bjooTlNF
dmVudCAqKWV2ZW50CiB7CiAgICAgLy8gRG8gbm90aGluZywgYXZvaWRpbmcgdGhlIGJlZXAgd2Un
ZCBvdGhlcndpc2UgZ2V0IGZyb20gTlNSZXNwb25kZXIsCkBAIC0xNDEsNyArMTQxLDcgQEAgLSAo
dm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQKIAogLSAoV2ViVmlldyAqKXdlYlZpZXcKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TVmll
dyAqZmlyc3RWaWV3ID0gbmlsOwogICAgIGlmIChbW1tzZWxmIGNvbnRlbnRWaWV3XSBzdWJ2aWV3
c10gY291bnRdID4gMCkgewogICAgICAgICBmaXJzdFZpZXcgPSBbW1tzZWxmIGNvbnRlbnRWaWV3
XSBzdWJ2aWV3c10gb2JqZWN0QXRJbmRleDowXTsKQEAgLTE2NCw3ICsxNjQsNyBAQCAtICh2b2lk
KXN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wCiAKIC0gKHZvaWQpd2ViVmlld1N0YXJ0
ZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
SWYgdGhlIFdlYlZpZXcgaGFzIGdvbmUgaW50byBjb21wb3NpdGluZyBtb2RlLCB0dXJuIG9uIHdp
bmRvdyBhdXRvZGlzcGxheS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIENBCiAgICAgLy8gdG8gdXBk
YXRlIGxheWVycyBhbmQgc3RhcnQgYW5pbWF0aW9ucy4KICAgICAvLyBXZSBvbmx5IGV2ZXIgdHVy
biBhdXRvZGlzcGxheSBvbiBoZXJlLCBiZWNhdXNlIHdlIHR1cm4gaXQgb2ZmIGJlZm9yZSBldmVy
eSB0ZXN0LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIEBpbnRlcmZhY2UgRXZlbnRTZW5kaW5nQ29udHJvbGxlciA6IE5TT2IKICAgICBOU1Rp
bWVJbnRlcnZhbCBsYXN0Q2xpY2s7CiAgICAgaW50IGV2ZW50TnVtYmVyOwogICAgIGRvdWJsZSB0
aW1lT2Zmc2V0OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TTXV0YWJsZUFycmF5KiB0b3VjaGVzOwogICAgIHVuc2lnbmVkIGN1cnJlbnRUb3VjaElk
ZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbmV4dEV2ZW50RmxhZ3M7CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQAogI2ltcG9ydCA8ZnVu
Y3Rpb25hbD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+IC8v
IGZvciBHZXRDdXJyZW50RXZlbnRUaW1lKCkKICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlldy5o
PgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBh
dGliaWxpdHlEZWNsYXJhdGlvbnMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2ltcG9ydCA8
V2ViS2l0L0tleUV2ZW50Q29kZXNJT1MuaD4KICNpbXBvcnQgPFdlYktpdC9XQUtXaW5kb3cuaD4K
QEAgLTU4LDcgKzU4LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNT
UEkuaD4gLy8gZm9yIEdTQ3VycmVudEV2ZW50VGltZXN0YW1wKCkKICNlbmRpZgogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGV4dGVybiAiQyIgdm9pZCBf
TlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiAKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoKQpA
QCAtOTUsNyArOTUsNyBAQCBOU011dGFibGVBcnJheSAqc2F2ZWRNb3VzZUV2ZW50czsgLy8gbW91
CiBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgU3ludGhldGljVG91Y2ggOiBOU09iamVj
dCB7CiBAcHVibGljCiAgICAgQ0dQb2ludCBfbG9jYXRpb247CkBAIC0xMzQsNyArMTM0LDcgQEAg
LSAoaWQpaW5pdFdpdGhMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgogQGVuZCAvLyBTeW50aGV0
aWNUb3VjaAogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3SW50ZXJuYWxGb3JUZXN0aW5nKQog
LSAoV2ViQ29yZTo6RnJhbWUqKV9tYWluQ29yZUZyYW1lOwogQGVuZApAQCAtMjU5LDcgKzI1OSw3
IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYmVnaW5EcmFnV2l0aEZpbGVzOikKICAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczop
CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkVG91Y2hBdFg6eTopCiAgICAg
ICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHVwZGF0ZVRvdWNoQXRJbmRleDp4Onk6
KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjYW5jZWxUb3VjaEF0SW5k
ZXg6KQpAQCAtMzIyLDcgKzMyMiw3IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNl
bGVjdG9yOigKICAgICAgICAgcmV0dXJuIEAibW9uaXRvcldoZWVsRXZlbnRzIjsKICAgICBpZiAo
YVNlbGVjdG9yID09IEBzZWxlY3RvcihjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXM6KSkKICAg
ICAgICAgcmV0dXJuIEAiY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzIjsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoYVNlbGVjdG9yID09IEBz
ZWxlY3RvcihhZGRUb3VjaEF0WDp5OikpCiAgICAgICAgIHJldHVybiBAImFkZFRvdWNoUG9pbnQi
OwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHVwZGF0ZVRvdWNoQXRJbmRleDp4Onk6
KSkKQEAgLTM1OSw3ICszNTksNyBAQCAtIChpZClpbml0CiAKIC0gKHZvaWQpZGVhbGxvYwogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFt0b3VjaGVz
IHJlbGVhc2VdOwogI2VuZGlmCiAgICAgW3N1cGVyIGRlYWxsb2NdOwpAQCAtMzY3LDcgKzM2Nyw3
IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChkb3VibGUpY3VycmVudEV2ZW50VGltZQogewotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIEdl
dEN1cnJlbnRFdmVudFRpbWUoKSArIHRpbWVPZmZzZXQ7CiAjZWxzZQogICAgIHJldHVybiBHU0N1
cnJlbnRFdmVudFRpbWVzdGFtcCgpICsgdGltZU9mZnNldDsKQEAgLTM5MiwxMiArMzkyLDEyIEBA
IC0gKHZvaWQpbGVhcEZvcndhcmQ6KGludCltaWxsaXNlY29uZHMKIAogLSAodm9pZCljbGVhcktp
bGxSaW5nCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBfTlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiAjZW5kaWYKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNFdmVudFR5cGUgZXZl
bnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91c2VBY3Rpb24gYWN0
aW9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC01MDMsNyArNTAzLDcgQEAgLSAodm9p
ZCliZWdpbkRyYWdXaXRoRmlsZVByb21pc2VzOihXZWJTYwogICAgIGRyYWdNb2RlID0gTk87CiAg
ICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKXVwZGF0ZUNsaWNr
Q291bnRGb3JCdXR0b246KGludClidXR0b25OdW1iZXIKIHsKQEAgLTUxOCw3ICs1MTgsNyBAQCAt
ICh2b2lkKXVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0b246KGludCliCiAKIHN0YXRpYyBpbnQgbW9k
aWZpZXJGbGFncyhjb25zdCBOU1N0cmluZyogbW9kaWZpZXJOYW1lKQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29uc3QgaW50IGNvbnRyb2xL
ZXlNYXNrID0gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CiAgICAgY29uc3QgaW50IHNoaWZ0
S2V5TWFzayA9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKICAgICBjb25zdCBpbnQgYWx0ZXJu
YXRlS2V5TWFzayA9IE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb247CkBAIC01NjYsNyArNTY2LDcg
QEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0b25OdW1iZXIgd2l0aAogICAgIFtbW21haW5G
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKICAgICBbc2VsZiB1cGRhdGVD
bGlja0NvdW50Rm9yQnV0dG9uOmJ1dHRvbk51bWJlcl07CiAgICAgCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUg
PSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlRG93
bik7CiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZl
bnRUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246
bGFzdE1vdXNlUG9zaXRpb24gCkBAIC01ODUsMTggKzU4NSwxOCBAQCAtICh2b2lkKW1vdXNlRG93
bjooaW50KWJ1dHRvbk51bWJlciB3aXRoCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5G
cmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYg
KHN1YlZpZXcpIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYKICAgICAg
ICAgW3N1YlZpZXcgbW91c2VEb3duOmV2ZW50XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OwogI2VuZGlmCiAgICAgICAgIGlmIChidXR0b25OdW1iZXIgPT0gTGVmdE1vdXNlQnV0dG9uKQog
ICAgICAgICAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVsZWFzZV07
CiAjZW5kaWYKIH0KQEAgLTYyOCw3ICs2MjgsNyBAQCAtICh2b2lkKXpvb21QYWdlT3V0CiAKIC0g
KHZvaWQpc2NhbGVQYWdlQnk6KGZsb2F0KXNjYWxlIGF0WDooZmxvYXQpeCBhbmRZOihmbG9hdCl5
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyAtW1dlYlZpZXcgX3NjYWxlV2ViVmlldzpdIGlzIE1hYy1zcGVjaWZpYyBBUEksIGFuZCBjYWxs
cyBmdW5jdGlvbnMgdGhhdAogICAgIC8vIGFzc2VydCB0byBub3QgYmUgdXNlZCBpbiBpT1MuCiAg
ICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NjYWxlV2ViVmlldzpzY2FsZSBhdE9yaWdpbjpOU01h
a2VQb2ludCh4LCB5KV07CkBAIC02NTEsNyArNjUxLDcgQEAgLSAodm9pZCltb3VzZVVwOihpbnQp
YnV0dG9uTnVtYmVyIHdpdGhNbwogICAgIH0KIAogICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXdd
IGRvY3VtZW50Vmlld10gbGF5b3V0XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGV2ZW50VHlwZUZvck1v
dXNlQnV0dG9uQW5kQWN0aW9uKGJ1dHRvbk51bWJlciwgTW91c2VVcCk7CiAgICAgTlNFdmVudCAq
ZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb24g
CkBAIC02NzQsMTggKzY3NCwxOCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIg
d2l0aE1vCiAgICAgLy8gaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24gYWxnb3JpdGhtIGZvciBz
ZWxlY3RpbmcgYW4gZXZlbnQgdGFyZ2V0LgogICAgIHRhcmdldFZpZXcgPSB0YXJnZXRWaWV3ID8g
dGFyZ2V0VmlldyA6IFtbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBh
c3NlcnQodGFyZ2V0Vmlldyk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYKICAg
ICBbdGFyZ2V0VmlldyBtb3VzZVVwOmV2ZW50XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CiAj
ZW5kaWYKICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExlZnRNb3VzZUJ1dHRvbikKICAgICAgICAg
bGVmdE1vdXNlQnV0dG9uRG93biA9IE5POwogICAgIGxhc3RDbGljayA9IFtldmVudCB0aW1lc3Rh
bXBdOwogICAgIGxhc3RDbGlja1Bvc2l0aW9uID0gbGFzdE1vdXNlUG9zaXRpb247Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZHJhZ2dpbmdJ
bmZvKSB7CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwog
ICAgICAgICAKQEAgLTcwMyw3ICs3MDMsNyBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25O
dW1iZXIgd2l0aE1vCiAgICAgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0KQEAgLTcy
Nyw3ICs3MjcsNyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICAgICB9
CiAKICAgICBOU1ZpZXcgKnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNQb2ludCBuZXdNb3VzZVBv
c2l0aW9uID0gW3ZpZXcgY29udmVydFBvaW50Ok5TTWFrZVBvaW50KHgsIFt2aWV3IGZyYW1lXS5z
aXplLmhlaWdodCAtIHkpIHRvVmlldzpuaWxdOwogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOihsZWZ0TW91c2VCdXR0b25Eb3duID8gTlNFdmVudFR5cGVM
ZWZ0TW91c2VEcmFnZ2VkIDogTlNFdmVudFR5cGVNb3VzZU1vdmVkKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOm5ld01vdXNlUG9zaXRpb24KQEAgLTc0
OCwxNSArNzQ4LDE1IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAg
IFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5
cGU6V2ViRXZlbnRNb3VzZU1vdmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246bGFzdE1vdXNlUG9zaXRpb25dOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5G
cmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYg
KHN1YlZpZXcpIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYKICAgICAg
ICAgaWYgKGxlZnRNb3VzZUJ1dHRvbkRvd24pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgaWYgKGRyYWdnaW5nSW5mbykgewogICAg
ICAgICAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBtYXkgbm90
IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBpZiAoW1tk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZHJhZ2dlZEltYWdlOm1vdmVkVG86KV0pCkBAIC03NjcsMTkgKzc2NywxOSBAQCAtICh2b2lkKW1v
dXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICNlbmRpZgogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIFtzdWJWaWV3IG1vdXNlTW92ZWQ6ZXZlbnRdOwotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CiAjZW5kaWYKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0KIAogLSAodm9pZClt
b3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgY29udGludW91c2x5OihCT09MKWNvbnRp
bnVvdXNseQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQ0dTY3JvbGxFdmVudFVuaXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtDR1Njcm9sbEV2
ZW50VW5pdFBpeGVsIDoga0NHU2Nyb2xsRXZlbnRVbml0TGluZTsKICAgICBDR0V2ZW50UmVmIGNn
U2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudChOVUxMLCB1bml0LCAy
LCB5LCB4KTsKICAgICAKQEAgLTExMDcsNyArMTEwNyw3IEBAIC0gKHZvaWQpa2V5RG93bjooTlNT
dHJpbmcgKiljaGFyYWN0ZXIgd2kKICAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CiAKICAgICBp
ZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CiAjZWxzZQogICAgICAgICBt
b2RpZmllckZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHBoYVNoaWZ0OwpAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aQogCiAgICAg
W1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50ICpldmVu
dCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCkBAIC0xMTQ2LDE1ICsxMTQ2
LDE1IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXJhY3RlclNldDpXZWJFdmVudENoYXJhY3RlclNldEFTQ0lJXTsK
ICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYKICAgICBbW1tbbWFp
bkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOwot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0
aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246
TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJGbGFncwpAQCAtMTE3OSwxNSArMTE3OSwxNSBAQCAtICh2b2lkKWtleURvd246KE5T
U3RyaW5nICopY2hhcmFjdGVyIHdpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJT
ZXQ6V2ViRXZlbnRDaGFyYWN0ZXJTZXRBU0NJSV07CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6ZXZlbnRdOwogI2VuZGlmCiAgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZp
cnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
ZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0KQEAgLTEzODgsNyArMTM4OCw3IEBAIC0gKHZvaWQp
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzOihXZWIKICNlbmRpZgogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWFkZFRvdWNoQXRYOihp
bnQpeCB5OihpbnQpeQogewogICAgIGlmICghdG91Y2hlcykKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTMsMTEgKzUzLDExIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiQXBwbGVTY3JpcHRDb250cm9sbGVyLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKIApAQCAtMTE5
LDcgKzExOSw3IEBAIC0gKGlkKWluaXQKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7
CiAgICAgICAgIGdjQ29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXI7CiAgICAgICAgIGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOwotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlld1Byb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb246KSBuYW1lOldlYlZp
ZXdQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogI2VuZGlmCiAgICAg
fQpAQCAtMTI4LDcgKzEyOCw3IEBAIC0gKGlkKWluaXQKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwogI2Vu
ZGlmCiAgICAgZGVsZXRlIGdjQ29udHJvbGxlcjsKQEAgLTE0Myw3ICsxNDMsNyBAQCAtICh2b2lk
KXByb2Nlc3NXb3JrOihpZClkdW1teQogICAgIGlmICh0b3BMb2FkaW5nRnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogCkBAIC0yMDIsNyArMjAyLDcgQEAgLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFN0YQogICAgICAgICBpbnQ2NF90IGRlZmVy
cmVkV2FpdFRpbWUgPSA1ICogTlNFQ19QRVJfTVNFQzsKICAgICAgICAgZGlzcGF0Y2hfdGltZV90
IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJlZFdhaXRUaW1l
KTsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgICAgICAgICAgW3NlbmRlciBzZXRE
ZWZlcnNDYWxsYmFja3M6Tk9dOwpAQCAtMjIwLDcgKzIyMCw3IEBAIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBkaWRDb20KICAgICBBU1NFUlQoIVtmcmFtZSBwcm92aXNpb25hbERh
dGFTb3VyY2VdKTsKICAgICBBU1NFUlQoW2ZyYW1lIGRhdGFTb3VyY2VdKTsKICAgICBnVGVzdFJ1
bm5lci0+c2V0V2luZG93SXNLZXkodHJ1ZSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbbWFpbkZyYW1l
IGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gd2lu
ZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6ZG9jdW1lbnRWaWV3XTsKICNlbmRpZgpAQCAtMzEyLDcg
KzMxMiw3IEBAIC0gKHZvaWQpZGlkQ2xlYXJXaW5kb3dPYmplY3RJblN0YW5kYXJkV28KIAogICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBbZnJhbWUgd2ViVmlld107CiAgICAgV2ViU2NyaXB0T2JqZWN0
ICpvYmogPSBbZnJhbWUgd2luZG93T2JqZWN0XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEFwcGxlU2NyaXB0Q29udHJvbGxlciAqYXNjID0gW1tB
cHBsZVNjcmlwdENvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3XTsKICAg
ICBbb2JqIHNldFZhbHVlOmFzYyBmb3JLZXk6QCJhcHBsZVNjcmlwdENvbnRyb2xsZXIiXTsKICAg
ICBbYXNjIHJlbGVhc2VdOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RIZWxwZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdEhlbHBlci5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdEhlbHBlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAK
ICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8QXBwbGlj
YXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CkBAIC0yOTgsOSArMjk4LDkgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICByZXR1cm4gMDsKIH0KIAotI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlVGhyZWFkUnVuLmg+CiAjZW5kaWYKIApAQCAtOTIsNyArOTIsNyBAQCAtIChXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uICopbGFzdFBvc2l0aW9uCiAgICAgcmV0dXJuIF9sYXN0UG9zaXRpb24uZ2V0
KCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFjeQogewog
ICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwpAQCAtMTI4LDcgKzEyOCw3IEBA
IC0gKHZvaWQpdGltZXJGaXJlZAogICAgIGF1dG8gY29weU9mUmVnaXN0ZXJlZFZpZXdzIHsgX3Jl
Z2lzdGVyZWRWaWV3cyB9OwogICAgIGZvciAoYXV0byB0eXBlbGVzc1ZpZXcgOiBjb3B5T2ZSZWdp
c3RlcmVkVmlld3MpIHsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gKF9fYnJpZGdlIFdlYlZpZXcg
Kil0eXBlbGVzc1ZpZXc7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgaWYgKF9oYXNFcnJvcikKICAgICAgICAgICAgIFt3ZWJWaWV3IF9nZW9s
b2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpfZXJyb3JNZXNzYWdlLmdldCgpXTsKICAgICAgICAg
ZWxzZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxOCArNzYsMTggQEAKICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XYWxsVGltZS5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVRocmVhZC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
RE9NT3BlcmF0aW9uc1ByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYklu
c3BlY3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKIAogQGludGVyZmFjZSBDb21tYW5kVmFs
aWRhdGlvblRhcmdldCA6IE5TT2JqZWN0IDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPgpA
QCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxl
ZCgKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wg
ZmxhZykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVu
dFZpZXddOwogICAgIAogICAgIE5TUmVzcG9uZGVyICpmaXJzdFJlc3BvbmRlciA9IGZsYWcgPyBk
b2N1bWVudFZpZXcgOiBuaWw7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQwogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEF1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOmVuYWJsZWRdOwogI2VuZGlmCiB9CkBAIC01NjMs
NyArNTYzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRQogICAg
IFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czpjeWNs
ZXNdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2
b2lkIFRlc3RSdW5uZXI6OnNldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRUZWxl
cGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZDplbmFibGVkXTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldFBhZ2VQYXVzZWQoYm9vbCBwYXVzCiAKIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gX3NldERhc2hib2FyZEJlaGF2aW9yOldlYkRhc2hib2FyZEJlaGF2aW9yVXNlQmFj
a3dhcmRDb21wYXRpYmlsaXR5TW9kZSB0bzpmbGFnXTsKICNlbmRpZgogfQpAQCAtNzE4LDcgKzcx
OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGUKIAogYm9vbCBU
ZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG5hbWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbmFtZSkpOwogICAgIE5TU3RyaW5nICpuYW1lTlMgPSAoX19icmlkZ2UgTlNT
dHJpbmcgKiluYW1lQ0YuZ2V0KCk7CiAKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBU
ZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1YlVSTCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQogICAg
IC8vIENhbGwgdGhlIHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0
aGVuIENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIgd2lsbCB3b3JrLgpAQCAtOTE3LDcg
KzkxNyw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW4KIAogQGVu
ZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRl
cmZhY2UgQVBJVGVzdERlbGVnYXRlSVBob25lIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVn
YXRlPgogewpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZEZpbgogCiB2b2lkIFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9h
ZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3RyaW5nUmVmIGJhc2VVUkwpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9T
IHRoaXMgZ2V0cyBjYWxsZWQgdmlhIEphdmFTY3JpcHQgb24gdGhlIFdlYlRocmVhZC4gQnV0IHNp
bmNlIGl0IGNyZWF0ZXMKICAgICAvLyBhbmQgY2xvc2VzIGEgV2ViVmlldywgaXQgc2hvdWxkIGJl
IHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ha2UgdGhlIHN3aXRjaAogICAgIC8vIGZyb20gdGhl
IHdlYiB0aHJlYWQgdG8gdGhlIG1haW4gdGhyZWFkIGFuZCBtYWtlIHRoZSB0ZXN0IGFzeW5jaHJv
bm91cy4KQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dp
bmRvd0RhdGFMb2EKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFsoRHVtcFJlbmRlclRyZWUgKilb
VUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX3dhaXRGb3JXZWJUaHJlYWRdOwogI2Vu
ZGlmCiAKQEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXV0aGVudGljYXRl
U2Vzc2lvbihKU1MKIAogdm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBhYm9ydE1v
ZGFsXTsKICNlbmRpZgogfQpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRTZXJpYWxpemVIVFRQTG9hZHMoYgogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rp
b24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKGRpcmVjdGlvbk5hbWUsICJsdHIiKSkKICAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10g
bWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6MF07CiAgICAgZWxzZSBpZiAoSlNT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAicnRsIikpCkBAIC0xMTY2
LDcgKzExNjYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpCiAK
IHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1RleHRGaWVsZCAqdGV4dEZp
ZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEwMCwgMjApXTsKICAgICB0ZXh0RmllbGQudGFnID0gMTsKICAgICBbW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKQEAgLTEx
NzksNyArMTE3OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiAK
IHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1ZpZXcqIHRleHRGaWVs
ZCA9IFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gdmlld1dpdGhU
YWc6MV07CiAgICAgaWYgKHRleHRGaWVsZCkgewogICAgICAgICBbdGV4dEZpZWxkIHJlbW92ZUZy
b21TdXBlcnZpZXddOwpAQCAtMTE5MCwxNCArMTE5MCwxNCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQoCiAKIHZvaWQgVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkK
IHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpbbWFpbkZyYW1l
IHdlYlZpZXddXTsKICNlbmRpZgogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2Fs
ZUZhY3Rvcihkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yKQogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3Nl
dEN1c3RvbUJhY2tpbmdTY2FsZUZhY3RvcjpiYWNraW5nU2NhbGVGYWN0b3JdOwogI2VuZGlmCiB9
CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB1bnNpZ25lZCBUZXN0UnVubmVyOjppbWFnZUNvdW50SW5H
ZW5lcmFsCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNQYXN0
ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkYXRhRm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlw
ZV07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IE5TRGF0YSAqZGF0YSA9IFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZv
clBhc3RlYm9hcmRUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICNlbmRpZgogICAgIGlmICgh
ZGF0YSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0ICJUZXN0T3B0aW9ucy5oIgogIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgogI2Vsc2UKICNpbXBvcnQgPFdlYktpdC9XQUtWaWV3Lmg+CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvID0g
bmlsOwogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGFkZE1lcwogCiAtICh2b2lkKW1vZGFsV2luZG93V2lsbENsb3NlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07CiAgICAgW05TQXBwIGFib3J0TW9kYWxdOwogI2VuZGlmCkBAIC0xMDQsNyAr
MTA0LDcgQEAgLSAodm9pZCltb2RhbFdpbmRvd1dpbGxDbG9zZTooTlNOb3RpZmljYQogCiAtICh2
b2lkKXdlYlZpZXdSdW5Nb2RhbDooV2ViVmlldyAqKXNlbmRlcgogewotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZ1Rlc3RSdW5uZXItPnNldFdpbmRv
d0lzS2V5KGZhbHNlKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKG1vZGFsV2luZG93V2lsbENsb3Nl
OikgbmFtZTpOU1dpbmRvd1dpbGxDbG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBb
TlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3NlbmRlciB3aW5kb3ddXTsKQEAgLTE0Myw3ICsxNDMs
NyBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJlZm9yZVVuCiB9CiAKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0ltYWdlOihOU0ltYWdlICopYW5JbWFnZSBhdDooTlNQ
b2ludCl2aWV3TG9jYXRpb24gb2Zmc2V0OihOU1NpemUpaW5pdGlhbE9mZnNldCBldmVudDooTlNF
dmVudCAqKWV2ZW50IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCBzb3VyY2U6KGlk
KXNvdXJjZU9iaiBzbGlkZUJhY2s6KEJPT0wpc2xpZGVGbGFnIGZvclZpZXc6KE5TVmlldyAqKXZp
ZXcKIHsKICAgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOwpAQCAtMjkzLDcgKzI5Myw3IEBAIC0g
KEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzaG91bGQKIAogLSAoQk9PTCl3ZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldyBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVt
ZW50KillbGVtZW50IHdpdGhLZXlib2FyZDooQk9PTCl3aXRoS2V5Ym9hcmQKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxz
ZQogICAgIHJldHVybiBZRVM7CkBAIC0zOTMsNyArMzkzLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIHJ1bk9wZQogICAgIFtyZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFt
ZTpbZmlsZVBhdGhzIGZpcnN0T2JqZWN0XV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CkBAIC00MDcsNyArNDA3LDcgQEAgLSAoTlNV
SW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldwogCiAtICh2b2lkKWRlYWxsb2MKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtkcmFn
Z2luZ0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlmCkluZGV4
OiBUb29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpj
LWNsYXNzLW5hbWVzCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9TY3JpcHRzL2NoZWNrLWZv
ci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgaWYgKCFkZWZpbmVkICRleGVjdXRhYmxlUGF0aEFnZSB8fCAhZGVmaQogICAgIH0K
ICAgICBjbG9zZSBOTTsKIAotICAgICMgYmVnaW4gUExBVEZPUk0oSU9TKQorICAgICMgYmVnaW4g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAjIE9uIGlPUyBwdXQgZXhjZXB0aW9ucyBpbiBwbGFj
ZSBmb3IgZXhpc3RpbmcgYmFkIG5hbWVzLiBGdXR1cmUgYmFkIG5hbWVzIHdpbGwKICAgICAjIGJl
IGNhdWdodCBhbmQgc2hvdWxkIGJlIGZpeGVkIGltbWVkaWF0ZWx5LiBGaXhpbmcgdGhlc2UgaXMg
Y292ZXJlZCBieToKICAgICAjIDxyZGFyOi8vcHJvYmxlbS8xMDM2NTAwOD4gRml4IEluYXBwcm9w
cmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgZm91bmQgYnkgYnVpbGQgcGhhc2UKQEAgLTEw
MCw3ICsxMDAsNyBAQCBpZiAoIWRlZmluZWQgJGV4ZWN1dGFibGVQYXRoQWdlIHx8ICFkZWZpCiAg
ICAgICAgIHB1c2goQHJlYWxCYWROYW1lcywgJGNsYXNzTmFtZSkgdW5sZXNzIGV4aXN0cygkZXhj
ZXB0aW9uc3skY2xhc3NOYW1lfSk7CiAgICAgfQogICAgIEBiYWROYW1lcyA9IEByZWFsQmFkTmFt
ZXM7Ci0gICAgIyBlbmQgUExBVEZPUk0oSU9TKQorICAgICMgZW5kIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICAgICBpZiAoQGJhZE5hbWVzKSB7CiAKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsNyBAQCBVSVNjcmlwdENvbnRyb2xsZXI6OlVJU2NyaXB0Q29udHJvbGxlcihVCiB7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OmNoZWNrRm9yT3V0c3RhbmRpbmdDYWxsYmFja3MoKQogewogfQpAQCAt
MjI5LDcgKzIyOSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF5QmFja0V2ZW50U3QK
ICAgICBwbGF0Zm9ybVBsYXlCYWNrRXZlbnRTdHJlYW0oc3RyZWFtLCBjYWxsYmFjayk7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnRvdWNoRG93bkF0UG9pbnQobG9uZyB4LCBsb25nIHksIGxvbmcgdG91
Y2hDb3VudCwgSlNWYWx1ZVJlZikKIHsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
c3BpL1VJS2l0VGVzdFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
c3BpL1VJS2l0VGVzdFNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0UnVubmVy
U2hhcmVkL3NwaS9VSUtpdFRlc3RTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogCiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogCkBAIC05NCw1
ICs5NCw1IEBACiBAZW5kCiAjZW5kaWYKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExF
X18KICNpZmRlZiBfX09CSkNfXwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjZWxzZQogI2ltcG9y
dCA8Q29jb2EvQ29jb2EuaD4KQEAgLTQ1LDcgKzQ1LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5o
PgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKSAm
JiAoIVBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oV0lOX0NBSVJPKSkKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKSAmJiAoIVBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oV0lOX0NBSVJPKSkKICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9D
Lmg+CiAjZW5kaWYKIApAQCAtNzcsNiArNzcsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFQ
TEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2RlZmluZSBX
S19IQVZFX0NfU1BJIDEKICNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvZGFyd2luL1dlYWtMaW5raW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9kYXJ3aW4vV2Vha0xpbmtpbmcuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vV2Vha0xpbmtpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgog
I2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSAxMDEwMDAKIGFzbSgiLmxpbmtlcl9vcHRpb24gXCItbFRlc3RXVEZBbHdheXNN
aXNzaW5nLWlPUy12MlwiIik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvTWFya2VkVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgbwog
ICAgICAgICByZXR1cm4gb3MgPDwgIkNvcnJlY3Rpb24iOwogICAgIGNhc2UgTWFya2VkVGV4dDo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzOgogICAgICAgICByZXR1cm4gb3MgPDwgIkRpY3RhdGlvbkFs
dGVybmF0aXZlcyI7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6
Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQu
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJv
YmxlbS84OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFy
ZC4KICAgICBjYXNlIE1hcmtlZFRleHQ6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6
CiAgICAgICAgIHJldHVybiBvcyA8PCAiRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyI7
CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9E
YXRhYmFzZVRyYWNrZXJUZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFRFU1QoRGF0YWJhc2VUcmFja2Vy
LCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogewpAQCAtNTcsNyArNTcsNyBAQCBURVNUKERh
dGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VGaWxlCiAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZGF0YWJhc2VGaWxlUGF0aCk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
CkBAIC0xMjYsNyArMTI2LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikK
ICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5pc0VtcHR5KCkpOwog
ICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlz
RW1wdHkoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBFWFBFQ1RfVFJVRShEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1w
dHkoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICNlbHNlCkBAIC0yMDMsNyArMjAzLDcg
QEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZQogCiAgICAgY2htb2Qo
ZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCA1NTUpOwogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjaGZsYWdzKGZ1bGxXZWJEYXRh
YmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgVUZfSU1NVVRBQkxFKTsKICNlbmRpZgogCkBAIC0yMTcs
NyArMjE3LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZQogCiAg
ICAgY2htb2QoZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCA2NjYpOwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjaGZsYWdzKGZ1
bGxXZWJEYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgMCk7CiAjZW5kaWYKIApAQCAtMjk4LDcg
KzI5OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICAgICBFWFBF
Q1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJh
c2VOYW1lKSk7CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVz
KG9yaWdpbikuaXNFbXB0eSgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJh
c2VGaWxlSWZFbXB0eShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CiAjZWxzZQogICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmg+CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2VuZGlmCiAgICAg
ICAgIHZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3Mv
UHJldmlld0xvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9T
KSAmJiBVU0UoUVVJQ0tfTE9PSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoUVVJ
Q0tfTE9PSykKIAogI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0xvYWRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNCArNDQsNCBAQCBURVNUKFF1aWNrTG9vaywg
U2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgVVNFKFFVSUNLX0xPT0spCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Ob0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Ob0hpc3RvcnlJ
dGVtU2Nyb2xsVG9GcmFnbWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvTm9IaXN0b3J5SXRlbVNjcm9sbFRvRnJhZ21lbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZClfd2ViVmlld0RpZFNjcm9sbDoo
V0tXZWJWaWV3ICopdwogQGVuZAogCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogQGludGVyZmFjZSBEaWRTY3JvbGxUb0ZyYWdtZW50U2Nyb2xs
Vmlld0RlbGVnYXRlIDogTlNPYmplY3QgPFVJU2Nyb2xsVmlld0RlbGVnYXRlPgogCkBAIC04MSw3
ICs4MSw3IEBAIFRFU1QoV2ViS2l0LCBOb0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWUKICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0RpZFNjcm9sbFRvRnJhZ21lbnREZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
I2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
YXV0byBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbRGlkU2Nyb2xsVG9GcmFnbWVu
dFNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNjcm9sbFZp
ZXddLmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwogI2VuZGlmCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgVEVT
VChXZWJLaXQsIFdLUHJlZmVyZW5jZXNEZWZhdWx0cykKICAgICBzdGF0aWMgY29uc3QgY2hhciog
ZXhwZWN0ZWRDdXJzaXZlRm9udEZhbWlseSA9ICJBcHBsZSBDaGFuY2VyeSI7CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGV4cGVjdGVkRmFudGFzeUZvbnRGYW1pbHkgPSAiUGFweXJ1cyI7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkUGljdG9ncmFwaEZvbnRGYW1pbHkgPSAiQXBwbGUg
Q29sb3IgRW1vamkiOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTdGFuZGFyZEZvbnRGYW1pbHkg
PSAiVGltZXMiOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZEZpeGVkRm9udEZhbWls
eSA9ICJDb3VyaWVyIjsKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTZXJpZkZvbnRG
YW1pbHkgPSAiVGltZXMiOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkVVJMcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SX0ZBTUlMWSkKIAogI2ltcG9ydCAiQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJM
c1Byb3RvY29sLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BbmltYXRlZFJlc2l6ZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FuaW1hdGVkUmVz
aXplLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0FuaW1hdGVkUmVzaXplLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJ
T1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGlj
IGJvb2wgZGlkTGF5b3V0Owogc3RhdGljIGJvb2wgZGlkRW5kQW5pbWF0ZWRSZXNpemU7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5MiwxNCBAQCAgICAgW1t3ZWJWaWV3IF9yZW1vdGVP
YmplY3RSZWdpc3RyeV0gcmVnCiAgICAgTlNTdHJpbmcgKmNvcGllZFN0cmluZyA9IG5pbDsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgY29waWVkU3RyaW5nID0gW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIHN0cmluZ0ZvclR5cGU6QCJvcmcud2Via2l0LmRhdGEiXTsKLSNlbGlmIFBM
QVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29waWVkU3RyaW5n
ID0gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbW1VJUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0gZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAib3JnLndlYmtpdC5kYXRhIl0gZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKICNlbmRpZgogICAgIEVY
UEVDVF9XS19TVFJFUSgiaGVsbG8iLCBjb3BpZWRTdHJpbmcpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRTdHJpbmc6Y29waWVk
U3RyaW5nIGZvclR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07Ci0jZWxpZiBQTEFURk9S
TShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbVUlQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBzZXRWYWx1ZTpjb3BpZWRTdHJpbmcgZm9yUGFzdGVib2FyZFR5cGU6
QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07CiAjZW5kaWYKICAgICBbd2ViVmlldyBwZXJmb3Jt
U2VsZWN0b3I6QHNlbGVjdG9yKHBhc3RlOikgd2l0aE9iamVjdDpuaWxdOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVJh
bmdlSGFuZGxlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0J1bmRsZVJhbmdlSGFuZGxlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw3IEBAICAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWcKICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIlZpc2l0IHdlYmtpdC5vcmcgICA8ZW0+ICBvcjwv
ZW0+IGVtYWlsIHdlYmtpdC1kZXZAbGlzdHMud2Via2l0Lm9yZy4iIGJhc2VVUkw6bmlsXTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkR2V0VGV4dEZyb21Cb2R5UmFuZ2UpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZGlkR2V0Qm9keUlubmVySFRNTEFmdGVyRGV0ZWN0aW5nRGF0YSk7
CiAjZW5kaWYKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZVBsdWdJbi5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5k
bGVSYW5nZUhhbmRsZVBsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCAt
ICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvCiAgICAgYXV0byByYW5nZUhh
bmRsZSA9IFtXS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZSByYW5nZUhhbmRsZVdpdGhKU1Zh
bHVlOmpzUmFuZ2UgaW5Db250ZXh0OmNvbnRleHRdOwogCiAgICAgW19yZW1vdGVPYmplY3QgdGV4
dEZyb21Cb2R5UmFuZ2U6cmFuZ2VIYW5kbGUudGV4dF07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3JhbmdlSGFuZGxlIGRldGVjdERhdGFXaXRoVHlw
ZXM6V0tEYXRhRGV0ZWN0b3JUeXBlQWxsIGNvbnRleHQ6QHsgfV07CiAgICAgW19yZW1vdGVPYmpl
Y3QgYm9keUlubmVySFRNTEFmdGVyRGV0ZWN0aW5nRGF0YTpbW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdIHRvU3RyaW5nXV07CiAjZW5kaWYKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29kaW5nLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29kaW5nLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvZGluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBURVNUKENvZGluZywg
V0tQcmVmZXJlbmNlcykKICAgICAvLyBDaGFuZ2UgYWxsIGRlZmF1bHRzIHRvIHNvbWV0aGluZyBl
bHNlLgogICAgIFthIHNldE1pbmltdW1Gb250U2l6ZToxMF07CiAgICAgW2Egc2V0SmF2YVNjcmlw
dEVuYWJsZWQ6Tk9dOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFthIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6WUVTXTsK
ICNlbHNlCiAgICAgW2Egc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTpO
T107CkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChDb2RpbmcsIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24pCiAgICAgW2Egc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OkAiQXBwbGljYXRpb24g
TmFtZSJdOwogICAgIFthIHNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrOk5PXTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFthIHNldERh
dGFEZXRlY3RvclR5cGVzOldLRGF0YURldGVjdG9yVHlwZUFsbF07CiAgICAgW2Egc2V0QWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFjazpZRVNdOwogICAgIFthIHNldFJlcXVpcmVzVXNlckFjdGlvbkZv
ck1lZGlhUGxheWJhY2s6Tk9dOwpAQCAtMTE5LDcgKzExOSw3IEBAIFRFU1QoQ29kaW5nLCBXS1dl
YlZpZXdDb25maWd1cmF0aW9uKQogICAgIEVYUEVDVF9UUlVFKFtbYSBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnRdIGlzRXF1YWxUb1N0cmluZzpbYiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnRdXSk7CiAgICAgRVhQRUNUX0VRKFthIGFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrXSwg
W2IgYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEVYUEVDVF9FUShbYSBkYXRhRGV0ZWN0b3JU
eXBlc10sIFtiIGRhdGFEZXRlY3RvclR5cGVzXSk7CiAgICAgRVhQRUNUX0VRKFthIGFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tdLCBbYiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSk7CiAgICAg
RVhQRUNUX0VRKFthIHJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2tdLCBbYiByZXF1
aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrXSk7CkBAIC0xMzYsNyArMTM2LDcgQEAgVEVT
VChDb2RpbmcsIFdLV2ViVmlldykKICAgICBbYSBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczpZRVNdOwogICAgIFthIHNldEN1c3RvbVVzZXJBZ2VudDpAIkN1c3RvbVVzZXJB
Z2VudCJdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW2Egc2V0QWxsb3dzTGlua1ByZXZpZXc6WUVTXTsKICNlbHNlCiAgICAgW2Egc2V0QWxsb3dz
TGlua1ByZXZpZXc6Tk9dOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db3B5SFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvcHlIVE1MLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KICNlbmRpZgogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvcHlVUkwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db3B5VVJMLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlVUkwubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2Jp
bGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgpAQCAtNjAsNyArNjAsNyBAQCBOU1N0cmluZyAqcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKCkKIAogc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBj
cmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlBcHBsaWNhdGlvbklu
aXRpYWxpemUoKTsKICNlbmRpZgogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvcHlpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db3B5aW5nLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlpbmcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAgVEVTVChDb3B5aW5nLCBXS1ByZWZlcmVuY2VzKQogICAgIFJldGFp
blB0cjxXS1ByZWZlcmVuY2VzPiBhID0gYWRvcHROUyhbW1dLUHJlZmVyZW5jZXMgYWxsb2NdIGlu
aXRdKTsKICAgICBbYSBzZXRNaW5pbXVtRm9udFNpemU6MTBdOwogICAgIFthIHNldEphdmFTY3Jp
cHRFbmFibGVkOk5PXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBbYSBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OllFU107
CiAjZWxzZQogICAgIFthIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6
Tk9dOwpAQCAtNTgsNyArNTgsNyBAQCBURVNUKENvcHlpbmcsIFdLUHJlZmVyZW5jZXMpCiAgICAg
Ly8gQ2hhbmdlIGFsbCBkZWZhdWx0cyBvbiB0aGUgY29waWVkIGluc3RhbmNlLgogICAgIFtiIHNl
dE1pbmltdW1Gb250U2l6ZToxM107CiAgICAgW2Igc2V0SmF2YVNjcmlwdEVuYWJsZWQ6WUVTXTsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbYiBzZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5Ok5PXTsKICNlbHNlCiAgICAgW2Ig
c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTpZRVNdOwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVj
dGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJM
RUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIGJvb2wgcmFuU2NyaXB0OwogCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlQWZ0ZXJDcmFzaC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlQWZ0
ZXJDcmFzaC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jhc2gubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFdLX0FQSV9FTkFCTEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJ
X0VOQUJMRUQKIAogVEVTVChXZWJLaXQsIERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlQWZ0
ZXJDcmFzaCkKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RWRpdG9yU3RhdGVUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRWRpdG9yU3RhdGVUZXN0cy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNp
bXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjZW5kaWYKQEAgLTIzNCw3ICsyMzQsNyBAQCBURVNUKEVk
aXRvclN0YXRlVGVzdHMsIFR5cGluZ0F0dHJpYnV0ZUxpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJo
dHRwczovL3d3dy5hcHBsZS5jb20vIiwgW1t0ZXN0SGFybmVzcyB3ZWJWaWV3XSBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYScpLmhyZWYiXSk7
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3Rh
dGljIHZvaWQgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKFRl
c3RXS1dlYlZpZXcgKndlYlZpZXcsIEJPT0wgZXhwZWN0ZWRUb0hhdmVUZXh0LCBOU1N0cmluZyAq
ZGVzY3JpcHRpb24pCiB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0V4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9FeGl0RnVsbHNjcmVlbk9uRW50ZXJQaVAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgKFdLX0FQSV9FTkFCTEVEICYmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKKyNpZiAoV0tf
QVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NfU0lNVUxBVE9SX0ZBTUlMWSkpCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ZpbmRJblBhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiAhUExB
VEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiB0eXBlZGVmIGVudW0gOiBOU1VJbnRlZ2VyIHsKICAgICBOU1RleHRGaW5kZXJBc3luY2hyb25v
dXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAwLApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaXhlZExheW91dFNpemUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaXhlZExheW91dFNp
emUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRml4ZWRMYXlvdXRTaXplLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBX
S19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIGJvb2wgZml4
ZWRMYXlvdXRTaXplRG9uZTsKIHN0YXRpYyBib29sIGZpeGVkTGF5b3V0U2l6ZUFmdGVyTmF2aWdh
dGlvbkRvbmU7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Zv
bnRBdHRyaWJ1dGVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2VuZGlmCiAKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR2VvbG9jYXRpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HZW9s
b2NhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9HZW9sb2NhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgpA
QCAtMjY3LDQgKzI2Nyw0IEBAIFRFU1QoV2ViS2l0LCBEdXBsaWNhdGVHZW9sb2NhdGlvbkF1dGhv
cmkKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVy
Q3Jhc2gubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50
OihDRwogCiBAZW5kCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKIAogc3RhdGljIFVJR2VzdHVy
ZVJlY29nbml6ZXIgKnJlY3Vyc2l2ZUZpbmRIaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVyKFVJ
VmlldyAqdmlldykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTG9jYWxTdG9yYWdlQ2xlYXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VDbGVhci5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VD
bGVhci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIE5TU3RyaW5nICpzd2l6
emxlZEJ1bmRsZUlkZW50aWZpZXJXZWJCb28KIAogTlNTdHJpbmcgKmRlZmF1bHRXZWJzaXRlQ2Fj
aGVEaXJlY3RvcnkoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHJldHVybiBuaWw7CiAjZWxzZQogICAgIHJldHVybiBAIn4vTGlicmFyeS9DYWNo
ZXMvVGVzdFdlYktpdEFQSS9XZWJLaXQiOwpAQCAtMTE4LDcgKzExOCw3IEBAIE5TU3RyaW5nICpk
ZWZhdWx0V2Vic2l0ZUNhY2hlRGlyZWN0b3J5KCkKIAogTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBUaGlzIGlzIHRvIG1pcnJvciBhIHF1aXJrIGluIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IGFuZCBjYXRjaCBhbnkg
cmVncmVzc2lvbnMuCiAgICAgcmV0dXJuIFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBwQ2FjaGUi
XTsKICNlbHNlCkBAIC0xMjgsNyArMTI4LDcgQEAgTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0bwogCiBURVNUKFdLV2ViVmlldywgQ2xlYXJBcHBDYWNoZSkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1MsIE1v
YmlsZVNhZmFyaSBhbmQgd2ViYm9va21hcmtzZCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1lIEFwcENh
Y2hlIGRpcmVjdG9yeS4KICAgICBUZXN0V2ViS2l0QVBJOjpJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IHN3aXp6bGUoW05TQnVuZGxlIGNsYXNzXSwgQHNlbGVjdG9yKGJ1bmRsZUlkZW50aWZpZXIpLCBy
ZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRCdW5kbGVJZGVudGlmaWVyV2ViQm9va21hcmtz
RCkpOwogI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05TRmlsZU1hbmFnZXJFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9OU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05TRmlsZU1hbmFn
ZXJFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKQEAgLTU4
LDQgKzU4LDQgQEAgVEVTVChXZWJLaXQsIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMpCiAgICAgW2Zp
bGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsKIH0KIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxh
eWluZy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Ob3dQbGF5aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmIFVTRShNRURJ
QVJFTU9URSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpICYmIChQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEz
MDQpKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFVTRShNRURJQVJFTU9URSkgJiYgIVBMQVRGT1JN
KElPU19TSU1VTEFUT1JfRkFNSUxZKSAmJiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwNCkpCiAK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBfY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFtf
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpb107Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtfY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrOllFU107CiAgICAgICAgIFtfY29uZmlndXJhdGlvbiBfc2V0SW5saW5l
TWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOwogI2VuZGlmCkBA
IC0yNzYsNCArMjc2LDQgQEAgVEVTVF9GKE5vd1BsYXlpbmdUZXN0LCBWaWRlb0VsZW1lbnRXaXRo
bwogICAgIEFTU0VSVF9ORSh3ZWJWaWV3UGlkKCksIGdldE5vd1BsYXlpbmdDbGllbnRQaWQoKSk7
CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBVU0UoTUVESUFSRU1PVEUpICYmIChQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSAxMDEzMDQpKQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFVTRShNRURJ
QVJFTU9URSkgJiYgKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDQpKQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1Bs
YXlpbmdDb250cm9sc1Rlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAx
MjAxKQogCiBAaW50ZXJmYWNlIE5vd1BsYXlpbmdUZXN0V2ViVmlldyA6IFRlc3RXS1dlYlZpZXcK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBoYXNBY3RpdmVOb3dQbGF5aW5n
U2Vzc2lvbjsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3Rz
LCBOb3dQbGF5aW5nCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhpcyB0
ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChOb3dQbGF5
aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQogewpAQCAt
MjM4LDQgKzIzOCw0IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIERJU0FCTEVEX04K
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49
IDEwMTIwMSkKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTIwMSkKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Bhc3RlSFRNTC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxNb2Jp
bGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVNaXhlZENvbnRlbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMyMSwxNCArMzIxLDE0IEBAIFRFU1QoUGFzdGVNaXhlZENvbnRlbnQsIENvcHlBbmRQYXN0
ZVdpdGgKICAgICBbZGVzdGluYXRpb24gc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOm1hcmt1
cEZvckRlc3RpbmF0aW9uIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzYW1lOi8vIl1d
OwogICAgIFtkZXN0aW5hdGlvbiBwYXN0ZTpuaWxdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYmFy
IiwgW2Rlc3RpbmF0aW9uIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlIl0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEVYUEVDVF9UUlVFKFtkZXN0aW5hdGlvbiBjYW5QZXJm
b3JtQWN0aW9uOkBzZWxlY3RvcihwYXN0ZTopIHdpdGhTZW5kZXI6bmlsXSk7CiAjZW5kaWYKIAog
ICAgIFtkZXN0aW5hdGlvbiBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6bWFya3VwRm9yRGVz
dGluYXRpb24gYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImRpZmZlcmVudDovLyJdXTsK
ICAgICBbZGVzdGluYXRpb24gcGFzdGU6bmlsXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFtk
ZXN0aW5hdGlvbiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignaW5wdXQnKS52YWx1ZSJdKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBFWFBFQ1RfRkFMU0UoW2Rlc3RpbmF0aW9uIGNhblBlcmZvcm1B
Y3Rpb246QHNlbGVjdG9yKHBhc3RlOikgd2l0aFNlbmRlcjpuaWxdKTsKICNlbmRpZgogfQpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJU
RkQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVSVEZELm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9v
ay5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3Qu
aCIKQEAgLTIzMyw0ICsyMzMsNCBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29rQ29u
dGVudCkKICAgICBFWFBFQ1RfTlVMTChtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29rQ29u
dGVudCk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCAgICAgYXV0byByZW1vdGVPYmplY3QgPSByZXRhaW5QdHIoW1t3ZWJWCiAKICAgICBfX2Jsb2Nr
IGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgW3JlbW90ZU9iamVjdCByZW5kZXJJbWFn
ZVdpdGhXaWR0aDp3aWR0aCBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSBpbWFnZVNpemUpIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQ0dG
bG9hdCBzY2FsZSA9IFtVSVNjcmVlbiBtYWluU2NyZWVuXS5zY2FsZTsKICNlbGlmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgQ0dGbG9hdCBzY2FsZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXS5iYWNr
aW5nU2NhbGVGYWN0b3I7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
c1BsdWdJbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgLSAodm9pZClyZW5kZXJJbWFnZVdpdGhXaWR0aDooTlNO
dW1iZXIgKgogICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtfZnJhbWUganNDb250ZXh0Rm9yV29y
bGQ6W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5vcm1hbFdvcmxkXV07CiAgICAgSlNW
YWx1ZSAqY29udGFpbmVyVmFsdWUgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJy5jb250YWluZXInKSJdOwogICAgIFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUgKmNvbnRhaW5lck5vZGUgPSBbV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSBu
b2RlSGFuZGxlV2l0aEpTVmFsdWU6Y29udGFpbmVyVmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJSW1hZ2Ug
KmltYWdlID0gW2NvbnRhaW5lck5vZGUgcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOmtXS1NuYXBz
aG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdyB3aWR0aDp3aWR0aF07CiAjZWxpZiBQTEFURk9STShN
QUMpCiAgICAgTlNJbWFnZSAqaW1hZ2UgPSBbY29udGFpbmVyTm9kZSByZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnM6a1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92ZXJmbG93IHdpZHRoOndpZHRoXTsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5n
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2FmZUJyb3dzaW5nLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmICgoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkgJiYg
IWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgKChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKSkgJiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCiAKICNp
bXBvcnQgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nocmlua1Rv
Rml0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2hyaW5rVG9GaXQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hyaW5rVG9GaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0oSU9T
KQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMg
Ym9vbCBzaHJpbmtUb0ZpdERvbmU7CiBzdGF0aWMgYm9vbCBzaHJpbmtUb0ZpdEFmdGVyTmF2aWdh
dGlvbkRvbmU7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAi
UEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKSAvLyBGSVhNRTogaGFuZ3MgaW4gdGhlIGlPUyBzaW11bGF0b3IKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9y
CiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhO
YXZpZ2F0aW9uKQogewogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaXNpYmxlQ29udGVudFJlY3Qu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9W
aXNpYmxlQ29udGVudFJlY3QubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVmlzaWJsZUNvbnRlbnRSZWN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xMTksNSArMTE5LDUgQEAgVEVTVChXZWJLaXQsIFZp
c2libGVDb250ZW50UmVjdF9DbGlwcGVkQgogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwx
MSArMzYsMTEgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
ICNlbmRpZgogCi0jZGVmaW5lIFVTRVNfTU9ERVJOX0FUVFJJQlVURURfU1RSSU5HX0NPTlZFUlNJ
T04gKChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApKQorI2RlZmluZSBVU0VTX01PREVSTl9BVFRSSUJVVEVEX1NUUklOR19D
T05WRVJTSU9OICgoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkpCiAKICNpZiBXS19BUElfRU5BQkxFRCAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKFRWT1MpCiAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCBCT09MIGlzQ29tcGxldGVseVRyYW5zcGFyZW50KE5TSW1hZ2UgKmltCiAKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHR5cGVkZWYgdm9p
ZCheSXRlbVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIApA
QCAtNDkyLDcgKzQ5Miw3IEBAIC0gKHZvaWQpZXhwZWN0VHlwZTooTlNTdHJpbmcgKil0eXBlIHdp
dGgKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVsdGlwbGVBdHRh
Y2htZW50cygpCiB7CkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBwbGF0Zm9ybUNvcHlSaWNoVGV4
dFdpdGhNdWx0aXBsZUF0dAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwogICAgIFtwYXN0ZWJvYXJkIGNsZWFyQ29udGVudHNd
OwogICAgIFtwYXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAWyByaWNoVGV4dC5nZXQoKSBdXTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBp
dGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW0g
cmVnaXN0ZXJPYmplY3Q6cmljaFRleHQuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0uaXRlbVByb3ZpZGVycyA9IEBbIGl0ZW0uZ2V0KCkgXTsKQEAgLTUyOSw3ICs1Mjks
NyBAQCB2b2lkIHBsYXRmb3JtQ29weVJpY2hUZXh0V2l0aEltYWdlKCkKICAgICBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKICAgICBb
cGFzdGVib2FyZCBjbGVhckNvbnRlbnRzXTsKICAgICBbcGFzdGVib2FyZCB3cml0ZU9iamVjdHM6
QFsgcmljaFRleHQuZ2V0KCkgXV07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOwogICAgIFtpdGVtIHJlZ2lzdGVyT2JqZWN0OnJpY2hUZXh0LmdldCgpIHZp
c2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwogICAg
IFtVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdLml0ZW1Qcm92aWRlcnMgPSBAWyBpdGVt
LmdldCgpIF07CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBwbGF0Zm9ybUNvcHlQTkcoKQogICAg
IE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdOwogICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2FyZFR5cGVQTkdd
IG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTp0ZXN0SW1hZ2VEYXRhKCkgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlUE5HXTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW1VJUGFz
dGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF07CiAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW1VJ
SXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW0gc2V0UHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOwpAQCAt
MTU2Niw3ICsxNTY2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgRHJhZ0F0dGFjaG1l
bgogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERy
b3BwZWRJbWFnZUFzQXR0YWNobWVudCkKIHsKQEAgLTE3NzUsNyArMTc3NSw3IEBAIFRFU1QoV0tB
dHRhY2htZW50VGVzdHNJT1MsIERyYWdBdHRhY2htZW4KICAgICBbZHJhZ0FuZERyb3BTaW11bGF0
b3IgZW5kRGF0YVRyYW5zZmVyXTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50
Vmlld0VkaXRpbmdBY3Rpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQ29u
dGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdC5oIgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0Nv
bnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBURVNUKFdlYktpdCwg
V0tIVFRQQ29va2llU3RvcmVIdHRwT25seSkgCiAgICAgW2Nvb2tpZXMgcmVsZWFzZV07CiB9CiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogVEVTVChXZWJLaXQsIFdL
SFRUUENvb2tpZVN0b3JlQ3JlYXRpb25UaW1lKSAKIHsgICAKICAgICBhdXRvIGRhdGFTdG9yZSA9
IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC00MDIsMTAgKzQwMiwx
MCBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVDcmVhdGlvblRpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiB9Ci0j
ZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKIAogLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3Byb2JsZW0vMzUzNDQy
MDI+IGlzIHJlc29sdmVkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDEzMDEpIHx8IChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gMTEwMTAyKQorI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDEz
MDEpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9B
TExPV0VEIDw9IDExMDEwMikKIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZU5vblBlcnNp
c3RlbnQpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gbm9uUGVyc2lzdGVu
dERhdGFTdG9yZTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2ll
U3RvcmVDdXN0b20pCiAgICAgYXV0byBjdXN0b21EYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgcnVuVGVzdFdpdGhXZWJzaXRlRGF0YVN0b3Jl
KGN1c3RvbURhdGFTdG9yZS5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEwMTMwMSkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMTAxMDIpCisjZW5kaWYg
Ly8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEw
MTMwMSkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPD0gMTEwMTAyKQogCiBURVNUKFdlYktpdCwgQ29va2llT2JzZXJ2ZXJDcmFzaCkK
IHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3
U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2subW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXdTdGFibGVQcmVzZW50YXRp
b25VcGRhdGVDYWxsYmFjay5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVD
YWxsYmFjay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIFRFU1QoV2ViS2l0LCBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25V
cGRhdGVDYWxsYmFjaykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tSZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEluZm8ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3RpdmF0ZWRFbGVt
ZW50SW5mby5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxF
RCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci1sZWFrcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgcnVuVW50aWxUYXNrc0luRmxp
Z2h0KHNpemVfdAogCiBhdXRvIGUgPSBFUEVSTTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLy8gVGhpcyB0ZXN0IGlzIHNvbWV0aW1lcyB0aW1pbmcgb3V0
IG9uIGlPUyAocmRhcjovL3Byb2JsZW0vMzM2NjU2NzYpLgogVEVTVChVUkxTY2hlbWVIYW5kbGVy
LCBESVNBQkxFRF9MZWFrczEpCiAjZWxzZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdTbmFwc2hvdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld1NuYXBzaG90Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIFRFU1Qo
V0tXZWJWaWV3LCBTbmFwc2hvdEltYWdlQmFzZUNhc2UpCiAgICAgd2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dKTsKICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJW
aWV3LmdldCgpXTsKICAgICBiYWNraW5nU2NhbGVGYWN0b3IgPSBbd2luZG93IGJhY2tpbmdTY2Fs
ZUZhY3Rvcl07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHdpbmRvdyA9IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpb
d2ViVmlldyBmcmFtZV1dKTsKICAgICBbd2luZG93IGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07
CiAgICAgYmFja2luZ1NjYWxlRmFjdG9yID0gW1t3aW5kb3cgc2NyZWVuXSBzY2FsZV07CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBURVNU
KFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzCiAgICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnNxbFBhdGgucGF0
aF0pOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VQYXRoLnBhdGhdKTsKIAotI2lmIFBMQVRGT1JNKElP
UykgfHwgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDEzMDApCiAgICAgaW50IHJldHJ5Q291bnQgPSAzMDsKICAgICB3aGlsZSAocmV0cnlDb3VudC0t
KSB7CiAgICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6Y29va2llU3RvcmFnZUZpbGUucGF0aF0pCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNlbmRpZgogCkBAIC0yNDAs
NyArMjQwLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5RW5hYgogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOllF
U107CiAjZW5kaWYKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tJbnB1dERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5wdXREZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnB1dERlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChXZWJLaXQsIEZvcm1T
dWJtaXNzaW9uKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogVEVTVChXZWJLaXQs
IEZvY3VzZWRFbGVtZW50SW5mbykKIHsKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUKFdlYktpdCwg
Rm9jdXNlZEVsZW1lbnRJbmZvKQogICAgIEVYUEVDVF9XS19TVFJFUSgiZ2FycGx5IiwgW2N1cnJl
bnRFbGVtZW50IGxhYmVsXSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9BdWRpb1Nlc3Np
b25DYXRlZ29yeUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdExlZ2FjeS9pb3MvQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9BdWRp
b1Nlc3Npb25DYXRlZ29yeUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRl
eHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQWNjZXNzaW5nUGFz
dGVkSW1hZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRMZWdhY3kvbWFjL0FjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQWNjZXNzaW5nUGFz
dGVkSW1hZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPFdl
YktpdC9ET00uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8TW9iaWxlQ29y
ZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY2Nlc3NpYmlsaXR5VGVzdHNJT1Mu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Fj
Y2Vzc2liaWxpdHlUZXN0c0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFC
TEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTEx
Niw1ICsxMTYsNSBAQCBURVNUKEFjY2Vzc2liaWxpdHlUZXN0cywgU3RvcmVTZWxlY3Rpb24pCiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykg
JiYgV0tfQVBJX0VOQUJMRUQKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBXS19B
UElfRU5BQkxFRAogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25T
aGVldFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0FjdGlvblNoZWV0VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdC5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkNsYXNz
TWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCIKQEAg
LTM2OCw0ICszNjgsNCBAQCBURVNUKEFjdGlvblNoZWV0VGVzdHMsIENvcHlMaW5rV3JpdGVzVVJM
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRl
c3RzSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPUykgJiYg
V0tfQVBJX0VOQUJMRUQKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJDbGFzc01ldGhvZFN3aXp6bGVy
LmgiCiAjaW1wb3J0ICJEcmFnQW5kRHJvcFNpbXVsYXRvci5oIgpAQCAtMTkyOSw0ICsxOTI5LDQg
QEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTYW5pdAogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQ
TEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0ZvY3VzUHJlc2VydmF0aW9uVGVzdHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRm9jdXNQcmVzZXJ2YXRp
b25UZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvRm9jdXNQcmVzZXJ2YXRpb25UZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCkBAIC0xMDUsNCArMTA1
LDQgQEAgVEVTVChGb2N1c1ByZXNlcnZhdGlvblRlc3RzLCBDaGFuZ2luZ0ZvYwogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCkBAIC0yNjEsNCArMjYxLDQgQEAg
VEVTVChLZXlib2FyZElucHV0VGVzdHMsIEtleWJvYXJkVHlwZUZvcgogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1JlbmRlcmluZ1Byb2dyZXNzVGVzdHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvUmVuZGVyaW5n
UHJvZ3Jlc3NUZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhCiAK
IEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBU
RVNUKFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMsIERpZFJlbmRlclNpZ25pZmljYW50QW1vdW50T2ZU
ZXh0KQogewpAQCAtNzEsNyArNzEsNyBAQCBURVNUKFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMsIERp
ZFJlbmRlclNpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZvYnNlcnZlZFNpZ25pZmlj
YW50UmVuZGVyZWRUZXh0KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU2Nyb2xsVmlld0luc2V0VGVzdHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU2Nyb2xsVmlld0luc2V0
VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1Njcm9sbFZpZXdJbnNldFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgpAQCAtMjA4LDQgKzIwOCw0IEBAIFRFU1QoU2Nyb2xsVmlld0luc2V0VGVzdHMsIFJl
c3RvcmVJbml0aWEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9TZXRUaW1lb3V0RnVuY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvU2V0VGltZW91dEZ1bmN0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9TZXRUaW1lb3V0RnVuY3Rpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC05NSw0ICs5NSw0
IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBTZXRUaW1lb3V0RnVuY3Rpb24pCiAKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU3luY2hyb25vdXNU
aW1lb3V0VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL1N5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9T
KQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHVzaW5nIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCkBAIC03Niw1ICs3Niw1IEBAIFRFU1QoU3luY2hyb25v
dXNUaW1lb3V0VGVzdHMsIFVucmVzcG9uc2kKICAgICAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKIAotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9UZXN0SW5wdXREZWxlZ2F0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVnYXRlLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1
dERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0L19XS0ZvY3Vz
ZWRFbGVtZW50SW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Zvcm1JbnB1dFNlc3Npb24uaD4K
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVnYXRlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERl
bGVnYXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9UZXN0SW5wdXREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RJbnB1dERlbGVnYXRlLmgiCiAK
LSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQg
JiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAg
LTY4LDQgKzY4LDQgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aQog
CiBAZW5kCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1RleHRBdXRvc2l6aW5nQm9vc3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVGV4dEF1dG9zaXppbmdCb29zdC5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVGV4
dEF1dG9zaXppbmdCb29zdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogVEVTVChUZXh0QXV0b3NpemluZ0Jv
b3N0LCBDaGFuZ2VBdXRvc2l6aW5nQm9vc3RBdFJ1bnRpbWUpCiB7CkBAIC01NCw0ICs1NCw0IEBA
IFRFU1QoVGV4dEF1dG9zaXppbmdCb29zdCwgQ2hhbmdlQXV0b3NpemkKICAgICBFWFBFQ1RfRVEo
MzgsIGJvb3N0ZWRTaXplLmhlaWdodCk7CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAm
JiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1VJUGFzdGVib2Fy
ZFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1VJ
UGFzdGVib2FyZFRlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9VSVBhc3RlYm9hcmRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYm
IFdLX0FQSV9FTkFCTEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJM
RUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0Rl
bGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dL
U2Nyb2xsVmlld0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdC5oIgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdL
X0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgpAQCAtNzEsNCArNzEsNCBAQCBURVNUKFdLU2Nyb2xsVmlld1Rl
c3RzLCBQb3NpdGlvbkZpeGVkTGF5CiAgICAgRVhQRUNUX1RSVUUoZm91bmRMYXllckZvckZpeGVk
TmF2aWdhdGlvbkJhcik7CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1dG9maWxsVGVz
dHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJW
aWV3QXV0b2ZpbGxUZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19BUElfRU5B
QkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiQ2xhc3NNZXRob2RTd2l6emxlci5oIgogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKQEAgLTE4Niw0ICsxODYsNCBAQCBURVNUKFdLV2ViVmlld0F1dG9m
aWxsVGVzdHMsIEF1dG9maWxsUmVxCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAot
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0Vk
aXRBY3Rpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBXS19BUElfRU5BQkxFRAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCkBAIC0xOTIsNCArMTkyLDQg
QEAgVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0Rm9udEZhbWlseQogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIFdLX0FQSV9F
TkFCTEVECisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJh
Z0FuZERyb3BTaW11bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAj
aW1wb3J0IDxXZWJLaXQvX1dLSW5wdXREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0
aW9ucy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkgewog
ICAgIERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQgPSAwLApAQCAtNzEsNyArNzEsNyBAQCB0eXBl
ZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlCiAtIChVSURyYWdJbnRlcmFjdGlv
biAqKWRyYWdJbnRlcmFjdGlvbjsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW50ZXJmYWNlIERyYWdBbmREcm9wU2lt
dWxhdG9yIDogTlNPYmplY3Q8V0tVSURlbGVnYXRlUHJpdmF0ZSwgX1dLSW5wdXREZWxlZ2F0ZT4K
IApAQCAtODUsNyArODUsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1Zh
bHVlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8X1dLQXR0YWNobWVu
dCAqPiAqcmVtb3ZlZEF0dGFjaG1lbnRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RX
S1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0TG9jYXRp
b24gdG86KENHUG9pbnQpZW5kTG9jYXRpb24gYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25z
OihQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwKWFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9u
czsKQEAgLTEwOCw3ICsxMDgsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBO
U1ZhbHVlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBsYXN0S25vd25E
cmFnQ2FyZXRSZWN0OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqbGlmdFByZXZpZXdzOwogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShN
QUMpCiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE2
LDcgKzExNiw3IEBAIC0gKHZvaWQpX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24KIAog
ICAgIHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlID0gbmlsOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX19ibG9jayBib29sIHByZXNlbnRhdGlvblVw
ZGF0ZUhhcHBlbmVkID0gZmFsc2U7CiAgICAgW3NlbGYgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlV2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZUZvclRlc3Rpbmc6XnsKICAgICAg
ICAgcHJlc2VudGF0aW9uVXBkYXRlSGFwcGVuZWQgPSB0cnVlOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAKIEBjbGFzcyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbzsKIEBwcm90b2NvbCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQ7CiAj
ZW5kaWYKQEAgLTcwLDcgKzcwLDcgQEAKIC0gKHZvaWQpY29sbGFwc2VUb0VuZDsKIEBlbmQKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBU
ZXN0V0tXZWJWaWV3IChJT1NPbmx5KQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBV
SVZpZXcgPFVJVGV4dElucHV0LCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQ+ICp0ZXh0SW5wdXRD
b250ZW50VmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUmV0YWluUHRyPE5T
QXJyYXk+IHNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGU7CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgPHd0Zi9tYWMvQXBwS2l0Q29tcGF0aWJp
bGl0eURlY2xhcmF0aW9ucy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC0zMzksNyArMzM5LDcg
QEAgLSAodm9pZCljb2xsYXBzZVRvRW5kCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAo
SU9TT25seSkKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0Fu
ZERyb3BTaW11bGF0b3JJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0FuZERyb3BT
aW11bGF0b3IuaCIKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPUykg
JiYgV0tfQVBJX0VOQUJMRUQKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpAQCAtNzA5LDQgKzcwOSw0
IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGkKIAogQGVuZAogCi0j
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TKSAmJiBXS19BUElf
RU5BQkxFRAorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9U
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CiAKQEAgLTQyLDQgKzQyLDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KIApAQCAtOTQsNCArOTQsNCBAQCAtICh2b2lkKXNldERpc21pc3NhbEhhbmRsZXI6KGRp
c3BhdGNoX2JsCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRT
UEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dFRyYWl0cy5oPgogCkBAIC0xNjgsNCAr
MTY4LDQgQEAgV1RGX0VYVEVSTl9DX0VORAogKyAoQk9PTClpc0luSGFyZHdhcmVLZXlib2FyZE1v
ZGU7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6cmVhdHRhY2hQYWdlVG9XZWJQcgogY29uc3QgY2hhciogVGVzdENvbnRyb2xs
ZXI6OndlYlByb2Nlc3NOYW1lKCkKIHsKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBub3Qg
aGFyZGNvZGUgdGhlIHByb2Nlc3MgbmFtZS4KLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudCI7CiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCI7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBjb25zdCBj
aGFyKiBUZXN0Q29udHJvbGxlcjo6d2ViUHJvY2Vzc05hCiBjb25zdCBjaGFyKiBUZXN0Q29udHJv
bGxlcjo6bmV0d29ya1Byb2Nlc3NOYW1lKCkKIHsKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0
byBub3QgaGFyZGNvZGUgdGhlIHByb2Nlc3MgbmFtZS4KLSNpZiBQTEFURk9STShJT1MpICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShJT1NfU0lNVUxBVE9SX0ZBTUlMWSkKICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQu
TmV0d29ya2luZyI7CiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5EZXZlbG9wbWVudCI7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8Q2FyYm9u
L0NhcmJvbi5oPgogI2VuZGlmCiAKQEAgLTE4MiwxMCArMTgyLDEwIEBAIHZvaWQgVGVzdEludm9j
YXRpb246Omludm9rZSgpCiAgICAgZHVtcFJlc3VsdHMoKTsKIAogZW5kOgotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZ290SW5pdGlhbFJl
c3BvbnNlKQogICAgICAgICBXS0luc3BlY3RvckNsb3NlKFdLUGFnZUdldEluc3BlY3RvcihUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpKSk7Ci0jZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAg
IGlmIChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyhtX29wdGlvbnMsIFRlc3RDb250cm9sbGVyOjpSZXNldFN0YWdlOjpBZnRlclRlc3QpKQog
ICAgICAgICByZXR1cm47CkBAIC04NTIsNyArODUyLDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0SW52b2NhdGlvbjo6ZAogICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCIpKSB7Ci0j
aWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4g
cmVzdWx0KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVk
KCkpKTsKICNlbHNlCiAgICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gcmVzdWx0KEFk
b3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShmYWxzZSkpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWYWxpZCgp
IGMKIH0KIAogLy8gaU9TIHNwZWNpZmljIG1ldGhvZHMKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlkZW50aWZpZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dHJhaXRzKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRUZXh0UG9z
aXRpb24oKSB7IHJldHVybiAwOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0CiAgICAgV0tCdW5kbGVTZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIGZhbHNlKTsKICAgICBXS0J1bmRsZVNldEFs
bG93U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMUyhtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIGZhbHNl
KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdL
QnVuZGxlUGFnZVNldFVzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24ocGFnZSgpLT5wYWdl
KCksICFib29sZWFuRm9yS2V5KHNldHRpbmdzLCAiVXNlRmxleGlibGVWaWV3cG9ydCIpKTsKICNl
bmRpZgogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgIkluamVjdGVkQnVuZGxl
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAKIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3RvclVJLCBQ
cml2YXRlRnJhbWV3b3JrcywgQSkKQEAgLTczLDcgKzczLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IFRlc3RSdW5uZXI6OnBhdAogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1
bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBudWxscHRyOwogI2Vsc2UKICAgICAvLyBD
YWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBD
RkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyIHdpbGwgd29yay4KSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL01ENS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPExhdW5jaFNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IGdldCBrVVRUeXBl
UE5HIGZyb20gTW9iaWxlQ29yZVNlcnZpY2VzIG9uIGlPUwogc3RhdGljIGNvbnN0IENGU3RyaW5n
UmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOwogI2VuZGlmCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBp
bml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29ucwogICAgIGdsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLl9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsKICAgICBn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fYXBwbGVQYXlFbmFibGVkID0gWUVTOwogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IFBMQVRGT1JNKElPUykKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBXS0Nvb2tpZU1hbmFnZXJTZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChXS0NvbnRleHRHZXRD
b29raWVNYW5hZ2VyKGNvbnRleHQpLCB0cnVlKTsKICNlbmRpZgogCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnMKICAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6WUVTXTsKICAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRy
eTpOT107CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0g
WUVTOwogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9pbmxpbmVNZWRpYVBsYXliYWNr
UmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POwogICAgIGdsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLl9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IE5POwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmkKICNpZiBX
S19BUElfRU5BQkxFRAogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb3Bp
ZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gY29w
eV0pOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKG9wdGlvbnMudXNlRGF0YURldGVjdGlvbikKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRp
b24gc2V0RGF0YURldGVjdG9yVHlwZXM6V0tEYXRhRGV0ZWN0b3JUeXBlQWxsXTsKICAgICBpZiAo
b3B0aW9ucy5pZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKQEAgLTIzNiw3ICsyMzYsNyBAQCB1
bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJk
XSBkYXRhRm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07Ci0jZWxpZiBQTEFURk9STShJT1Mp
CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRGF0YSAqZGF0YSA9IFtbVUlQYXN0
ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3RlYm9hcmRUeXBlOldlYkFyY2hp
dmVQYm9hcmRUeXBlXTsKICNlbmRpZgogICAgIGlmICghZGF0YSkKQEAgLTI5OCw3ICsyOTgsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLCiB2b2lkIFRlc3RDb250
cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KQogewogICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewogICAg
ICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJh
bmRvbSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNz
UHJpdmF0ZSwKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjphZGRUZXN0
S2V5VG9LZXljaGFpCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4oY29uc3Qg
U3RyaW5nJiBhdHRyTGFiZWwpCiB7CiAgICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRGljdGlvbmFyeSogZGVsZXRl
UXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAg
ICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbgogYm9vbCBUZXN0Q29udHJvbGxl
cjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0aW9uYXJ5
ICpxdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAg
ICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUs
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJX
S1dlYlZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKIAogQGludGVyZmFjZSBUZXN0UnVubmVyV0tXZWJWaWV3IDogV0tXZWJWaWV3CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFj
aykodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEVuZEZvcm1D
b250cm9sSW50ZXJhY3Rpb25DYWxsYmFjaykodm9pZCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0VGVzdFNQSS5oIgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIEBpbnRlcmZhY2UgV0tXZWJWaWV3ICgp
CkBAIC03MCw3ICs3MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKSB7CkBAIC0yNTgsNyAr
MjU4LDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaQogICAgIFtz
ZWxmIF9pbnZva2VIaWRlS2V5Ym9hcmRDYWxsYmFja0lmTmVjZXNzYXJ5XTsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAZW5k
CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVSVNjcmlwdENvbnRyb2xsZXIu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJISURFdmVudEdlbmVyYXRvci5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCkBA
IC03ODYsNCArNzg2LDQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbXBsZXRlQmFja1N3
aQogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352721</attachid>
            <date>2018-10-18 13:03:25 -0700</date>
            <delta_ts>2018-10-18 14:39:22 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>PlatformIOSFamily2.txt</filename>
            <type>text/plain</type>
            <size>1606275</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE4LTEwLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAg
ICAgIFN3aXRjaCBmcm9tIFBMQVRGT1JNKElPUykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTQmFz
ZS5jcHA6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmNhY2hl
Rmx1c2gpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6Y2FjaGVGbHVzaCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fz
c2VtYmxlckNvbW1vbi5oOgorICAgICAgICAoSlNDOjppc0lPUyk6CisgICAgICAgICogaGVhcC9G
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpvdmVyQ3JpdGljYWxNZW1vcnlUaHJlc2hvbGQpOgorICAgICAgICAoSlND
OjpIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRj
aEFzeW5jT25UYXJnZXQpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6YWxsb3dKSVQpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmg6CisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJh
dG9ycy5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IHJ1bnRpbWUvTWF0aENvbW1vbi5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0
ZURlcGVuZGVudE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE4
LTEwLTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAg
ICBkZWxldGUgZXhwcmVzc2lvbiBzaG91bGQgbm90IHRocm93IHdpdGhvdXQgYSByZWZlcmVuY2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBACiAj
aW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIENQVShB
Uk1fVEhVTUIyKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk1fVEhVTUIyKQog
I2luY2x1ZGUgPGZlbnYuaD4KICNpbmNsdWRlIDxhcm0vYXJjaC5oPgogI2VuZGlmCkBAIC0yMjIx
LDcgKzIyMjEsNyBAQCBzdGF0aWMgdm9pZCBzdGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZCgpCiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSNpZiBQTEFURk9STShJT1MpICYm
IENQVShBUk1fVEhVTUIyKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk1fVEhV
TUIyKQogICAgIC8vIEVuYWJsZWQgSUVFRTc1NCBkZW5vcm1hbCBzdXBwb3J0LgogICAgIGZlbnZf
dCBlbnY7CiAgICAgZmVnZXRlbnYoICZlbnYgKTsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAvLyBoYXZlIGEgY2hhbmNlIHRvIHBhcnNl
IG9wdGlvbnMuCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBPcHRpb25zOjpjcmFzaElmQ2Fu
dEFsbG9jYXRlSklUTWVtb3J5KCkgPSB0cnVlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBA
IHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjazo6c19z
aG91bGRDcmVhdGVHQ1RpbWVyID0gZmFsc2U7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpICYmIFRB
UkdFVF9PU19JT1MKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBUQVJHRVRfT1NfSU9TCiAv
LyBGSVhNRTogRXhwb3NlIHN5bWJvbHMgdG8gdGVsbCBkeWxkIHdoZXJlIHRvIGZpbmQgSmF2YVNj
cmlwdENvcmUgb24gb2xkZXIgdmVyc2lvbnMgb2YKIC8vIGlPUyAoPCA3LjApLiBXZSBzaG91bGQg
cmVtb3ZlIHRoZXNlIHN5bWJvbHMgb25jZSB3ZSBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IHN1
Y2gKIC8vIHZlcnNpb25zIG9mIGlPUy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY5Njg3Mj4gZm9y
IG1vcmUgZGV0YWlscy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVy
TWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVy
TWFwLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2lmIFBMQVRG
T1JNKEFQUExFVFYpCiAjZWxzZQogc3RhdGljIGNvbnN0IGludDMyX3QgZmlyc3RKYXZhU2NyaXB0
Q29yZVZlcnNpb25XaXRoSW5pdENvbnN0cnVjdG9yU3VwcG9ydCA9IDB4MjFBMDQwMDsgLy8gNTM4
LjQuMAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGlj
IGNvbnN0IHVpbnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhJbml0Q29uc3RydWN0b3JTdXBwb3J0
ID0gRFlMRF9JT1NfVkVSU0lPTl8xMF8wOwogI2VsaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIGNv
bnN0IHVpbnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhJbml0Q29uc3RydWN0b3JTdXBwb3J0ID0g
MHhBMEEwMDsgLy8gT1NYIDEwLjEwLjAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjg4MCw3ICsyODgwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2FjaGVG
bHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0jaWYgT1MoSU9TKQorI2lmIE9T
KElPU19GQU1JTFkpCiAgICAgICAgIHN5c19jYWNoZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJl
cGFyZUZvckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7CiAjZWxpZiBPUyhGVUNIU0lBKQogICAgICAg
ICB6eF9jYWNoZV9mbHVzaChjb2RlLCBzaXplLCBaWF9DQUNIRV9GTFVTSF9JTlNOKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ2Myw3ICsyNDYzLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkK
ICAgICB7Ci0jaWYgT1MoSU9TKQorI2lmIE9TKElPU19GQU1JTFkpCiAgICAgICAgIHN5c19jYWNo
ZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJlcGFyZUZvckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7
CiAjZWxpZiBPUyhMSU5VWCkKICAgICAgICAgc2l6ZV90IHBhZ2UgPSBwYWdlU2l6ZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1v
bi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fzc2VtYmxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBib29sIGlzSU9TKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNvbnN0
IGNvbnN0ZXhwciBTZWNvbmRzIHBhZ2luZ1RpbWVPdXQgeyAxMDBfbXMgfTsgLy8gVGltZSBpbiBz
ZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBi
bG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KICNlbmRpZgogCkBAIC00NCw3
ICs0NCw3IEBAIHZvaWQgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW8KICAgICBI
ZWFwJiBoZWFwID0gdm0uaGVhcDsKICAgICBtX2RpZEdDUmVjZW50bHkgPSBmYWxzZTsKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTW9ub3Rvbmlj
VGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBpZiAoaGVhcC5pc1Bh
Z2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7CiAgICAgICAgIGNhbmNlbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw3ICs4NSw3IEBACiAjaW5jbHVkZSA8d3RmL1NpbXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSA8Ym1hbGxvYy9ibWFsbG9jLmg+CiAjZW5kaWYKIApAQCAtMTI2LDcgKzEy
Niw3IEBAIHNpemVfdCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShzaXplX3QgaGVhcFMKICAgICBpZiAo
Vk06OmlzSW5NaW5pTW9kZSgpKQogICAgICAgICByZXR1cm4gT3B0aW9uczo6bWluaVZNSGVhcEdy
b3d0aEZhY3RvcigpICogaGVhcFNpemU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBzaXplX3QgbWVtb3J5Rm9vdHByaW50ID0gYm1hbGxvYzo6YXBp
OjptZW1vcnlGb290cHJpbnQoKTsKICAgICBpZiAobWVtb3J5Rm9vdHByaW50IDwgcmFtU2l6ZSAq
IE9wdGlvbnM6OnNtYWxsSGVhcFJBTUZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBPcHRpb25z
OjpzbWFsbEhlYXBHcm93dGhGYWN0b3IoKSAqIGhlYXBTaXplOwpAQCAtNTE1LDcgKzUxNSw3IEBA
IHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2wKIAogYm9vbCBIZWFwOjpv
dmVyQ3JpdGljYWxNZW1vcnlUaHJlc2hvbGQoTWVtb3J5VGhyZXNob2xkQ2FsbFR5cGUgbWVtb3J5
VGhyZXNob2xkQ2FsbFR5cGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKG1lbW9yeVRocmVzaG9sZENhbGxUeXBlID09IE1lbW9yeVRocmVz
aG9sZENhbGxUeXBlOjpEaXJlY3QgfHwgKyttX3ByZWNlbnRBdmFpbGFibGVNZW1vcnlDYWNoZWRD
YWxsQ291bnQgPj0gMTAwKSB7CiAgICAgICAgIG1fb3ZlckNyaXRpY2FsTWVtb3J5VGhyZXNob2xk
ID0gYm1hbGxvYzo6YXBpOjpwZXJjZW50QXZhaWxhYmxlTWVtb3J5SW5Vc2UoKSA+IE9wdGlvbnM6
OmNyaXRpY2FsR0NNZW1vcnlUaHJlc2hvbGQoKTsKICAgICAgICAgbV9wcmVjZW50QXZhaWxhYmxl
TWVtb3J5Q2FjaGVkQ2FsbENvdW50ID0gMDsKQEAgLTIyNzYsNyArMjI3Niw3IEBAIHZvaWQgSGVh
cDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBHZXQgY3JpdGljYWwg
bWVtb3J5IHRocmVzaG9sZCBmb3IgbmV4dCBjeWNsZS4KICAgICBvdmVyQ3JpdGljYWxNZW1vcnlU
aHJlc2hvbGQoTWVtb3J5VGhyZXNob2xkQ2FsbFR5cGU6OkRpcmVjdCk7CiAjZW5kaWYKQEAgLTI1
NjgsNyArMjU2OCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0QK
ICAgICB9IGVsc2UgewogICAgICAgICBzaXplX3QgYnl0ZXNBbGxvd2VkVGhpc0N5Y2xlID0gbV9t
YXhFZGVuU2l6ZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBpZiAob3ZlckNyaXRpY2FsTWVtb3J5VGhyZXNob2xkKCkpCiAgICAgICAgICAg
ICBieXRlc0FsbG93ZWRUaGlzQ3ljbGUgPSBzdGQ6Om1pbihtX21heEVkZW5TaXplV2hlbkNyaXRp
Y2FsLCBieXRlc0FsbG93ZWRUaGlzQ3ljbGUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwNSw3ICs3MDUsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fdGhyZWFkQ29uZGl0aW9uOyAvLyBU
aGUgbXV0YXRvciBtdXN0IG5vdCB3YWl0IG9uIHRoaXMuIEl0IHdvdWxkIGNhdXNlIGEgZGVhZGxv
Y2suCiAgICAgUmVmUHRyPEF1dG9tYXRpY1RocmVhZD4gbV90aHJlYWQ7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCBtX3ByZWNlbnRB
dmFpbGFibGVNZW1vcnlDYWNoZWRDYWxsQ291bnQ7CiAgICAgYm9vbCBtX292ZXJDcml0aWNhbE1l
bW9yeVRocmVzaG9sZDsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0
IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPHd0Zi9pb3Mv
V2ViQ29yZVRocmVhZC5oPgogI2VuZGlmCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6ZGlzcGF0Y2hBCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2Vi
Q29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsK
ICAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNl
bmRpZgogCkBAIC01MCw3ICs1MCw3IEBACiAjZW5kaWYKIAogI2lmIEhBVkUoUkVNQVBfSklUKQot
I2lmIENQVShBUk02NCkgJiYgUExBVEZPUk0oSU9TKQorI2lmIENQVShBUk02NCkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgVVNFX0VYRUNVVEVfT05MWV9KSVRfV1JJVEVfRlVOQ1RJ
T04gMQogI2VuZGlmCiAjZW5kaWYKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdWludHB0cl90
IHN0YXJ0T2ZGaXhlZFdyaXRhYmxlTWVtCiAKIHN0YXRpYyBib29sIGFsbG93SklUKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpICYmIChDUFUoQVJNNjQpIHx8IENQVShBUk0pKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIChDUFUoQVJNNjQpIHx8IENQVShBUk0pKQogICAgIHJldHVybiBwcm9j
ZXNzSGFzRW50aXRsZW1lbnQoImR5bmFtaWMtY29kZXNpZ25pbmciKTsKICNlbHNlCiAgICAgcmV0
dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmg+CiAjaW5jbHVkZSA8d3Rm
L01ldGFBbGxvY2F0b3IuaD4KIAotI2lmIE9TKElPUykKKyNpZiBPUyhJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPGxpYmtlcm4vT1NDYWNoZUNvbnRyb2wuaD4KICNlbmRpZgogCi0jaWYgT1MoSU9TKQor
I2lmIE9TKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDExICs0NiwxMSBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3Rh
Y2tSZWdpc3RlcnMoCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJl
Z2lzdGVycygpCiB7CiAjaWYgQ1BVKEFSTTY0KQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBSZWdpc3RlclNldChBUk02NFJlZ2lzdGVyczo6
eDE4LCBBUk02NFJlZ2lzdGVyczo6bHIpOwogI2Vsc2UKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RS
QURJVElPTkFMKQogICAgIHJldHVybiBSZWdpc3RlclNldChBUk1SZWdpc3RlcnM6OmxyLCBBUk1S
ZWdpc3RlcnM6OnBjKTsKICNlbHNlCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpy
NSk7CiAgICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI2KTsKICAgICByZXN1bHQuc2V0KEFS
TVJlZ2lzdGVyczo6cjgpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI5KTsKICNlbmRpZgogICAgIHJl
c3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MzQsNyArODM0LDcgQEAgdHlwZWRlZiBNYXRoVGh1bmtDYWxsaW5nQ29udmVudGlvbigqTWF0
aAogICAgIH0gXAogICAgIHN0YXRpYyBNYXRoVGh1bmsgVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVu
Y3Rpb24pID0gJmZ1bmN0aW9uIyNUaHVuazsKIAotI2VsaWYgQ1BVKEFSTV9USFVNQjIpICYmIENP
TVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBQTEFURk9STShJT1MpCisjZWxpZiBDUFUoQVJNX1RI
VU1CMikgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNkZWZpbmUgZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVuY3Rpb24pIFwKICAgICBh
c20oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTV9USFVNQjIpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgQ1BVKEFSTV9USFVNQjIpCiAKIC8vIFRoZSBmb2xsb3dpbmcg
Y29kZSBpcyB0YWtlbiBmcm9tIG5ldGxpYi5vcmc6CiAvLyAgIGh0dHA6Ly93d3cubmV0bGliLm9y
Zy9mZGxpYm0vZmRsaWJtLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRp
YyB2b2lkIHNjYWxlSklUUG9saWN5KCkKIAogc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgPCA0KQogI2VuZGlmCiAgICAgewpAQCAt
MzUzLDcgKzM1Myw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogICAgICAgICAg
ICAgT3B0aW9uczo6Z2NJbmNyZW1lbnRTY2FsZSgpID0gMDsKICAgICB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1MsIHdlIGNvbnRy
b2wgaGVhcCBncm93dGggdXNpbmcgcHJvY2VzcyBtZW1vcnkgZm9vdHByaW50LiBUaGVyZWZvcmUg
dGhlc2UgdmFsdWVzIGNhbiBiZSBhZ3Jlc3NpdmUuCiAgICAgT3B0aW9uczo6c21hbGxIZWFwUkFN
RnJhY3Rpb24oKSA9IDAuODsKICAgICBPcHRpb25zOjptZWRpdW1IZWFwUkFNRnJhY3Rpb24oKSA9
IDAuOTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpID0gZmFsc2U7CiAg
ICAgfQogICAgIAotI2lmIFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTTY0KSAmJiAhQ1BVKEFSTTY0
RSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBDUFUoQVJNNjQpICYmICFDUFUoQVJNNjRF
KQogICAgIC8vIE92ZXJyaWRlIGdsb2JhbGx5IGZvciBub3cuIExvbmdlciB0ZXJtIHdlJ2xsIGp1
c3QgbWFrZSB0aGUgZGVmYXVsdAogICAgIC8vIGJlIHRvIGhhdmUgdGhpcyBvcHRpb24gZW5hYmxl
ZCwgYW5kIGhhdmUgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydAogICAgIC8vIGl0IGp1c3Qg
c2lsZW50bHkgdXNlIGEgc2luZ2xlIG1hcHBpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZUTF9DT01QSUxFUl9USFJF
QURTIDIKICNlbHNlCiAjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZUTF9DT01QSUxFUl9USFJF
QURTIDgKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE4LTEwLTE4ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCBmcm9tIFBMQVRGT1JNKElP
UykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvRmVh
dHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3Rm
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OnRocmVzaG9sZEZvclBv
bGljeSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL2NvY29hL01l
bW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Omluc3RhbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL05TTWFw
VGFibGVTUEkuaDoKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9YUENTUEkuaDoKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5jcHA6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpj
b3B5RGVmYXVsdExvY2FsZSk6CisKIDIwMTgtMTAtMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcy
MDguCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxMiArMTE5LDEyIEBAIGV4
dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRlQmFycmllcih2b2lkKTsKICNkZWZpbmUgV1RGX0FUVFJJ
QlVURV9QUklOVEYoZm9ybWF0U3RyaW5nQXJndW1lbnQsIGV4dHJhQXJndW1lbnRzKQogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8qIEZvciBh
IHByb2plY3QgdGhhdCB1c2VzIFdURiBidXQgaGFzIG5vIGNvbmZpZy5oLCB3ZSBuZWVkIHRvIGV4
cGxpY2l0bHkgc2V0IHRoZSBleHBvcnQgZGVmaW5lcyBoZXJlLiAqLwogI2lmbmRlZiBXVEZfRVhQ
T1JUX1BSSVZBVEUKICNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLyogVGhl
c2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGRlY2xhcmVkLCBidXQgbm90IG5lY2Vzc2Fy
aWx5IGFsd2F5cyBkZWZpbmVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGRpc2Fi
bGVkLiAqLwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAKIC8qIEZJWE1FOiBNb3ZlIG91dCB0aGUgUExBVEZPUk0gc3BlY2lmaWMgcnVs
ZXMgaW50byBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcy4gKi8KIAogLyogLS0tLS0tLS0tIEFwcGxl
IElPUyAoYnV0IG5vdCBNQUMpIHBvcnQgLS0tLS0tLS0tICovCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfQUlSUExBWV9Q
SUNLRVIpCiAjaWYgIVBMQVRGT1JNKElPU01BQykKQEAgLTE2NiwxOCArMTY2LDE4IEBAIHRoZSBw
dWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNlbmRpZgogCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX1dLTEVHQUNZUERGVklFVykKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMjAwMDAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYm
ICFQTEFURk9STShJT1NNQUMpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTIwMDAwCiAjZGVmaW5lIEVOQUJMRV9XS0xFR0FDWVBERlZJRVcgMQogI2VuZGlmCiAjZW5kaWYK
IAogI2lmICFkZWZpbmVkKEVOQUJMRV9XS1BERlZJRVcpCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NN
QUMpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwCiAjZGVmaW5lIEVOQUJMRV9XS1BERlZJRVcgMQogI2VuZGlmCiAjZW5k
aWYKIAotI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBQTEFURk9STShJT1Nf
RkFNSUxZKSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgV0FUQ0hPUyBwb3J0IC0tLS0tLS0tLSAq
LwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDcgQEAKICNkZWZpbmUgU1lNQk9MX1NUUklORyhuYW1lKSAjbmFtZQogI2VuZGlmCiAK
LSNpZiBPUyhJT1MpCisjaWYgT1MoSU9TX0ZBTUlMWSkKICNkZWZpbmUgVEhVTUJfRlVOQ19QQVJB
TShuYW1lKSBTWU1CT0xfU1RSSU5HKG5hbWUpCiAjZWxzZQogI2RlZmluZSBUSFVNQl9GVU5DX1BB
UkFNKG5hbWUpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgc2l6ZV90IHRo
cmVzaG9sZEZvclBvbGljeShNZW1vcnlVCiB7CiAgICAgY29uc3Qgc2l6ZV90IGJhc2VUaHJlc2hv
bGRGb3JQb2xpY3kgPSBzdGQ6Om1pbigzICogR0IsIHJhbVNpemUoKSk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBkb3VibGUgY29uc2Vy
dmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7CiAgICAgY29uc3QgZG91YmxlIHN0cmljdFRo
cmVzaG9sZEZyYWN0aW9uID0gMC42NTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNTgsNyArMTA1OCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAm
JiBVU0UoUVVJQ0tfTE9PSykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAogI2RlZmluZSBVU0VfU1lT
VEVNX1BSRVZJRVcgMQogI2VuZGlmCiAKQEAgLTEzNDksMTEgKzEzNDksMTEgQEAKICNkZWZpbmUg
VVNFX0xJQldFQlJUQyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFVTRShHQ1JZUFQp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFVTRShHQ1JZUFQpCiAjZGVmaW5lIEhBVkVfUlNB
X1BTUyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKEFQUExFVFYpKQor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwICYmICFQTEFURk9STShBUFBMRVRWKSkKICNkZWZpbmUgSEFW
RV9VUkxfRk9STUFUVElORyAxCiAjZW5kaWYKIApAQCAtMTM2MSwxMSArMTM2MSwxMSBAQAogI2Rl
ZmluZSBIQVZFX1NUQUNLX0JPVU5EU19GT1JfTkVXX1RIUkVBRCAxCiAjZW5kaWYKIAotI2lmIChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAjZGVmaW5lIEhBVkVfQVZDT05URU5U
S0VZU0VTU0lPTiAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApCisjaWYgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApCiAjZGVmaW5lIEVOQUJMRV9BQ0NFU1NJQklMSVRZX0VWRU5UUyAxCiAjZGVmaW5lIEhB
VkVfU0VDX0tFWV9QUk9YWSAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL01l
bW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IG5vdGlmeVRva2Vuc1szXTsK
IC8vIFRoZXNlIHZhbHVlIHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVyaWZpZXMgdGhh
dCBpdCB0aHJvdHRsZXMgZnJlcXVlbnQKIC8vIGxvdyBtZW1vcnkgZXZlbnRzLCBncmVhdGx5IHJl
ZHVjaW5nIENQVSB1c2FnZS4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNfbWluaW11bUhvbGRPZmZU
aW1lIHsgNV9zIH07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hvbGRPZmZNdWx0aXBsaWVyID0gMjA7CiAjZW5k
aWYKIApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIGF1dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVT
U1VSRV9OT1JNQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVN
T1JZUFJFU1NVUkVfQ1JJVElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlU
X1dBUk4gfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vs
c2UgLy8gUExBVEZPUk0oTUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElT
UEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJVElDQUw7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKIAogICAgICAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSwgXnsKICAgICAgICAg
ICAgIGF1dG8gc3RhdHVzID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKG1lbW9yeVByZXNzdXJl
RXZlbnRTb3VyY2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICAgICAgICAgIC8vIFZNIHByZXNz
dXJlIGV2ZW50cy4KICAgICAgICAgICAgIGNhc2UgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfTk9S
TUFMOgpAQCAtMTgzLDE0ICsxODMsMTQgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omhv
bGRPZmYoU2VjbwogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5
UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5pbnN0
YWxsKCk7CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKICNlbmRpZgogCiAgICAgcmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZWNv
bmRzIGhvbGRPZmZUaW1lID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSAqIHNf
aG9sZE9mZk11bHRpcGxpZXI7CiAgICAgaG9sZE9mZihzdGQ6Om1heChob2xkT2ZmVGltZSwgc19t
aW5pbXVtSG9sZE9mZlRpbWUpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Nv
Y29hL05TTWFwVGFibGVTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9zcGkvY29j
b2EvTlNNYXBUYWJsZVNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RGL3d0Zi9z
cGkvY29jb2EvTlNNYXBUYWJsZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNNYXBUYWJsZS5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAw
MAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNN
YXBUYWJsZVByaXYuaD4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB0eXBlZGVmIHZvaWQqIHhwY19jb25uZWN0aW9uX3Q7
CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF94cGNfdHlwZV9zKiB4cGNfdHlwZV90OwogCi0jaWYg
UExBVEZPUk0oSU9TKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9lc2NhcGUpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19oYXNfYXR0cmlidXRlKG5vZXNjYXBlKQogI2RlZmluZSBYUENfTk9F
U0NBUEUgX19hdHRyaWJ1dGVfXygoX19ub2VzY2FwZV9fKSkKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29tbW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgVUNoYXIqIGFVCiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KLSNlbGlmIFBMQVRGT1JNKElPUykgJiYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcp
ICYmICFBU0FOX0VOQUJMRUQKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFdURl9BUk1f
QVJDSF9BVF9MRUFTVCg3KSAmJiAhQVNBTl9FTkFCTEVECiBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1
YWwoY29uc3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgYm9vbCBpc0VxdWFsID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dURi93dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMg
VmFyaWFudDxUZXh0QnJlYWtJdGVyYXRvcklDVSwgVGV4dEJyZWFrSXRlcmF0b3JQbGF0Zm9ybT4g
bWFwTW9kZVRvQmFja2luZ0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBUZXh0QnJlYWtJdGVy
YXRvcjo6TW9kZSBtb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9pY3UvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuaD4KIAotI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbmNsdWRlIDx3dGYvdGV4dC9jZi9UZXh0QnJlYWtJdGVyYXRvckNGLmg+CiAj
ZWxzZQogI2luY2x1ZGUgPHd0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5oPgpAQCAtMzQs
NyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHR5
cGVkZWYgVGV4dEJyZWFrSXRlcmF0b3JDRiBUZXh0QnJlYWtJdGVyYXRvclBsYXRmb3JtOwogI2Vs
c2UKIHR5cGVkZWYgTnVsbFRleHRCcmVha0l0ZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yUGxhdGZv
cm07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklD
VS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGlubGluZSBjaGFy
KiBjb3B5U2hvcnRBU0NJSVN0cmluZwogCiBzdGF0aWMgY2hhciogY29weURlZmF1bHRMb2NhbGUo
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIGNvcHlTaG9ydEFTQ0lJU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkxv
Y2FsZUdldFZhbHVlKGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKS5nZXQoKSwga0NGTG9j
YWxlQ29sbGF0b3JJZGVudGlmaWVyKSkpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogRG9jdW1lbnRh
dGlvbiBjbGFpbXMgdGhlIGNvZGUgYWJvdmUgd291bGQgd29yayBvbiBpT1MgNC4wIGFuZCBsYXRl
ci4gQWZ0ZXIgdGVzdCB0aGF0IHdvcmtzLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgYW5kIHVzZSB0
aGF0IGluc3RlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTEzIEBACisyMDE4
LTEwLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFN3
aXRjaCBmcm9tIFBMQVRGT1JNKElPUykgdG8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDcyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdWJMb2NhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRTdWJMb2NhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJBZG1pbmlzdHJhdGl2ZUFy
ZWEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3ViQWRtaW5pc3RyYXRpdmVBcmVhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNSZXF1ZXN0RnJvbUlCb29rcyk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpmaWx0ZXJEZXZpY2VMaXN0KToKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmFj
Y2Vzc0xvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50OjplcnJvckxvZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6U3BlZWNo
U3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6c3BlYWspOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VD
b250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJD
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmls
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAg
ICAgICAgKiBXZWJDb3JlUHJlZml4Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21SZW5kZXJlcik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpwcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3Q6OmlzQ29sbGFwc2VkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIgY29uc3QpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2li
aWxpdHlPYmplY3RJT1MubW06CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9Db21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21tb25WTVNsb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0Nh
bGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzaG91
bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmluaXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3Mu
bW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3Qp
OgorICAgICAgICAqIGNyeXB0by9Db21tb25DcnlwdG9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgICogY3J5cHRvL21hYy9TZXJp
YWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hc3RlcktleUFj
Y291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUFuZFN0b3JlTWFzdGVyS2V5KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZh
bHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29u
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgICogY3NzL2h0bWwu
Y3NzOgorICAgICAgICAodmlkZW8pOgorICAgICAgICAoaW5wdXQsIHRleHRhcmVhLCBrZXlnZW4s
IHNlbGVjdCwgYnV0dG9uKToKKyAgICAgICAgKCNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1Nf
RkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSk6CisgICAgICAgICgjaWYgZGVmaW5l
ZChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAmJiBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKToKKyAg
ICAgICAgKCNlbmRpZik6CisgICAgICAgICgjaWYgZGVmaW5lZChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJiYgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpOgorICAgICAgICAodGV4dGFyZWEpOgor
ICAgICAgICAoaW5wdXQ6bWF0Y2hlcyhbdHlwZT0icmFkaW8iXSwgW3R5cGU9ImNoZWNrYm94Il0p
KToKKyAgICAgICAgKGlucHV0Om1hdGNoZXMoW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0ic3VibWl0
Il0sIFt0eXBlPSJyZXNldCJdKSwgaW5wdXRbdHlwZT0iZmlsZSJdOjotd2Via2l0LWZpbGUtdXBs
b2FkLWJ1dHRvbiwgYnV0dG9uKToKKyAgICAgICAgKGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJr
aXQtc2xpZGVyLXRodW1iLCBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LW1lZGlhLXNsaWRl
ci10aHVtYik6CisgICAgICAgICgjaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZ
KSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkpOgorICAgICAgICAoaW5wdXRbdHlwZT0iY2hl
Y2tib3giXSk6CisgICAgICAgICgjZW5kaWYgLy8gZGVmaW5lZChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJiYgRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOgorICAgICAgICAoI2lmIGRlZmluZWQo
V1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUyk6IERlbGV0ZWQuCisgICAgICAg
ICgjaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MpKTog
RGVsZXRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dCk6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlE
KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNzc1Byb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuaDoKKyAgICAgICAgKiBjc3Mvc3ZnLmNzczoKKyAgICAgICAgKCNpZiBkZWZpbmVk
KFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSk6Cisg
ICAgICAgICgjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9T
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKToKKyAgICAg
ICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Rl
dmljZU9yaWVudGF0aW9uRGF0YS5jcHA6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9u
RGF0YS5oOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcDoKKyAgICAg
ICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRh
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BB
Y3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRNYXJrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjph
bGxNYXJrZXJzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEluc2VydEFzU2VwYXJhdGVNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6d2lsbEJlRGVsZXRlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGRv
bS9SYW5nZS5jcHA6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphYnNvbHV0ZVBvaW50SWZOb3RDbGlwcGVkKToK
KyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2V0Vmlld3BvcnRGZWF0dXJlKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3Jh
cGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6On5UZW1wb3JhcnlTZWxlY3Rp
b25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRXaXRob3V0
U2VuZGluZ1RleHRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG93U3BlbGxpbmdHdWVzc1BhbmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1h
cik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXZlYWxTZWxlY3Rpb25B
ZnRlckVkaXRpbmdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRJZ25v
cmVTZWxlY3Rpb25DaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlU2Vs
ZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2hvdWxkQ2hh
bmdlU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmVkaXRvclVJVXBk
YXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6RnJhbWVTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZURhdGFEZXRlY3RvcnNG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVh
cmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZERlbGV0ZVNl
bGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmV2ZWFs
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rp
b25Gcm9tTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hh
bmdlU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6
CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29t
bWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250
U2hhZG93Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjpjcmVhdGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5oOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKF9mb250Rm9y
TmFtZUFuZFNpemUpOgorICAgICAgICAoX3NoYWRvd0ZvclNoYWRvd1N0eWxlKToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQpOgorICAgICAgICAo
SFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6Ol9wcm9jZXNzTWV0YUVsZW1lbnRXaXRoTmFtZSk6CisgICAgICAgIChIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlc0ZvckF0dHJp
YnV0ZWRTdHJpbmdDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRVUkwpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1Mu
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgICogZWRpdGluZy9tYWMvRnJh
bWVTZWxlY3Rpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90
aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogZmlsZWFwaS9G
aWxlQ29jb2EubW06CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGcmFtZUJhc2U6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6cmVzdG9yZSk6CisgICAgICAgICog
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6
SGlzdG9yeUl0ZW0pOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DYWNoZVBhZ2Up
OgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmlzS2V5Ym9h
cmRGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heEFjdGl2ZVBpeGVsTWVt
b3J5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTY2FuUmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdGxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnB1cmdlQnVmZmVyZWREYXRhSWZQb3NzaWJsZSk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
TWV0YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9j
ZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXNlc01lbnVMaXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzY3JvbGxUb1NlbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRT
dHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRl
eHRTdHlsZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlVXBkYXRlZCk6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgor
ICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmlu
Z1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNl
c3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246Omlz
UGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNr
IGNvbnN0KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAg
KiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3Vt
ZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxl
VG91Y2hFdmVudCk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAq
IGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0
VHlwZTo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzS2V5Ym9hcmRG
b2N1c2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpo
YW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aGFuZGxlQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hl
ZHVsZXI6OnNob3VsZFlpZWxkQmVmb3JlVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaDoKKyAgICAgICAgKiBodG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1
bWJFbGVtZW50OjpkcmFnRnJvbSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEluZGljYXRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpwbGF0Zm9ybSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2
ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFJ1bkxvb3ApOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VD
cm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQp
OgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpzdG9wRm9yVXNlckNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0
YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3Jl
U2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBs
dWdpbik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNy
ZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmRpc3BhdGNoVmll
d3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZTo6ZGlkUmVjZWl2ZURvY1R5cGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAg
ICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpvdXRlckhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6Om91dGVyV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpjbGVhclRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9E
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzOjpnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyk6Cisg
ICAgICAgICogcGFnZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdl
L0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbGxEZXRhY2hQYWdl
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVm
ZmVjdGl2ZUZyYW1lRmxhdHRlbmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydENvbnN0cmFpbmVk
VmlzaWJsZUNvbnRlbnRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29tcHV0
ZVNjcm9sbGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1
c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNh
bGN1bGF0ZUV4dGVuZGVkQmFja2dyb3VuZE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2l6ZUZvclJlc2l6ZUV2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OmxheW91dCk6CisgICAgICAgICog
cGFnZS9NZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNh
bE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAg
KiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkTWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkRp
c3BsYXkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzQmFzZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NEZWZhdWx0VmFs
dWVzLmg6CisgICAgICAgIChXZWJDb3JlOjplZGl0aW5nQmVoYXZpb3JUeXBlRm9yUGxhdGZvcm0p
OgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlh
bGl6ZUluZGljYXRvcik6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1lbnRQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpqZXR0aXNvbkV4cGVuc2l2ZU9iamVjdHNPblRvcExldmVsTmF2aWdhdGlvbik6CisgICAg
ICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6c2hvd1RleHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRo
cmVhZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dm1QYWdlU2l6ZSk6CisgICAgICAgICog
cGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbToKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVu
dEhhbmRsZXJJT1MubW06CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAg
ICogcGFnZS9tYWMvQ2hyb21lTWFjLm1tOgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAq
IHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1MubW06CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJ
T1MuY3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmg6
CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0Ry
YWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vTG93UG93ZXJN
b2RlTm90aWZpZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVNjcmVlbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29udGVudHNT
Y3JvbGxQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRD
b250ZW50c1Njcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZp
c2libGVDb250ZW50UmVjdEludGVybmFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9UaHJlYWRUaW1lcnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFN1cHByZXNzVGhyZWFkU2FmZXR5Q2hlY2spOgorICAgICAg
ICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9I
YXJkd2FyZUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0
ZW5lcjo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVS
ZWFkZXJJT1MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFk
ZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldHVwUG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvVVJM
Q0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjp3cmFwV2l0aERlY2lzaW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI6Om5lZWRzVUlQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlc3RVbmJsb2Nr
QXN5bmMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9QbGF0Zm9ybVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
U3lzdGVtVmVyc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN5c3RlbU1hcmtldGlu
Z1ZlcnNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWQubW06CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRl
RGVmYXVsdERpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFu
ZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Zm9udEZvclBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmluYWN0aXZlRm9udENvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Rm9udENhc2Nh
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjppc0Vtb2ppIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbnRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjp2b2x1
bWVDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0VHJ1bmNh
dGVUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dvcmRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rhcmdl
dE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cmF0ZUNoYW5nZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3Vw
cG9ydHNQZXJzaXN0ZW50S2V5cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVB
VlBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZWVrYWJsZVRpbWVSYW5n
ZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptYXhpbXVt
RHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzUGxheWJhY2tU
YXJnZXROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZERp
c2FibGVTbGVlcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1BpY3R1
cmVJblBpY3R1cmUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6flRpbGVDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVHcmlkOjpzdGFydGVkTmV3Q29ob3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3VycmVudFJ1bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBbmltYXRpb25EZWxlZ2F0ZSBh
bmltYXRpb25EaWRTdGFydDpdKToKKyAgICAgICAgKC1bV2ViQW5pbWF0aW9uRGVsZWdhdGUgYW5p
bWF0aW9uRGlkU3RvcDpmaW5pc2hlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQ29u
dGVudHNGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5
ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YmFj
a2luZ1N0b3JlQnl0ZXNQZXJQaXhlbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlQM0NvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd1BhdHRlcm5DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpwZWdVVEkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0dNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JD
b2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzaW1pbGFyRm9udCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhYmFzZTo6Zm9udEZvclBvc3RTY3JpcHROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnZh
cmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Omxvb2t1cEZhbGxiYWNrRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3Rl
bUZhbGxiYWNrRm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxh
c3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmlu
Z0NoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0Zm9ybUluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6dmFyaWFudENhcHNTdXBwb3J0c0NoYXJhY3RlckZv
clN5bnRoZXNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkZXRlcm1pbmVQaXRj
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29j
b2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0
aXZlRmFtaWx5Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNj
cmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FzY2FkZVRvTGFzdFJlc29ydEFuZFZhcmlhdGlvbnNGb250RGVzY3JpcHRvcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2VJT1N1cmZhY2UyRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6b3B0aW9uc0ZvckJpcGxhbmFyU3VyZmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpvcHRpb25zRm9yMzJCaXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlSUQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpjYXNjYWRlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgICgtW1dl
YkNvcmVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hSGVscGVyIG9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpjdlBpeGVs
Rm9ybWF0T3BlbkdMS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlcjo6Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXI6OnNldHVw
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyOjpyZXN0b3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVu
c0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBv
aW50TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbnRSZWN0TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bnRTaXplTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0lt
YWdlRXh0cmFzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1h
Z2VFeHRyYXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1t
OgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlNp
bXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
RVMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6
Om11bHRpcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RldmljZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0RldmljZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJ
T1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50SU9TOjptb3Rpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUzo6b3JpZW50YXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9FdmVudExvb3BJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVMYXllci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUxheWVyUG9vbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29s
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Mb3dQb3dlck1vZGVOb3RpZmllcklPUy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
Y3JlZW5JT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJT1MuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Ny
b2xsVmlld0lPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0
Q29udGVudHNTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1Mu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeUlPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
eXN0ZW1NZW1vcnlMZXZlbCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlTmFtZUZvclVz
ZXJBZ2VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZhbGlkYXRpb25CdWJibGVJT1MubW06
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
V2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZU1vdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KToKKyAg
ICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250
ZW50TGF5ZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2lkZ2V0SU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLQXBwS2l0
U3R1YnMubToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS0NsaXBWaWV3Lm06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dBS1Njcm9sbFZpZXcubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9X
QUtWaWV3Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV0tHcmFwaGljcy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3Mvd2FrL1dLVXRpbGl0aWVzLmM6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcu
bW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpydGZQYXN0
ZWJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpydGZkUGFzdGVib2FyZFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c3RyaW5nUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
dXJsUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aHRtbFBhc3RlYm9hcmRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGRmUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dGlmZlBhc3RlYm9h
cmRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1
dGVkU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVv
U291cmNlOjp+UmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZVZpZGVvU291cmNlOjpwcmVwYXJlVG9Qcm9kdWNlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW06
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZUlzQXZhaWxhYmxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKC1bV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWRkTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJlZmVy
c1ByZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpzZW5zb3JPcmllbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6bW9uaXRvck9yaWVudGF0aW9u
KToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWRkTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzXSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OjpjcmVhdGVBdWRpb1VuaXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb1No
YXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJl
U291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2U6On5Db3JlQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjp+
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1
ZmZlclBvb2wpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U6On5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluUmVzb3VyY2VIYW5k
bGVDb25zdHJ1Y3Rvck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsYmFja3NSdW5Mb29wKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Db29raWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3Bl
cmF0b3IgTlNIVFRQQ29va2llICogX051bGxhYmxlICBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZXNGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SFRUUENvb2tp
ZXNGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05l
dHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZU5TVVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJl
c291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6c3FsaXRlM0hh
bmRsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2Fj
dGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6c3RvcCk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xv
Y2FsaXplZERhdGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXpl
ZERhdGVDYWNoZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2lvcy9UZXh0RW5jb2RpbmdS
ZWdpc3RyeUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1
bWVudE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5
bGVGb3JNYXJrZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmNvbGxl
Y3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2Vycyk6CisgICAgICAgICogcmVuZGVyaW5nL01h
cmtlZFRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjphbGxvd01pbk1heFBlcmNlbnRhZ2VzSW5BdXRvSGVp
Z2h0QmxvY2tzUXVpcmspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVjb2RpbmdN
b2RlRm9ySW1hZ2VEcmF3IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0
eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmFsbG93c0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbldp
dGhEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhG
aWxlbmFtZVdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRD
b250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRB
cmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpjYW5Vc2VBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxUbyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpzaG93c092ZXJmbG93Q29udHJvbHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0
ZVByaW1hcnlHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2hvdWxkQ2xpcENvbXBvc2l0ZWRCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBhcmVudEdyYXBoaWNzTGF5ZXJSZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNJbnRv
V2luZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0
Q29udGVudHNOZWVkRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpc2libGVSZWN0
Rm9yTGF5ZXJGbHVzaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUN1c3RvbUxheWVyc0FmdGVyRmx1c2gpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRGbHVzaENoYW5nZXNGb3JM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNldElzSW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNBc3luY1Njcm9sbGFi
bGVTdGlja3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbnRlbnRzU2NhbGVNdWx0
aXBsaWVyRm9yTmV3VGlsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjplbnN1cmVSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpjb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OndpbGxSZW1vdmVTY3JvbGxp
bmdMYXllcldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91
bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFJlbmRl
ck1lbnVMaXN0Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6
c2V0VGV4dEZyb21PcHRpb24pOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmhpZGVQb3B1cCk6
CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6cG9wdXBEaWRIaWRlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvdWxkQXBwbHlDb21wb3Np
dGVkQ29udGFpbmVyU2Nyb2xsc0ZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2V0UmVu
ZGVyZWRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lOjpnZXRBdmVyYWdlQ2hhcldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6Z2V0QXZlcmFnZUNoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6YXJLaXRCdW5kbGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmF2YWlsYWJsZUxvZ2ljYWxIZWln
aHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y2xpZW50TG9naWNhbFdp
ZHRoRm9yRml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3
OjpjbGllbnRMb2dpY2FsSGVpZ2h0Rm9yRml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5o
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEN1cnJlbnRD
dXJzb3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNTZWxlY3RQb3B1cFZp
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRRdWlja0xvb2tQYXNzd29y
ZCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiBjb25zdCk6CisgICAgICAgICogdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRo
cmVhZCk6CisKIDIwMTgtMTAtMTggIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtJbnRlcnNlY3Rpb25PYnNlcnZlcl0gRmFjdG9yIG91dCByZWN0IG1hcHBpbmcgYW5k
IGNsaXBwaW5nIGxvZ2ljIGZyb20gY29tcHV0ZVJlY3RGb3JSZXBhaW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsMTAgKzEwNTgsMTAg
QEAgaWZlcSAoJChVU0VfTExWTV9UQVJHRVRfVFJJUExFU19GT1JfQ0xBTgogCVRBUkdFVF9UUklQ
TEVfRkxBR1M9LXRhcmdldCAkKFdLX0NVUlJFTlRfQVJDSCktJChMTFZNX1RBUkdFVF9UUklQTEVf
VkVORE9SKS0kKExMVk1fVEFSR0VUX1RSSVBMRV9PU19WRVJTSU9OKSQoTExWTV9UQVJHRVRfVFJJ
UExFX1NVRkZJWCkKIGVuZGlmCiAKLWlmZXEgKCQoc2hlbGwgJChDQykgLXN0ZD1nbnUrKzE0IC14
IGMrKyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFSR0VUX1RSSVBMRV9GTEFHUykgJChGUkFN
RVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiIC9k
ZXYvbnVsbCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9TICcgfCBjdXQgLWQnICcgLWYzKSwgMSkK
LSAgICBXVEZfUExBVEZPUk1fSU9TID0gMQoraWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsr
MTQgLXggYysrIC1FIC1QIC1kTSAkKFNES19GTEFHUykgJChUQVJHRVRfVFJJUExFX0ZMQUdTKSAk
KEZSQU1FV09SS19GTEFHUykgJChIRUFERVJfRkxBR1MpIC1pbmNsdWRlICJ3dGYvUGxhdGZvcm0u
aCIgL2Rldi9udWxsIHwgZ3JlcCAnIFdURl9QTEFURk9STV9JT1NfRkFNSUxZICcgfCBjdXQgLWQn
ICcgLWYzKSwgMSkKKyAgICBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSA9IDEKIGVsc2UKLSAgICBX
VEZfUExBVEZPUk1fSU9TID0gMAorICAgIFdURl9QTEFURk9STV9JT1NfRkFNSUxZID0gMAogZW5k
aWYKIAogaWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTQgLXggYysrIC1FIC1QIC1kTSAk
KFNES19GTEFHUykgJChUQVJHRVRfVFJJUExFX0ZMQUdTKSAkKEZSQU1FV09SS19GTEFHUykgJChI
RUFERVJfRkxBR1MpIC1pbmNsdWRlICJ3dGYvUGxhdGZvcm0uaCIgL2Rldi9udWxsIHwgZ3JlcCAn
IFdURl9QTEFURk9STV9NQUMgJyB8IGN1dCAtZCcgJyAtZjMpLCAxKQpAQCAtMTA4MCw4ICsxMDgw
LDggQEAgaWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTQgLXggYysrIAogICAgIEVOQUJM
RV9PUklFTlRBVElPTl9FVkVOVFMgPSAxCiBlbmRpZgogCi1pZmVxICgkKFdURl9QTEFURk9STV9J
T1MpLCAxKQotRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUyA9ICQoRkVBVFVSRV9ERUZJTkVT
KSBXVEZfUExBVEZPUk1fSU9TCitpZmVxICgkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSwgMSkK
K0ZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMgPSAkKEZFQVRVUkVfREVGSU5FUykgV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkKIGVsc2UgaWZlcSAoJChXVEZfUExBVEZPUk1fTUFDKSwgMSkKIEZF
QVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMgPSAkKEZFQVRVUkVfREVGSU5FUykgV1RGX1BMQVRG
T1JNX01BQwogZWxzZQpAQCAtMTEwNSw3ICsxMTA1LDcgQEAgaWZlcSAoJChmaW5kc3RyaW5nIEVO
QUJMRV9JT1NfR0VTVFVSRV9FVgogQURESVRJT05BTF9CSU5ESU5HX0lETFMgKz0gR2VzdHVyZUV2
ZW50LmlkbAogZW5kaWYKIAotaWZlcSAoJChXVEZfUExBVEZPUk1fSU9TKSwgMSkKK2lmZXEgKCQo
V1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpLCAxKQogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9JT1NfVE9VQ0hfRVZF
TlRTKQogQURESVRJT05BTF9CSU5ESU5HX0lETFMgKz0gXAogICAgIERvY3VtZW50VG91Y2guaWRs
IFwKQEAgLTExMzEsNyArMTEzMSw3IEBAICQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpIDogJSA6
IFdlYktpdEEKIAogZW5kaWYgIyBNQUNPUwogCi1pZm5lcSAoJChXVEZfUExBVEZPUk1fSU9TKSwg
MSkKK2lmbmVxICgkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSwgMSkKIEpTX0JJTkRJTkdfSURM
UyArPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvZG9tL1RvdWNoLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOCw3ICsxMzgsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZiAvLyBP
UyhXSU5ET1dTKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2Vu
ZGlmCiAKQEAgLTE0OSwxNCArMTQ5LDE0IEBACiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNlbHNlCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPENv
Y29hL0NvY29hLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaD4KICNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3Ry
aW5nICpzdWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gMTAxMjA0KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDQpCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwCiAgICAg
aWYgKCFbYWRkcmVzcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1YkxvY2FsaXR5KV0p
CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
c3ViTG9jYWxpdHkoQ05Qb3N0YWxBZGQKIAogc3RhdGljIHZvaWQgc2V0U3ViTG9jYWxpdHkoQ05N
dXRhYmxlUG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKnN1YkxvY2FsaXR5KQogewot
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01BWF9BTExPV0VEID49IDEwMTIwNCkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjA0KQog
I2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTMwMAogICAgIGlmICghW2FkZHJlc3MgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRT
dWJMb2NhbGl0eTopXSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
dm9pZCBzZXRTdWJMb2NhbGl0eShDTk11dGFibGVQb3N0CiAKIHN0YXRpYyBOU1N0cmluZyAqc3Vi
QWRtaW5pc3RyYXRpdmVBcmVhKENOUG9zdGFsQWRkcmVzcyAqYWRkcmVzcykKIHsKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxM
T1dFRCA+PSAxMDEyMDQpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTIwNCkKICNpZiBQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKICAg
ICBpZiAoIVthZGRyZXNzIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3ViQWRtaW5pc3Ry
YXRpdmVBcmVhKV0pCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqc3ViQWRtaW5pc3RyYXRpdmVBcmVhKEMKIAogc3RhdGljIHZvaWQgc2V0U3Vi
QWRtaW5pc3RyYXRpdmVBcmVhKENOTXV0YWJsZVBvc3RhbEFkZHJlc3MgKmFkZHJlc3MsIE5TU3Ry
aW5nICpzdWJBZG1pbmlzdHJhdGl2ZUFyZWEpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjA0KQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDQpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwCiAgICAgaWYgKCFbYWRkcmVzcyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFN1YkFkbWluaXN0cmF0aXZlQXJlYTopXSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29udGVu
dFR5cGUuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgs
NyArMzQ4LDcgQEAgc3RhdGljIGJvb2wgaXNSZXF1ZXN0RnJvbUlCb29rcygpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKTsKLSNlbGlm
IFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIElP
U0FwcGxpY2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBvc2l0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IE9CSkNfQ0xBU1MgQ0xMb2NhdGlvbjsKICNlbmRpZgogCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdh
dG9yR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMyArNTcsMTMgQEAgTmF2
aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aQogICAgIHJldHVybiBzdXBwbGVt
ZW50OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2
b2lkIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigp
CiB7CiAgICAgaWYgKG1fZ2VvbG9jYXRpb24pCiAgICAgICAgIG1fZ2VvbG9jYXRpb24tPnJlc2V0
QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JH
ZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb24oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0
b3JHZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24oTmF2aWdhdG9yJik7CiAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRp
b25JT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiR2VvbG9jYXRpb25Q
b3NpdGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CiAKQEAgLTU0LDQgKzU0LDQg
QEAgR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbgogCiB9CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NjQsNCArNDY0LDQgQEAgdm9pZCBX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1RpbQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgpAQCAtMTA5LDQg
KzEwOSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0
Ojpjb250ZXh0RGVzdHJveQogCiB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmZpbHRlckRldmlj
ZUxpc3QoVmVjdG9yPFJlZjxNZWRpYURldmljZUluZm8+PiYgZGV2aWNlcykKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgaW50
IGRlZmF1bHRDYW1lcmFDb3VudCA9IDI7CiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVm
YXVsdENhbWVyYUNvdW50ID0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChp
ZCwgSlNDb250ZXh0ICopOwogc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0
ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICosIEpTQ29udGV4dCAqKTsKICNlbmRpZgpA
QCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RF
dmUKICAgICBtX3BhcmVudEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBKU1ZhbHVl
ICpqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICpkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBKU0NvbnRleHQgKmNvbnRleHQpCiB7CkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGlj
IEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZQogCiBKU0M6OkpTVmFsdWUgSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQo
KTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgSlNDOjpKU1ZhbHVlIEpTUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbgogCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBIVE1MVmlkZW9FbGVt
ZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKQEAg
LTQxOSw3ICs0MTksNyBAQCBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
CiAKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplcnJvckxvZyhK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBl
ZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIo
KSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpcz4gU3Bl
ZWNoU3ludGhlc2lzOjpjcgogU3BlZWNoU3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoKQogICAg
IDogbV9jdXJyZW50U3BlZWNoVXR0ZXJhbmNlKG51bGxwdHIpCiAgICAgLCBtX2lzUGF1c2VkKGZh
bHNlKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwg
bV9yZXN0cmljdGlvbnMoUmVxdWlyZVVzZXJHZXN0dXJlRm9yU3BlZWNoU3RhcnRSZXN0cmljdGlv
bikKICNlbmRpZgogewpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpz
dGFydFNwZWFraW5nSW1tZWQKIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVhayhTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKIHsKICAgICAvLyBMaWtlIEF1ZGlvLCB3ZSBzaG91
bGQgcmVxdWlyZSB0aGF0IHRoZSB1c2VyIGludGVyYWN0IHRvIHN0YXJ0IGEgc3BlZWNoIHN5bnRo
ZXNpcyBzZXNzaW9uLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
CiAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9y
U3BlZWNoU3RhcnRSZXN0cmljdGlvbik7CiAgICAgZWxzZSBpZiAodXNlckdlc3R1cmVSZXF1aXJl
ZEZvclNwZWVjaFN0YXJ0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdm9pZCBm
aXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmLCB1bnNpZ25lZCBsb25nIGNoYXJJbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJlc3RyaWN0
aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCiAgICAgZW51bSBCZWhhdmlvclJlc3Ry
aWN0aW9uRmxhZ3MgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC04OSw3ICs4OSw3
IEBAIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX2N1cnJlbnRTcGVl
Y2hVdHRlcmFuY2U7CiAgICAgRGVxdWU8UmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4+IG1f
dXR0ZXJhbmNlUXVldWU7CiAgICAgYm9vbCBtX2lzUGF1c2VkOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVz
dHJpY3Rpb25zOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw3ICs4OCw3IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BCiAKICAgICBjb25zdCBpbnQgbWF4U3FsaXRl
QnVzeVdhaXRUaW1lID0gMzAwMDA7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhl
IGJhY2tncm91bmQgcmVtb3ZhbCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQg
YmVmb3JlIHRyeWluZyB0byBvcGVuIGFueSBkYXRhYmFzZS4KICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGll
bnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSkgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkTmV3T3JpZ2luKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlT3JpZ2luKCkgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKICNlbmRpZgogCkBAIC0xMTM2
LDcgKzExMzYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlCiAg
ICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IGRlbGV0ZWREYXRhYmFzZXMpCiAgICAgICAgIGRhdGFi
YXNlLT5tYXJrQXNEZWxldGVkQW5kQ2xvc2UoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChkZWxldGlvbk1vZGUgPT0gRGVsZXRpb25Nb2Rl
OjpEZWZlcnJlZCkgewogICAgICAgICAvLyBPdGhlciBiYWNrZ3JvdW5kIHByb2Nlc3NlcyBtYXkg
c3RpbGwgYmUgYWNjZXNzaW5nIHRoaXMgZGF0YWJhc2UuIERlbGV0aW5nIHRoZSBkYXRhYmFzZSBk
aXJlY3RseQogICAgICAgICAvLyB3b3VsZCBudWtlIHRoZSBQT1NJWCBmaWxlIGxvY2tzLCBwb3Rl
bnRpYWxseSBjYXVzaW5nIFNhZmFyaS9XZWJBcHAgdG8gY29ycnVwdCB0aGUgbmV3IGRiIGlmIGl0
J3MgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZC4KQEAgLTExNTUsNyArMTE1NSw3IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICByZXR1cm4gU1FMaXRlRmls
ZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGZ1bGxQYXRoKTsKIH0KICAgICAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCkBAIC0xNDAsNyAr
MTQwLDcgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgRGVsZXRpb25Nb2RlIHsKICAgICAg
ICAgSW1tZWRpYXRlLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICAvLyBEZWZlcnJlZCBkZWxldGlvbiBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0
ZWQgb24gaU9TCiAgICAgICAgIC8vIChzZWUgcmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyBl
dGMsIGFib3ZlKS4KICAgICAgICAgRGVmZXJyZWQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxOC0xMC0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggZnJvbSBQTEFURk9STShJT1MpIHRvIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTA3MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tOgorICAgICAgICAqIHBhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5o
OgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2Nv
YS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvSU9TdXJm
YWNlU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oOgor
ICAgICAgICAqIHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaDoKKyAgICAgICAgKiBw
YWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkv
Y29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNz
S2l0U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAg
ICAgICogcGFsL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJLmg6CisgICAgICAgICogcGFsL3Nw
aS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvaW9zL01lZGlh
UGxheWVyU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oOgor
ICAgICAgICAqIHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oOgorICAgICAgICAqIHBhbC9z
eXN0ZW0vbWFjL0Nsb2NrQ00ubW06CisgICAgICAgIChDbG9ja0NNOjpDbG9ja0NNKToKKwogMjAx
OC0xMC0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbmFibGUgdGhlIGRhdGFsaXN0IGVsZW1lbnQgYnkgZGVmYXVsdCBvbiBpT1MgYW5kIG1hY09T
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMzAwMDApIHx8IChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTQwMCkKKyNpZiAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8
IDEzMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExP
V0VEIDwgMTAxNDAwKQogI2RlZmluZSBDTVNBTVBMRUJVRkZFUkNBTExfTk9FU0NBUEUKICNlbHNl
CiAjZGVmaW5lIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBDRl9OT0VTQ0FQRQpAQCAtMTYw
LDIxICsxNjAsMjEgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRI
b3N0VGltZUNsb2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNs
b2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkKIAotI2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFDKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwKQor
I2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFD
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMCkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxl
LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExF
QlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1
ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChz
YnVmLCBjYWxsYmFjaywgcmVmY29uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxCbG9ja0ZvckVhY2hTYW1wbGUsIE9TU3Rh
dHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKF4gQ01TQU1QTEVCVUZGRVJD
QUxMX05PRVNDQVBFIGhhbmRsZXIpKENNU2FtcGxlQnVmZmVyUmVmLCBDTUl0ZW1Db3VudCkpLCAo
c2J1ZiwgaGFuZGxlcikpCiAjZW5kaWYKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Nsb2NrQ3JlYXRlLCBPU1N0
YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01DbG9ja1JlZiAqY2xvY2tPdXQpLCAo
YWxsb2NhdG9yLCBjbG9ja091dCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwgQ01UaW1lTWF4aW11bSwgQ01UaW1lLCAoQ01UaW1lIHRpbWUxLCBDTVRpbWUg
dGltZTIpLCAodGltZTEsIHRpbWUyKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTVRpbWVNaW5pbXVtLCBDTVRpbWUsIChDTVRpbWUgdGltZTEsIENNVGlt
ZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlQ29udGFpbnNUaW1lLCBCb29sZWFuLCAoQ01UaW1l
UmFuZ2UgcmFuZ2UsIENNVGltZSB0aW1lKSwgKHJhbmdlLCB0aW1lKSkKIAogU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRp
bWUpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgZGV2aWNlVUlELCBDTUNsb2NrUmVmICpj
bG9ja091dCksIChhbGxvY2F0b3IsIGRldmljZVVJRCwgY2xvY2tPdXQpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjZGVmaW5lIFNPRlRMSU5LX0FWS0lUX0ZS
QU1FV09SSygpIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZLaXQpCiAjZW5kaWYKIAot
I2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAx
MzAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dF
RCA8IDEwMTQwMCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxNDAwKQogI2RlZmluZSBDTVNBTVBMRUJVRkZFUkNB
TExfTk9FU0NBUEUKICNlbHNlCiAjZGVmaW5lIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBD
Rl9OT0VTQ0FQRQpAQCAtMjcwLDcgKzI3MCw3IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU0KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUNsb2NrR2V0VGltZSwgQ01UaW1lLCAoQ01DbG9ja1JlZiBjbG9jayksIChjbG9jaykp
CiAjZGVmaW5lIENNQ2xvY2tHZXRUaW1lICBzb2Z0TGlua19Db3JlTWVkaWFfQ01DbG9ja0dldFRp
bWUKIAotI2lmIFBMQVRGT1JNKEFQUExFVFYpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TTUFDKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwKQorI2lmIFBMQVRGT1JNKEFQUExFVFYp
IHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TTUFDKSB8fCBQTEFURk9STShXQVRDSE9T
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxM
T1dFRCA8IDEyMDAwMCkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1w
bGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBF
IGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBp
bmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZj
b24pKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlCkBAIC0yODEsNyArMjgxLDcg
QEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
QXVkaW9DbG9ja0NyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENN
Q2xvY2tSZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgY2xvY2tPdXQpKQogI2RlZmluZSBDTUF1
ZGlvQ2xvY2tDcmVhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9DbG9ja0NyZWF0ZQpAQCAt
Mjk1LDcgKzI5NSw3IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU0K
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lSW5k
ZWZpbml0ZSwgQ01UaW1lKQogI2RlZmluZSBrQ01UaW1lSW5kZWZpbml0ZSBnZXRfQ29yZU1lZGlh
X2tDTVRpbWVJbmRlZmluaXRlKCkKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oTUFDKQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlL
aXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpJbmRleDogU291cmNlL1dlYkNv
cmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIC8vIFRoZSBTUEkgaGVhZGVyIHNob3VsZCBkZWZpbmUg
d2hpY2ggQ0ZOZXR3b3JrIGZlYXR1cmVzICpleGlzdCogaW4gdGhlIHVuZGVybHlpbmcgc3lzdGVt
LCBidXQgbm90CiAvLyBwb2xpY3kgYWJvdXQgd2hhdCBXZWJLaXQgc2hvdWxkIGRvLiBBY2NvcmRp
bmdseSwgd2Ugc2hvdWxkIG1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBvciByZW5hbWUgaXQKIC8v
IHRvIGJlIGFib3V0IENGTmV0d29yayBjYXBhYmlsaXRpZXMgKEhBVkUpIHJhdGhlciB0aGFuIGFi
b3V0IFdlYktpdCBwb2xpY3kgKFVTRSkuCi0jaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9f
V0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNDAyMDApIHx8IChQTEFURk9STShUVk9T
KSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkpCisjaWYgKChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDIgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAyMDAp
IHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDQwMjAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAyMDApKQogI2RlZmluZSBVU0VfQ0ZORVRXT1JLX0lHTk9SRV9IU1RTIDEKICNl
bmRpZgogCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBO
U1VSTFNlc3Npb25DCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqX3NvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkp
IE5TU3RyaW5nICpfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogQHByb3Bl
cnR5IEJPT0wgX3Nob3VsZFNraXBQcmVmZXJyZWRDbGllbnRDZXJ0aWZpY2F0ZUxvb2t1cCBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqX0NURGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZTsKICNlbmRpZgotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCiBAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1NldCAqX3N1cHByZXNz
ZWRBdXRvQWRkZWRIVFRQSGVhZGVyczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBVENIT1MpICYm
IF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSA2MDAwMApAQCAtMTkyLDEyICsxOTIs
MTIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNVUkxTZXNzaW9uQwogQHByb3BlcnR5
IChjb3B5KSBOU1N0cmluZyAqX3N0b3JhZ2VQYXJ0aXRpb25JZGVudGlmaWVyOwogQHByb3BlcnR5
IChudWxsYWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CiBA
cHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBfaXNUb3BMZXZlbE5hdmlnYXRpb247Ci0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBh
c3NpZ24pIEJPT0wgX3ByZWNvbm5lY3Q7CiAjZW5kaWYKIEBlbmQKIAotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiBAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2tUcmFu
c2FjdGlvbk1ldHJpY3MgKCkKIEBwcm9wZXJ0eSAoY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nKiBf
cmVtb3RlQWRkcmVzc0FuZFBvcnQ7CiBAcHJvcGVydHkgKGNvcHksIHJlYWRvbmx5KSBOU1VVSUQq
IF9jb25uZWN0aW9uSWRlbnRpZmllcjsKQEAgLTM1OCw3ICszNTgsNyBAQCBXVEZfRVhURVJOX0Nf
RU5ECiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAoKQotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgb25jZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBhIGJ1aWxkLgogQHByb3BlcnR5
IChjb3B5KSBOU0RpY3Rpb25hcnkgKl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJ
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPEFWS2l0L0FWS2l0Lmg+CiAjaW1wb3J0
IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0x
NjgsOSArMTY4LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Qwog
TlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKQEAgLTIwMCw3ICsyMDAs
NyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9DRk5TVVJMQ29ubmVjdGlvblNQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NGTlNV
UkxDb25uZWN0aW9uU1BJLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0NGTlNVUkxDb25uZWN0aW9uU1BJLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNlbHNlCiAKIEBpbnRlcmZhY2UgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAoKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
KyhOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVu
Z2Ugc2VuZGVyOihpZCA8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4pc2VuZGVy
OwogI2Vsc2UKICsoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKV9hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNmQ2hh
bGxlbmdlIHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+KXNl
bmRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQ29yZVRl
eHRTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvQ29yZVRleHRTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB0eXBl
ZGVmIENGX09QVElPTlMoQ0ZPcHRpb25GbGFncywgQ1RGb250CiAgICAga0NURm9udEZhbGxiYWNr
T3B0aW9uRGVmYXVsdCA9IGtDVEZvbnRGYWxsYmFja09wdGlvblN5c3RlbSB8IGtDVEZvbnRGYWxs
YmFja09wdGlvblVzZXJJbnN0YWxsZWQsCiB9OwogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDE0MDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEyMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwMTQwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEyMDAwMCkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVyT3B0
aW9uQWxsb3dVbmJvdW5kZWRMYXlvdXQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRh
RGV0ZWN0b3JzQ29yZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX19ERFJlc3VsdCAqRERSZXN1bHRSZWY7CiAjaW1wb3J0IDxEYXRhRGV0ZWN0
b3JzQ29yZS9ERFNjYW5uZXJSZXN1bHQuaD4KICNpbXBvcnQgPERhdGFEZXRlY3RvcnNDb3JlL0Rh
dGFEZXRlY3RvcnNDb3JlLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPERhdGFEZXRlY3RvcnNDb3JlL0RET3B0aW9uYWxTb3VyY2UuaD4K
ICNpbXBvcnQgPERhdGFEZXRlY3RvcnNDb3JlL0REVVJMaWZpZXIuaD4KLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2Vsc2UgLy8gIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0lPU3VyZmFjZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNl
UmVmOwogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDExMDAwMAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwCiBlbnVtIHsKICAgICBrSU9TdXJmYWNlTG9ja1Jl
YWRPbmx5ICA9IDB4MDAwMDAwMDEsCiB9OwpAQCAtOTIsNyArOTIsNyBAQCBXVEZfRVhURVJOX0Nf
RU5ECiAKICNlbHNlCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwMCkKIAog
I2ltcG9ydCA8SU9TdXJmYWNlL0lPU3VyZmFjZVR5cGVzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTGF1bmNo
U2VydmljZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaWYgUExB
VEZPUk0oTUFDKQogI2ltcG9ydCA8TGF1bmNoU2VydmljZXMvTGF1bmNoU2VydmljZXNQcml2Lmg+
Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCA8TW9iaWxlQ29yZVNlcnZpY2VzL0xTQXBwTGlua1ByaXYuaD4KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05FRmlsdGVyU291cmNl
U1BJLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05FRmlsdGVyU291cmNlU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
dHlwZWRlZiB2b2lkICheTkVGaWx0ZXJTb3VyY2VEZWNpc2lvbkhhbgogLSAodm9pZClyZWNlaXZl
ZERhdGE6KE5TRGF0YSAqKWRhdGEgZGVjaXNpb25IYW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lz
aW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7CiAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhE
ZWNpc2lvbkhhbmRsZXI6KE5FRmlsdGVyU291cmNlRGVjaXNpb25IYW5kbGVyKWRlY2lzaW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVtZWRpYXRlV2l0aERlY2lzaW9uSGFuZGxlcjooTkVGaWx0ZXJTb3Vy
Y2VEZWNpc2lvbkhhbmRsZXIpZGVjaXNpb25IYW5kbGVyOwotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzb3VyY2VBcHBJ
ZGVudGlmaWVyOwogQHByb3BlcnR5IChhc3NpZ24pIHBpZF90IHNvdXJjZUFwcFBpZDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3Ry
aW5nU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
TlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJ
S2l0L05TQXR0cmlidXRlZFN0cmluZy5oPgogCkBAIC0xMDUsOSArMTA1LDkgQEAgc3RhdGljIE5T
U3RyaW5nICpjb25zdCBOU1N1cGVyc2NyaXB0QXR0cgogLSAoQk9PTCljb250YWluc0F0dGFjaG1l
bnRzOwogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTMwMCkKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPCAxMDEzMDApCiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJDaXJj
bGUgPSBAIntjaXJjbGV9IjsKIHN0YXRpYyBOU1N0cmluZyAqY29uc3QgTlNUZXh0TGlzdE1hcmtl
ckRpc2MgPSBAIntkaXNjfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJr
ZXJTcXVhcmUgPSBAIntzcXVhcmV9IjsKQEAgLTEyMSw0ICsxMjEsNCBAQCBzdGF0aWMgTlNTdHJp
bmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJVCiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4
dExpc3RNYXJrZXJMb3dlcmNhc2VSb21hbiA9IEAie2xvd2VyLXJvbWFufSI7CiBzdGF0aWMgTlNT
dHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJVcHBlcmNhc2VSb21hbiA9IEAie3VwcGVyLXJv
bWFufSI7CiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IE5TVGV4dExpc3RNYXJrZXJEZWNpbWFsID0g
QCJ7ZGVjaW1hbH0iOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxMzAwKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA8IDEwMTMwMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEku
aAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2RlZmluZSBVU0VfU0VDVVJFX0FS
Q0hJVkVSX0FQSSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExP
V0VEID49IDEwMTMwMiAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMjAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSA0MDIwMCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAwKSkKKyNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9B
UEkgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAx
MDEzMDIgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAyMDApIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDQwMjAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19UVl9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAyMDApKQogCi0jZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJf
Rk9SX0FUVFJJQlVURURfU1RSSU5HICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTAxMzAyICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDYwMDAwKSB8fCAoUExBVEZPUk0oVFZPUykgJiYgX19U
Vl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApKQorI2RlZmluZSBVU0VfU0VDVVJF
X0FSQ0hJVkVSX0ZPUl9BVFRSSUJVVEVEX1NUUklORyAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwMiAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgKFBMQVRGT1JNKFdBVENI
T1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNjAwMDApIHx8IChQTEFU
Rk9STShUVk9TKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkpCiAK
ICNpZiBVU0UoU0VDVVJFX0FSQ0hJVkVSX0FQSSkKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEku
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UGFzc0tpdFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNlbHNlCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8
UGFzc0tpdC9QYXNzS2l0Lmg+CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJy
b3IgKikpc2Vzc2lvbkJsb2NrOwogQGVuZAogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwNCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMwNCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
MTEwMzAwKQogdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFBLUGF5bWVudFJlcXVlc3RBUElU
eXBlKSB7CiAgICAgUEtQYXltZW50UmVxdWVzdEFQSVR5cGVJbkFwcCA9IDAsCiAgICAgUEtQYXlt
ZW50UmVxdWVzdEFQSVR5cGVXZWJKUywKQEAgLTI3Niw3ICsyNzYsNyBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0CiAgICAgUEtQYXltZW50QnV0dG9uVHlwZVNldFVw
LAogICAgIFBLUGF5bWVudEJ1dHRvblR5cGVJblN0b3JlLAogICAgIFBLUGF5bWVudEJ1dHRvblR5
cGVEb25hdGUsCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTIwMDAwKQogICAgIFBLUGF5
bWVudEJ1dHRvblR5cGVDaGVja291dCwKICAgICBQS1BheW1lbnRCdXR0b25UeXBlQm9vaywKICAg
ICBQS1BheW1lbnRCdXR0b25UeXBlU3Vic2NyaWJlLApJbmRleDogU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdHlwZWRlZiBlbnVtIHsKIEBpbnRlcmZhY2Ug
Q0FUcmFuc2FjdGlvbiAoKQogKyAodm9pZClhZGRDb21taXRIYW5kbGVyOih2b2lkKF4pKHZvaWQp
KWJsb2NrIGZvclBoYXNlOihDQVRyYW5zYWN0aW9uUGhhc2UpcGhhc2U7CiAKLSNpZiBQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMAogKyAoQ0FUcmFuc2FjdGlvblBoYXNlKWN1cnJlbnRQaGFzZTsKICNlbmRpZgog
CkBAIC0yMzcsNyArMjM3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dERp
c3BsYQogZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0Owog
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dFBvcnROdW1iZXI7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGV4dGVybiBOU1N0cmluZyAqIGNv
bnN0IGtDQUNvbnRlbnRzRm9ybWF0UkdCQTEwWFI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL0RhdGFEZXRl
Y3RvcnNVSVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShE
QVRBX0RFVEVDVElPTikKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL0dyYXBo
aWNzU2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVk
aWFQbGF5ZXJTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9p
b3MvTWVkaWFQbGF5ZXJTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvaW9zL01lZGlhUGxheWVyU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2ltcG9ydCA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgpAQCAtMTAzLDQgKzEwMyw0IEBAIE5TX0FT
U1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
X1ByaXZhdGUuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKQogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJW
aWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTdHJl
YW1EYXRhUGFyc2VyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uX1ByaXZh
dGUuaD4KICNlbmRpZgogCkBAIC01NCwxNiArNTQsMTYgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyLmg+
CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9B
TExPV0VEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAwMDApCiBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogQGludGVyZmFjZSBBVlBsYXllckl0ZW0gKCkKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNUaW1lSW50ZXJ2YWwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVk
VGltZSBOU19BVkFJTEFCTEUoMTBfMTMsIDExXzApOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU1RpbWVJbnRlcnZhbCBsaXZlVXBkYXRlSW50ZXJ2YWw7CiBAZW5kCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKLSNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAx
MTAwMDApCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSB8fCBQTEFURk9S
TShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgfHwgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtNzcsNyArNzcsNyBA
QCBAaW50ZXJmYWNlIEFWT3V0cHV0Q29udGV4dCA6IE5TT2JqZWN0IDxOCiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBOU0FycmF5PEFWT3V0cHV0RGV2aWNlICo+ICpvdXRwdXREZXZpY2VzOwogQGVuZAog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZh
Y2UgQVZQbGF5ZXIgKEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1N1cHBvcnRQcml2YXRlKQogQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0
OwogQGVuZApAQCAtOTUsNyArOTUsNyBAQCBAaW50ZXJmYWNlIEFWUGxheWVyIChBVlBsYXllckV4
dGVybmFsUGxhCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgfHwgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Q2FjaGUuaD4KIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCkBAIC0xMDksMTQgKzEwOSwxNCBAQCBAaW50ZXJmYWNlIEFWQXNzZXRDYWNoZSAoKQogQGVu
ZAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKIEBpbnRlcmZhY2UgQVZQbGF5ZXIgKEFWUGxheWVyVmlkZW9T
bGVlcFByZXZlbnRpb24pCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9wcmV2ZW50c1Ns
ZWVwRHVyaW5nVmlkZW9QbGF5YmFjaywgc2V0dGVyPV9zZXRQcmV2ZW50c1NsZWVwRHVyaW5nVmlk
ZW9QbGF5YmFjazopIEJPT0wgcHJldmVudHNTbGVlcER1cmluZ1ZpZGVvUGxheWJhY2s7CiBAZW5k
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTdHJlYW1EYXRhUGFyc2VyCkBAIC0x
NTYsNyArMTU2LDcgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKCkgPEFWQ29udAog
QGVuZAogI2VuZGlmCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIApA
QCAtMTY4LDE0ICsxNjgsMTQgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKEFWU3Ry
ZWFtRAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykg
JiYgKCFIQVZFKEFWS0lUKSB8fCAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgKCFIQVZFKEFWS0lUKSB8fCAhVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXllci5oPgogQGludGVyZmFjZSBB
VlBsYXllckxheWVyIChBVlBsYXllckxheWVyUGljdHVyZUluUGljdHVyZU1vZGVTdXBwb3J0UHJp
dmF0ZSkKIC0gKHZvaWQpc2V0UElQTW9kZUVuYWJsZWQ6KEJPT0wpZmxhZzsKIEBlbmQKICNlbmRp
ZiAvLyAhSEFWRShBVktJVCkKIAotI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE0MDQpIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAy
MDApCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTQwNCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAyMDApCiBAY2xh
c3MgQVZWaWRlb1BlcmZvcm1hbmNlTWV0cmljczsKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBA
aW50ZXJmYWNlIEFWUGxheWVyTGF5ZXIgKEFWUGxheWVyTGF5ZXJWaWRlb1BlcmZvcm1hbmNlTWV0
cmljcykKQEAgLTIzNSw3ICsyMzUsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlm
IC8vIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNo
cm9uaXplci5oPikKIAotI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPCAxMTAwMDApKSAmJiBfX2hhc19pbmNsdWRlKDxBVkZvdW5kYXRp
b24vQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmcuaD4pCisjaWYgKChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTMwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMTAwMDAp
KSAmJiBfX2hhc19pbmNsdWRlKDxBVkZvdW5kYXRpb24vQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5k
ZXJpbmcuaD4pCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5k
ZXJpbmcuaD4KIEBjbGFzcyBBVlZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzOwogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KQEAgLTI3Myw3ICsyNzMsNyBAQCBAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIDogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNlbmRpZiAvLyBfX2hhc19p
bmNsdWRlKDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4pCiAKLSNp
ZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAx
MzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTEwMDAwKSkgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWUXVldWVkU2FtcGxl
QnVmZmVyUmVuZGVyaW5nLmg+KQorI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTEwMDAwKSkgJiYgX19oYXNfaW5jbHVk
ZSg8QVZGb3VuZGF0aW9uL0FWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nLmg+KQogLy8gTm90
aGluZyB0byBkbywgQVZmb3VuZGF0aW9uL0FWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nLmgg
d2FzIGltcG9ydGVkIGFib3ZlLgogI2VsaWYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlci5oPikKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNh
bXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIuaD4KQEAgLTMxMiw3ICszMTIsNyBAQCBAaW50ZXJmYWNl
IEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MgKEFWCiBAZW5kCiAjZW5kaWYKIAotI2lmICFVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKSAmJiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFU
T1IpICYmICFQTEFURk9STShJT1NNQUMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nl
c3Npb24uaD4KIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBDbG9ja0NNOjpDbG9ja0NNKCkKICAgICAsIG1fcnVubmluZyhm
YWxzZSkKIHsKICAgICBDTUNsb2NrUmVmIHJhd0Nsb2NrUHRyID0gMDsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDTUF1ZGlvQ2xvY2tDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgJnJhd0Nsb2NrUHRyKTsKICNlbHNlCiAgICAgQ01BdWRpb0Rldmlj
ZUNsb2NrQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsICZyYXdDbG9ja1B0cik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgUmVm
PEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZyCiAgICAgaWYgKG5vZGUgJiYgaXM8SFRNTExh
YmVsRWxlbWVudD4obm9kZSkgJiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCiAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNyZWF0ZShyZW5kZXJlcik7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXM8SFRNTE1l
ZGlhRWxlbWVudD4obm9kZSkgJiYgbm9kZUhhc1JvbGUobm9kZSwgbnVsbEF0b20oKSkpCiAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
ZGlhT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5TWVkaWFPYmplY3QuaCIKIAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
QEAgLTE4OCw0ICsxODgsNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdDo6ZW50ZXJG
dWxsCiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogCkBAIC02OCw0ICs2
OCw0IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQUNDRVNTSUJJTElUWShBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QsIGlzTWVkaWFP
YmplY3QoKSkKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQCBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0PiBBY2Nlc3Np
YmlsaXR5CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpwcmVzcygpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZW5kZXJNZW51TGlz
dCogbWVudUxpc3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJNZW51TGlzdCo+KHJlbmRlcmVyKCkpOwog
ICAgIGlmIChtZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKSkKICAgICAgICAgbWVudUxpc3QtPmhp
ZGVQb3B1cCgpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6
Y2hpbGRyZW5DaGFuCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojppc0NvbGxhcHNlZCgp
IGNvbnN0CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICByZXR1cm4gIXN0YXRpY19jYXN0PFJlbmRlck1lbnVMaXN0Kj4ocmVuZGVyZXIoKSktPnBv
cHVwSXNWaXNpYmxlKCk7CiAjZWxzZQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdAogICAgICAgICAKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxpbms6IHsKICAgICAgICAgYm9vbCBpc0xpbmsgPSBheE9i
amVjdC0+aXNMaW5rKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIGlmICghaXNMaW5rKQogICAgICAgICAgICAgaXNMaW5rID0gYXhPYmplY3Qt
PmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmspOwogI2Vu
ZGlmCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNz
KCkKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgZG9jdW1lbnQpOwogICAgIAogICAgIGJvb2wgZGlzcGF0Y2hlZFRvdWNoRXZl
bnQgPSBmYWxzZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoaGFzVG91Y2hFdmVudExpc3RlbmVyKCkpCiAgICAgICAgIGRpc3BhdGNoZWRUb3Vj
aEV2ZW50ID0gZGlzcGF0Y2hUb3VjaEV2ZW50KCk7CiAjZW5kaWYKQEAgLTE5NTUsNyArMTk1NSw3
IEBAIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWwKICNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFkpCiBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZl
cmIoKSBjb25zdAogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRkIHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMu
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYnV0dG9uQWN0aW9uKEFY
QnV0dG9uQWN0aW9uVmVyYigpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiB0ZXh0RmllbGRBY3Rpb24oQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBwdWJs
aWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZv
cm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmll
bGRMZW5ndGgoKTsKICAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwogICAg
IGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0OwpAQCAtMTEzNiw3ICsxMTM2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChi
b29sKTsKICNlbmRpZgogICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29s
IGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5n
RW5hYmxlZChib29sKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNyArNzY2LDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc1RleHRDb250cm9s
KCkpCiAgICAgICAgIHJldHVybiB0ZXh0KCk7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSkK
ICAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKICNlbmRpZgpAQCAtMjcxNCw3ICsy
NzE0LDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgICAg
ICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uUm9s
ZVR5cGUoKTsKICAgICAgICAgLy8gT24gaU9TLCB0aGUgZGF0ZSBmaWVsZCBhbmQgdGltZSBmaWVs
ZCBhcmUgcG9wdXAgYnV0dG9ucy4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXkgYXJlIHRleHQgZmll
bGRzLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBpZiAoaW5wdXQuaXNEYXRlRmllbGQoKSB8fCBpbnB1dC5pc1RpbWVGaWVsZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICNlbmRpZgpAQCAt
MzQ5MCw3ICszNDkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGls
ZAogICAgIAogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25W
ZXJiKCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRz
LgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGJ1dHRvbkFjdGlvbihB
WEJ1dHRvbkFjdGlvblZlcmIoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gdGV4dEZpZWxkQWN0aW9uKEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc2LDcgKzE3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWMK
ICAgICBpZiAoIW1fcGFyZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQ
TEFURk9STShHVEspCiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZUhlYWRlckNvbnRhaW5lcjo6CiAgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2Fj
aGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QVhPYmplY3RDYWNoZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hl
LmgiCiAKLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZF
KEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLmgiCkBAIC0xMzgsNCArMTM4LDQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3Jv
bGxlZFRvQW5jaAogICAgIAogfQogCi0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNz
aWJpbGl0eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAotI2lmIEhBVkUoQUNDRVNTSUJJTElU
WSkgJiYgUExBVEZPUk0oSU9TKQorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2lt
cG9ydCAiRXZlbnROYW1lcy5oIgpAQCAtOTYsNCArOTYsNCBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzSW5wdXRUeXBlUG9wCiAKIH0gLy8gV2ViQ29yZQogCi0jZW5kaWYgLy8gSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShBQ0NF
U1NJQklMSVRZKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCiAjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCkBAIC03MSw0ICs3MSw0IEBACiAKIEBlbmQKIAotI2Vu
ZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEhB
VkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIgogCi0jaWYg
SEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QXR0
YWNobWVudC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmgiCkBAIC0zMjQ0
LDQgKzMyNDQsNCBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAKIEBlbmQKIAotI2VuZGlm
IC8vIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEhBVkUo
QUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNlbmRpZgogCkBAIC01
OCw3ICs1OCw3IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAKICAgICB2bS5oZWFwLmFjcXVp
cmVBY2Nlc3MoKTsgLy8gQXQgYW55IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3Qg
dGhlIEdDLgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdm0uc2V0UnVuTG9vcChXZWJUaHJlYWRSdW5Mb29wKCkpOwogICAgIHZtLmhlYXAubWFjaGlu
ZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgfkpTQ2FsbGJhY2tEYXRh
KCkKICAgICB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAj
ZW5kaWYKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCiAjZW5kaWYKIApAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgSlNE
T01XaW5kb3dCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3IKICAgICBpZiAoc2hvdWxkSW50ZXJydXB0
U2NyaXB0VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25XaGVuQ2xvc2luZ1BhZ2UocGFnZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmlzU3RvcHBpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQsNyArNzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKQogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtCiAgICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBmaWVsZE5hbWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmco
TlVMTCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwogICAgIGlkIHRh
cmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSkpLT5nZXRP
YmplY3QoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQogICAgIGlkIGF0
dHJpYnV0ZXMgPSBbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYXR0
cmlidXRlS2V5cyldID8gW3RhcmdldE9iamVjdCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGF0
dHJpYnV0ZUtleXMpXSA6IG5pbDsKICAgICBJR05PUkVfV0FSTklOR1NfRU5ECkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NvbW1vbkNyeXB0b1V0aWxpdGllcy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQogI2RlZmluZSBIQVZFX0NDUlNBR2V0
Q1JUQ29tcG9uZW50cyAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKQorI2lm
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTMwMCkKIGlubGluZSB1aW50OF90KiBjYXN0RGF0YUFyZ3VtZW50VG9DQ1JT
QUNyeXB0b3JDcmVhdGVGcm9tRGF0YUlmTmVlZGVkKGNvbnN0IHVpbnQ4X3QqIHZhbHVlKQogewog
ICAgIHJldHVybiBjb25zdF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2Rl
ZmluZSBVU0VfS0VZQ0hBSU5fQUNDRVNTX0NPTlRST0xfTElTVFMgMAogI2Vsc2UKICNkZWZpbmUg
VVNFX0tFWUNIQUlOX0FDQ0VTU19DT05UUk9MX0xJU1RTIDEKQEAgLTY5LDcgKzY5LDcgQEAgaW5s
aW5lIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tTlNEYXRhKAogCiBzdGF0aWMgTlNTdHJpbmcq
IG1hc3RlcktleUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKCkKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1N0cmluZyAqYnVuZGxl
SWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAj
ZWxzZQogICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW1tOU1J1bm5pbmdBcHBsaWNh
dGlvbiBjdXJyZW50QXBwbGljYXRpb25dIGJ1bmRsZUlkZW50aWZpZXJdOwpAQCAtODcsNyArODcs
NyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVBbmRTdG9yZU1hc3RlcktleShWZWN0CiAgICAgaW50IHJj
ID0gQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgbWFzdGVyS2V5RGF0YS5kYXRh
KCksIG1hc3RlcktleURhdGEuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChyYyA9PSBrQ0NT
dWNjZXNzKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TQnVuZGxlICptYWluQnVuZGxlID0gW05TQnVuZGxlIG1haW5CdW5kbGVdOwogICAgIE5T
U3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbbWFpbkJ1bmRsZSBvYmplY3RGb3JJbmZvRGljdGlv
bmFyeUtleTpAIkNGQnVuZGxlRGlzcGxheU5hbWUiXTsKICAgICBpZiAoIWFwcGxpY2F0aW9uTmFt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDcgKzM4
Niw3IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGUKICAgICBDU1NQ
cm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xv
ckFkanVzdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENTU1Byb3BlcnR5V2Via2l0VG91
Y2hDYWxsb3V0LAogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTM3MDcsNyAr
MzcwNyw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50b3VjaEFjdGlvbigpKTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VG91Y2hDYWxsb3V0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUudG91Y2hDYWxsb3V0RW5hYmxlZCgpID8gQ1NT
VmFsdWVEZWZhdWx0IDogQ1NTVmFsdWVOb25lKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydGllcy5qc29uCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC02NjM1LDcgKzY2MzUs
NyBAQAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAg
ICAibmFtZS1mb3ItbWV0aG9kcyI6ICJUb3VjaENhbGxvdXRFbmFibGVkIiwKICAgICAgICAgICAg
ICAgICAiY29udmVydGVyIjogIlRvdWNoQ2FsbG91dCIsCi0gICAgICAgICAgICAgICAgImVuYWJs
ZS1pZiI6ICJXVEZfUExBVEZPUk1fSU9TIgorICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAi
V1RGX1BMQVRGT1JNX0lPU19GQU1JTFkiCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInN0
YXR1cyI6ICJub24tc3RhbmRhcmQiCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NSw3ICsyMzUsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIHBhcnNlSmF2YVNjcmlwdENTCiAg
ICAgKmJ1ZmZlclB0ciA9ICdcMCc7CiAKICAgICB1bnNpZ25lZCBvdXRwdXRMZW5ndGggPSBidWZm
ZXJQdHIgLSBidWZmZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoYnVmZmVyLCBuYW1lLCBvdXRwdXRM
ZW5ndGgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzbWFsbC1jYXB0aW9uCiAt
d2Via2l0LXNtYWxsLWNvbnRyb2wKIC13ZWJraXQtY29udHJvbAogCi0jaWYgZGVmaW5lZChXVEZf
UExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExBVEZP
Uk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKIC1hcHBsZS1zeXN0ZW0t
aGVhZGxpbmUKIC1hcHBsZS1zeXN0ZW0tYm9keQogLWFwcGxlLXN5c3RlbS1zdWJoZWFkbGluZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGljIGJvb2wgcHJlZmVyc1Jl
ZHVjZWRNb3Rpb25FdmFsdWF0ZQogICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxp
dHlWYWx1ZTo6T2ZmOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldHRpbmdzOjpGb3JjZWRB
Y2Nlc3NpYmlsaXR5VmFsdWU6OlN5c3RlbToKLSNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9S
TShJT1MpCisjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVm
ZXJzUmVkdWNlZE1vdGlvbigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFycXVlZUluY3Jl
bWVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKQEAgLTEyNTUsNyArMTI1NSw3IEBAIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3Mg
U3R5bGVCdWlsZGUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
b3VjaENhbGxvdXQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5nVmFsdWUoKSwgIm5vbmUiKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9odG1sLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvaHRt
bC5jc3MJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGhyIHsKIAogdmlkZW8gewogICAgIG9i
amVjdC1maXQ6IGNvbnRhaW47Ci0jaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZf
UExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RG
X1BMQVRGT1JNX0lPU19GQU1JTFkKICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRy
YW5zcGFyZW50OwogI2VuZGlmCiB9CkBAIC0zNTksNyArMzU5LDcgQEAgaW5wdXQsIHRleHRhcmVh
LCBrZXlnZW4sIHNlbGVjdCwgYnV0dG9uLAogCiBpbnB1dCwgdGV4dGFyZWEsIGtleWdlbiwgc2Vs
ZWN0LCBidXR0b24gewogICAgIG1hcmdpbjogMF9fcWVtOwotI2lmICEoZGVmaW5lZChXVEZfUExB
VEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZP
Uk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpCiAgICAgZm9udDogLXdl
YmtpdC1zbWFsbC1jb250cm9sOwogI2VuZGlmCiAgICAgY29sb3I6IGluaXRpYWw7CkBAIC0zNzcs
NyArMzc3LDcgQEAgaW5wdXRbdHlwZT0iaGlkZGVuIl0gewogICAgIGRpc3BsYXk6IG5vbmU7CiB9
CiAKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNp
ZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZB
TUlMWQogdGV4dGFyZWEsCiBpbnB1dFt0eXBlPSJyYW5nZSJdLAogI2VuZGlmCkBAIC0zOTAsNyAr
MzkwLDcgQEAgaW5wdXQ6bWF0Y2hlcyhbdHlwZT0icGFzc3dvcmQiXSwgW3R5cGU9IgogI2Vsc2UK
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICNlbmRpZgotI2lmIGRlZmluZWQoV1RGX1BM
QVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZCiAgICAgYm9yZGVyLXJhZGl1
czogNXB4OwogICAgIGZvbnQ6IDExcHggSGVsdmV0aWNhLCAtd2Via2l0LXBpY3RvZ3JhcGg7CiAg
ICAgYm9yZGVyOiAxcHggc29saWQgIzRjNGM0YzsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbnB1dFt0
eXBlPSJkYXRlIl0gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwog
ICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsK
LSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNp
ZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1Nf
RkFNSUxZKQogICAgIHdpZHRoOiAxMGVtOwogI2VuZGlmCiB9CkBAIC00NzgsNyArNDc4LDcgQEAg
aW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZW51bGlz
dC1idXR0b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICBvdmVyZmxv
dzogaGlkZGVuOwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZP
Uk1fSU9TKQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkpCiAgICAgd2lkdGg6IDEwZW07CiAjZW5kaWYKIH0KQEAgLTQ4OSw3
ICs0ODksNyBAQCBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdIHsKICAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lbnVsaXN0LWJ1dHRvbjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1m
bGV4OwogICAgIG92ZXJmbG93OiBoaWRkZW47Ci0jaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9J
T1MpICYmIFdURl9QTEFURk9STV9JT1MpCisjaWYgIShkZWZpbmVkKFdURl9QTEFURk9STV9JT1Nf
RkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkKICAgICB3aWR0aDogMTBlbTsKICNl
bmRpZgogfQpAQCAtNTAwLDcgKzUwMCw3IEBAIGlucHV0W3R5cGU9Im1vbnRoIl0gewogICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGRpc3BsYXk6IC13ZWJraXQt
aW5saW5lLWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSNpZiAhKGRlZmluZWQoV1RGX1BM
QVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRG
T1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogICAgIHdpZHRoOiAx
MGVtOwogI2VuZGlmCiB9CkBAIC01MTEsMTMgKzUxMSwxMyBAQCBpbnB1dFt0eXBlPSJ0aW1lIl0g
ewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGRpc3BsYXk6
IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSNpZiAhKGRlZmlu
ZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQo
V1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogICAg
IHdpZHRoOiAxMGVtOwogI2VuZGlmCiB9CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspICYmIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsKLSNpZiAhKGRlZmluZWQoV1RG
X1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BM
QVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogaW5wdXRbdHlw
ZT0id2VlayJdIHsKICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbWVudWxpc3QtYnV0dG9uOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGlucHV0W3R5cGU9Indl
ZWsiXSB7CiAjZW5kaWYKIAogaW5wdXQ6Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSB7Ci0j
aWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVm
aW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkK
ICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7CiAjZWxzZQogICAgIG1hcmdpbjogMXB4IDI0cHggMXB4
IDRweDsKQEAgLTYyMCw3ICs2MjAsNyBAQCBpbnB1dDo6LXdlYmtpdC1saXN0LWJ1dHRvbiB7CiAg
ICAgZmxleDogbm9uZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHdpZHRo
OiAxNnB4OwotI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lP
UworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9J
T1NfRkFNSUxZCiAgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNr
IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwb2x5Z29uIHBvaW50cz0iOCAxMS4wMzEsIDQuNSA0
Ljk2OSwgMTEuNSA0Ljk2OSIvPjwvc3ZnPicpOwogICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGhp
dCB0aGUgYnV0dG9uIG9uIGlPUyAqLwogICAgIHBhZGRpbmc6IDdweDsKQEAgLTY0MSw3ICs2NDEs
NyBAQCBrZXlnZW46Oi13ZWJraXQta2V5Z2VuLXNlbGVjdCB7CiAKIHRleHRhcmVhIHsKICAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IHRleHRhcmVhOwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1f
SU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TKQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
X0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpCiAjaWYgZGVmaW5lZChXVEZfUExB
VEZPUk1fTUFDKSAmJiBXVEZfUExBVEZPUk1fTUFDCiAgICAgY29sb3I6IHRleHQ7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogLWFwcGxlLXN5c3RlbS1jb250cm9sLWJhY2tncm91bmQ7CkBAIC03MDcs
NyArNzA3LDcgQEAgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCwgaW5wdXQ6LXdlYmtpdC1hdQogCiBp
bnB1dDptYXRjaGVzKFt0eXBlPSJyYWRpbyJdLCBbdHlwZT0iY2hlY2tib3giXSkgewogICAgIG1h
cmdpbjogM3B4IDJweDsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFU
Rk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExB
VEZPUk1fSU9TX0ZBTUlMWQogICAgIGJvcmRlcjogMXB4IHNvbGlkICM0YzRjNGM7CiAgICAgYm94
LXNpemluZzogYm9yZGVyLWJveDsKICNlbHNlCkBAIC03MzQsNyArNzM0LDcgQEAgaW5wdXQ6bWF0
Y2hlcyhbdHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJzdQogICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
ICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgY29sb3I6IEJ1dHRvblRleHQ7Ci0jaWYgIShkZWZp
bmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MpCisjaWYgIShkZWZpbmVk
KFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkKICAg
ICBwYWRkaW5nOiAycHggNnB4IDNweCA2cHg7CiAgICAgYm9yZGVyOiAycHggb3V0c2V0IEJ1dHRv
bkZhY2U7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogQnV0dG9uRmFjZTsKQEAgLTc3OSwxNCArNzc5
LDE0IEBAIGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW0KICAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IHNsaWRlcnRodW1iLWhvcml6b250YWw7CiAgICAgYm94LXNpemluZzog
Ym9yZGVyLWJveDsKICAgICBkaXNwbGF5OiBibG9jazsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9S
TV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1Nf
RkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOwogICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig2NiwgNjYsIDY2KTsKICAgICBwYWRk
aW5nOiAwcHg7CiAjZW5kaWYKIH0KIAotI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYg
V1RGX1BMQVRGT1JNX0lPUworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYm
IFdURl9QTEFURk9STV9JT1NfRkFNSUxZCiBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNs
aWRlci10aHVtYjphY3RpdmUgewogICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOwogfQpAQCAt
ODExLDcgKzgxMSw3IEBAIHNlbGVjdFtkaXNhYmxlZF0+b3B0aW9uIHsKICAgICBjb2xvcjogR3Jh
eVRleHQ7CiB9CiAKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRG
T1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9Q
TEFURk9STV9JT1NfRkFNSUxZKQogaW5wdXQ6bWF0Y2hlcyhbdHlwZT0iYnV0dG9uIl0sIFt0eXBl
PSJzdWJtaXQiXSwgW3R5cGU9InJlc2V0Il0pOmFjdGl2ZSwgaW5wdXRbdHlwZT0iZmlsZSJdOmFj
dGl2ZTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbjphY3RpdmUgewogICAgIGJv
cmRlci1zdHlsZTogaW5zZXQ7CiB9CkBAIC04MjgsNyArODI4LDcgQEAgYXJlYSwgcGFyYW0gewog
CiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNr
Ym94OwotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9T
KQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkpCiAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICNlbHNlCiAgICAgYm9y
ZGVyLXJhZGl1czogNXB4OwpAQCAtODQwLDcgKzg0MCw3IEBAIGlucHV0W3R5cGU9ImNoZWNrYm94
Il0gewogI2VuZGlmCiB9CiAKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9Q
TEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZf
UExBVEZPUk1fSU9TX0ZBTUlMWQogaW5wdXRbdHlwZT0icmFkaW8iXSB7CiAgICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiByYWRpbzsKICAgICBib3JkZXItcmFkaXVzOiA1MCU7CkBAIC04NzEsMTQgKzg3
MSwxNCBAQCBpbnB1dDptYXRjaGVzKFt0eXBlPSJjaGVja2JveCJdLCBbdHlwZT0iCiB9CiAjZW5k
aWYKIAotI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9T
KQorI2lmICEoZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JN
X0lPU19GQU1JTFkpCiBpbnB1dFt0eXBlPSJyYWRpbyJdIHsKICAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IHJhZGlvOwogICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiB9CiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lmIGRlZmlu
ZWQoV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZCiBz
ZWxlY3Q6Zm9jdXMgewogICAgIGJvcmRlci1jb2xvcjogcmdiKDE3LCA0NiwgMTM1KTsKIH0KQEAg
LTkwNCw3ICs5MDQsNyBAQCBpbnB1dFt0eXBlPSJjb2xvciJdOjotd2Via2l0LWNvbG9yLXN3YXRj
CiAKIHNlbGVjdCB7CiAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSNpZiBkZWZpbmVkKFdU
Rl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFU
Rk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbWVudWxpc3QtYnV0dG9uOwogICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7
CiAgICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CkBAIC05MzEsNyArOTMxLDcgQEAgc2VsZWN0IHsK
ICAgICBjdXJzb3I6IGRlZmF1bHQ7CiB9CiAKLSNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lP
UykgJiYgV1RGX1BMQVRGT1JNX0lPUykKKyNpZiAhKGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPU19G
QU1JTFkpICYmIFdURl9QTEFURk9STV9JT1NfRkFNSUxZKQogc2VsZWN0Om1hdGNoZXMoW3NpemVd
LCBbbXVsdGlwbGVdLCBbc2l6ZV1bbXVsdGlwbGVdKSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBsaXN0Ym94OwogICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwpAQCAtMTIyNiw3ICsxMjI2
LDcgQEAgc2xvdCB7CiAgICAgZGlzcGxheTogY29udGVudHM7CiB9CiAKLSNpZiBkZWZpbmVkKFdU
Rl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFU
Rk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWQogYXBwbGV0LCBlbWJl
ZCwgb2JqZWN0LCBpbWcgewogICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgw
LCAwLCAwLCAwKTsKIH0KQEAgLTEyMzgsNyArMTIzOCw3IEBAIGFwcGxldCwgZW1iZWQsIG9iamVj
dCwgaW1nIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICYmIEVOQUJM
RV9BVFRBQ0hNRU5UX0VMRU1FTlQKIGF0dGFjaG1lbnQgewogICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogYXR0YWNobWVudDsKLSNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFU
Rk9STV9JT1MKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1NfRkFNSUxZKSAmJiBXVEZfUExB
VEZPUk1fSU9TX0ZBTUlMWQogICAgIGNvbG9yOiAtYXBwbGUtc3lzdGVtLWJsdWU7CiAjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9zdmcuY3NzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9zdmcuY3NzCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3Mvc3ZnLmNzcwkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB0ZXh0LCB0c3Bh
biwgdGV4dFBhdGggewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAogfQogCi0jaWYgZGVmaW5lZChX
VEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChXVEZfUExB
VEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKIHRleHQsIHRzcGFu
LCB0cmVmIHsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogbm9uZTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBDU1NQYXJzZXJDb250ZXh0OjpD
U1NQYXJzZXJDb250ZXh0KENTU1BhCiAgICAgOiBiYXNlVVJMKGJhc2VVUkwpCiAgICAgLCBtb2Rl
KG1vZGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdvcmsg
b24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCiAgICAgLy8g
dG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlzIHRv
IGJlIGhhbmRsZWQgYnk6CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVzdGln
YXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQgVUlX
ZWJWaWV3CkBAIC03Miw3ICs3Miw3IEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRl
eHQoY29uc3QKICAgICBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5n
cygpLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpOwogICAgIHVzZVN5c3RlbUFwcGVhcmFuY2Ug
PSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnVzZVN5c3RlbUFwcGVhcmFuY2Uo
KSA6IGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdv
cmsgb24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCiAgICAg
Ly8gdG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlz
IHRvIGJlIGhhbmRsZWQgYnk6CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVz
dGlnYXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQg
VUlXZWJWaWV3CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Myw3ICs3
ODMsNyBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVT
cGFjZTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFpvb206CiAgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXNldDsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBcHBs
ZSBzcGVjaWZpYyBwcm9wZXJ0eS4gVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5k
IGlzIHB1cmVseSB0bwogICAgIC8vIHN1cHBvcnQgY3VzdG9tIFdlYktpdC1iYXNlZCBBcHBsZSBh
cHBsaWNhdGlvbnMuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRvdWNoQ2FsbG91dDoKQEAg
LTk1Nyw3ICs5NTcsNyBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVy
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxhc3Q6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRKdXN0aWZ5OgogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXBwbGUgc3BlY2lmaWMgcHJvcGVydHkuIFRo
aXMgd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGlzIHB1cmVseSB0bwogICAgIC8vIHN1
cHBvcnQgY3VzdG9tIFdlYktpdC1iYXNlZCBBcHBsZSBhcHBsaWNhdGlvbnMuCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRvdWNoQ2FsbG91dDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFy
KiBzdHJpbmcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMsIHVu
c2lnbmVkJiBuZXdMZW5ndGgpCiB7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiLXdl
YmtpdC1oeXBoZW5hdGUtbG9jYWxlIikpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgQ1NT
UHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKGNvbnN0CiAgICAgICAgICAgICArK2xlbmd0aDsKICAg
ICAgICAgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGJ1ZmZlciwgbmFtZSwgbGVu
Z3RoKTsKICNlbmRpZgogICAgIH0KQEAgLTM4NTYsNyArMzg1Niw3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAgICAgICAgLy8gd2hldGhlciBpc1RleHRBdXRv
c2l6aW5nRW5hYmxlZCgpIGlzIHRydWUuIFdlIHdhbnQgdG8gZW5hYmxlIHRoaXMgcHJvcGVydHkg
b24gaU9TLCB3aGVuIHNpbXVsYXRpbmcKICAgICAgICAgLy8gYSBpT1MgZGV2aWNlIGluIFNhZmFy
aSdzIHJlc3BvbnNpdmUgZGVzaWduIG1vZGUgYW5kIHdoZW4gb3B0aW9uYWxseSBlbmFibGVkIGlu
IERSVC9XVFIuIE90aGVyd2lzZSwKICAgICAgICAgLy8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1fY29udGV4dC50ZXh0QXV0b3NpemluZ0VuYWJsZWQp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKFN0
cmluZ1ZpZXcpOwogQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3KTsKIGJv
b2wgaXNDdXN0b21Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxp
YXNpbmcoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1l
QWxpYXMsIHVuc2lnbmVkJiBuZXdMZW5ndGgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBAQCBEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpEZXZpY2VN
b3Rpb25Db250CiAgICAgZGV2aWNlTW90aW9uQ2xpZW50KCktPnNldENvbnRyb2xsZXIodGhpcyk7
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJ
WE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJjZSBk
aWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKLS8vIHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1v
dmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisvLyBz
byB0aGF0IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQ
TEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KIHZvaWQgRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6
c3VzcGVuZFVwZGF0ZXMoKQogewogICAgIGlmIChtX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGV2aWNlTW90aW9uQ29u
dHJvbGxlcihEZXZpY2VNb3Rpb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5EZXZpY2VNb3Rpb25D
b250cm9sbGVyKCkgPSBkZWZhdWx0OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0
aGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzIHdpdGggdGhpcyBjbGFzcwotICAgIC8v
IHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhl
IFBMQVRGT1JNKElPUyktZ3VhcmQuCisgICAgLy8gc28gdGhhdCB3ZSBjYW4gZWl0aGVyIHJlbW92
ZSB0aGVzZSBtZXRob2RzIG9yIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQu
CiAgICAgdm9pZCBzdXNwZW5kVXBkYXRlcygpOwogICAgIHZvaWQgcmVzdW1lVXBkYXRlcygpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
OjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNs
aWVudCkKICAgICA6IERldmljZUNvbnRyb2xsZXIoY2xpZW50KQogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUZW1wb3JhcmlseSBh
dm9pZCBhc3NlcnRpbmcgd2hpbGUgT3BlblNvdXJjZSBpcyB1c2luZyBhIGRpZmZlcmVudCBkZXNp
Z24uCiAgICAgLy8gV2Ugc2hvdWxkIHJlY29uY2lsZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBP
cGVuU291cmNlIGFuZCBpT1Mgc28gdGhhdCB3ZSBjYW4KICAgICAvLyByZW1vdmUgdGhpcyBjb2Rl
IHBhdGguCkBAIC02MCw5ICs2MCw5IEBAIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBEZXZpY2VP
cmllbnRhdGkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV2aWNlT3JpZW50YXRpb25DbGllbnQq
PihtX2NsaWVudCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQg
T3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKLS8vIHNvIHRoYXQgd2UgY2Fu
IGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCisvLyBzbyB0aGF0IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3Ig
cmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KIHZvaWQgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOjpzdXNwZW5kVXBkYXRlcygpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpA
QCAtODQsNyArODQsNyBAQCBSZWZQdHI8RXZlbnQ+IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
CiB7CiAgICAgcmV0dXJuIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+bGFz
dE9yaWVudGF0aW9uKCkpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiBjb25zdCBjaGFyKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VP
cmllbnRhdGlvbihEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKICAgICBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0
byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMg
Y2xhc3MKLSAgICAvLyBzbyB0aGF0IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMg
b3IgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAgIC8vIHNvIHRoYXQgd2UgY2Fu
IGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19G
QU1JTFkpLWd1YXJkLgogICAgIHZvaWQgc3VzcGVuZFVwZGF0ZXMoKTsKICAgICB2b2lkIHJlc3Vt
ZVVwZGF0ZXMoKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25EYXRhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpT1Mg
YW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCiBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBE
ZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGNvbXBhc3NBY2N1cmFjeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25EYXRhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU9yaWVudGF0aW9uRGF0
YSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNy
ZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBj
b21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAj
ZWxzZQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRh
PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGFic29sdXRlKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGE7IH0KICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYmV0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYmV0YTsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2FtbWE7IH0KLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gY29tcGFzc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhc3NIZWFkaW5nOyB9
CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcGFzc0FjY3VyYWN5OyB9CiAjZWxzZQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKCkgPSBkZWZhdWx0OwotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIERldmljZU9yaWVu
dGF0aW9uRGF0YShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFj
eSk7CiAjZWxzZQogICAgIERldmljZU9yaWVudGF0aW9uRGF0YShzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOwpAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwogICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBtX2JldGE7CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZ2Ft
bWE7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1fY29tcGFzc0hlYWRpbmc7CiAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fY29tcGFzc0FjY3VyYWN5OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRp
b25FCiAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmdhbW1hKCk7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RkOjpvcHRpb25hbDxkb3VibGU+
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNvbXBhc3NIZWFkaW5nKCkgY29uc3QKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGJldGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEo
KSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygpIGNvbnN0OwogICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3koKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgZGVmaW5pbmcgYW4gRU5BQkxFIG1hY3JvIGZvciBpT1MgZGV2aWNlIG9yaWVudGF0aW9uIGNv
ZGUgYW5kL29yIG1vZGlmeWluZwogICAgIC8vIHRoZSBiaW5kaW5ncyBzY3JpcHRzIHRvIHN1cHBv
cnQgZ2VuZXJhdGluZyBtb3JlIGNvbXBsaWNhdGVkIGNvbmRpdGlvbmFsIGNvZGUuCi0jaWYgZGVm
aW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisjaWYgZGVmaW5lZChX
VEZfUExBVEZPUk1fSU9TX0ZBTUlMWSkgJiYgV1RGX1BMQVRGT1JNX0lPU19GQU1JTFkKICAgICBb
SW1wbGVtZW50ZWRBcz1jb21wYXNzSGVhZGluZ10gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGU/IHdlYmtpdENvbXBhc3NIZWFkaW5nOwogICAgIFtJbXBsZW1lbnRlZEFzPWNv
bXBhc3NBY2N1cmFjeV0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGU/IHdl
YmtpdENvbXBhc3NBY2N1cmFjeTsKICAgICB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50
KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gIiIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQAogI2luY2x1ZGUgIklEQk9wZW5EQlJl
cXVlc3QuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90
aW9uQ2xpZW50SU9TLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgpAQCAt
NTEzLDcgKzUxMyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFUK
ICAgICAsIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzTm90aWZ5VGltZXIoKnRoaXMsICZEb2N1bWVu
dDo6bm90aWZ5SW50ZXJzZWN0aW9uT2JzZXJ2ZXJzVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwg
bV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGlt
ZXJGaXJlZCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
ZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCiAgICAgLCBtX2Rldmlj
ZU1vdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVy
PihtX2RldmljZU1vdGlvbkNsaWVudC5nZXQoKSkpCkBAIC01OTksNyArNTk5LDcgQEAgRG9jdW1l
bnQ6On5Eb2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0Nv
dW50KTsKICAgICBBU1NFUlQobV9pbkRvY3VtZW50U2hhZG93Um9vdHMuaXNFbXB0eSgpKTsKIAot
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fZGV2
aWNlTW90aW9uQ2xpZW50LT5kZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCk7CiAgICAg
bV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVz
dHJveWVkKCk7CiAjZW5kaWYKQEAgLTI1NTQsNyArMjU1NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnN1
c3BlbmREZXZpY2VNb3Rpb25BbmRPcmkKICAgICBpZiAobV9hcmVEZXZpY2VNb3Rpb25BbmRPcmll
bnRhdGlvblVwZGF0ZXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FyZURldmlj
ZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlc1N1c3BlbmRlZCA9IHRydWU7Ci0jaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZGV2aWNlTW90
aW9uQ29udHJvbGxlcikKICAgICAgICAgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyLT5zdXNwZW5k
VXBkYXRlcygpOwogICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcikKQEAgLTI1
NjcsNyArMjU2Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZURldmljZU1vdGlvbkFuZE9yaWUK
ICAgICBpZiAoIW1fYXJlRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzU3VzcGVuZGVk
KQogICAgICAgICByZXR1cm47CiAgICAgbV9hcmVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVw
ZGF0ZXNTdXNwZW5kZWQgPSBmYWxzZTsKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAm
JiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKQogICAgICAg
ICBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXItPnJlc3VtZVVwZGF0ZXMoKTsKICAgICBpZiAobV9k
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIpCkBAIC0yNTg0LDcgKzI1ODQsNyBAQCBib29sIERv
Y3VtZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250CiAKIHZvaWQgRG9jdW1lbnQ6OnBsYXRm
b3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKQogewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9mT2JzZXJ2
ZWRDb250ZW50TW9kaWZpZXJzKCkgPiAwKSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKQEAgLTM2MDIsNyArMzYwMiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NTdXBwb3J0ZWRD
b2xvclNjaGUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcykKIHsKQEAgLTYxMzAsNyArNjEzMCw3IEBAIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciogRG9jdW1lbnQ6OnRha2VBbnkKICAgICByZXR1cm4gbV9tZWRpYUNhblN0YXJ0TGlz
dGVuZXJzLnRha2VBbnkoKTsKIH0KIAotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYm
IFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBEb2N1bWVudDo6ZGV2aWNl
TW90aW9uQ29udHJvbGxlcigpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkV2ZW50VHJhY2tpbmdSZWdpb25zLmgi
CiAjZW5kaWYKIApAQCAtMjIwLDcgKzIyMCw3IEBAIGNsYXNzIFRvdWNoOwogY2xhc3MgVG91Y2hM
aXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIGNsYXNzIERldmljZU1vdGlvbkNsaWVudDsKIGNsYXNzIERldmljZU1vdGlvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKQEAgLTg4Myw3ICs4ODMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gc3BlY2lmaWVkIGluIGFuIEhUTUwgZmlsZS4KICAgICB2b2lkIHByb2Nl
c3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGlzSW5Eb2N1bWVudEhlYWQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBwcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1h
cHAtb3JpZW50YXRpb25zIj4gY2hhbmdlcy4KQEAgLTEyMjUsNyArMTIyNSw3IEBAIHB1YmxpYzoK
ICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRJT1MuaD4KICNlbmRpZgogCi0jaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGV2aWNlTW90
aW9uQ29udHJvbGxlciogZGV2aWNlTW90aW9uQ29udHJvbGxlcigpIGNvbnN0OwogICAgIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlciogZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRI
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhib29sKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PERldmljZU1vdGlvbkNsaWVudD4gbV9kZXZpY2VNb3Rpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPERldmljZU1vdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnQ+IG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVm
IHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CiAjZW5kaWYKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICAgICAgVGVsZXBo
b25lTnVtYmVyID0gMSA8PCAxMCwKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogaU9TIHNob3VsZCBzaGFyZSB0aGUg
c2FtZSBkaWN0YXRpb24gbWFyayBzeXN0ZW0gd2l0aCB0aGUgb3RoZXIgcGxhdGZvcm1zIDxyZGFy
Oi8vcHJvYmxlbS85NDMxMjQ5Pi4KICAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0
aXZlcyA9IDEgPDwgMTEsCiAgICAgICAgIERpY3RhdGlvblJlc3VsdCA9IDEgPDwgMTIsCkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG9yaWdpbmFsVGV4dDsKICAgICB9
OwogICAgIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZXNEYXRhIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgVmVjdG9yPFN0cmluZz4gYWx0
ZXJuYXRpdmVzOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhOwogI2VuZGlmCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50TWFya2VyKHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNBY3RpdmVNYXRjaCk7CiAgICAgRG9j
dW1lbnRNYXJrZXIoTWFya2VyVHlwZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiA9IFN0cmluZygpKTsKICAgICBEb2N1
bWVudE1hcmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCBEYXRhJiYpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIERvY3VtZW50TWFya2VyKE1hcmtlclR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOwogI2Vu
ZGlmCiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRPZmZzZXQo
dW5zaWduZWQgb2Zmc2V0KSB7IG1fZW5kT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgdm9pZCBzaGlm
dE9mZnNldHMoaW50IGRlbHRhKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgaXNEaWN0YXRpb24oKSBjb25zdDsKICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbHRlcm5hdGl2
ZShjb25zdCBTdHJpbmcmLCBzaXplX3QgaW5kZXgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGlu
ZSBhdXRvIERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkKICNpZiBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pCiAgICAgICAgIFRlbGVwaG9uZU51bWJlciwKICNlbmRpZgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBEaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLAogICAgICAgICBEaWN0YXRpb25SZXN1bHQsCiAjZW5k
aWYKQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2V0QWN0
aXZlTWF0CiAgICAgbV9kYXRhID0gaXNBY3RpdmVNYXRjaDsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAvLyBGSVhNRTogaU9TIHNob3VsZCBzaGFy
ZSB0aGUgc2FtZSBkaWN0YXRpb24gbWFyayBzeXN0ZW0gd2l0aCB0aGUgb3RoZXIgcGxhdGZvcm1z
IDxyZGFyOi8vcHJvYmxlbS85NDMxMjQ5Pi4KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRU
ZXh0TWEKICAgICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSog
cmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJl
dGFpblB0cjxpZD4mIG1ldGFkYXRhKQogewpAQCAtMzAyLDcgKzMwMiw3IEBAIFZlY3RvcjxGbG9h
dFJlY3Q+IERvY3VtZW50TWFya2VyQ29udHJvbGwKIAogc3RhdGljIGJvb2wgc2hvdWxkSW5zZXJ0
QXNTZXBhcmF0ZU1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWFya2VyKQogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChuZXdNYXJr
ZXIudHlwZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzIHx8IG5ld01hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lk
IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2hpZnRNYXJrCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gbGlzdC0+c2l6ZSgpOyApIHsKICAgICAgICAgUmVuZGVyZWREb2N1bWVudE1hcmtl
ciYgbWFya2VyID0gbGlzdC0+YXQoaSk7CiAgICAgICAgIC8vIEZJWE1FOiBIb3cgY2FuIHRoaXMg
cG9zc2libHkgYmUgaU9TLXNwZWNpZmljIGNvZGU/Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGludCB0YXJnZXRTdGFydE9mZnNldCA9IG1hcmtl
ci5zdGFydE9mZnNldCgpICsgZGVsdGE7CiAgICAgICAgIGludCB0YXJnZXRFbmRPZmZzZXQgPSBt
YXJrZXIuZW5kT2Zmc2V0KCkgKyBkZWx0YTsKICAgICAgICAgaWYgKHRhcmdldFN0YXJ0T2Zmc2V0
ID49IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIHx8IHRhcmdldEVuZE9mZnNldCA8PSAwKSB7
CkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnNoaWZ0
TWFyawogICAgICAgICAgICAgQVNTRVJUKChpbnQpbWFya2VyLnN0YXJ0T2Zmc2V0KCkgKyBkZWx0
YSA+PSAwKTsKICAgICAgICAgICAgIG1hcmtlci5zaGlmdE9mZnNldHMoZGVsdGEpOwogICAgICAg
ICAgICAgZGlkU2hpZnRNYXJrZXIgPSB0cnVlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIC8vIEZJWE1FOiBJ
bnNlcnRpbmcgdGV4dCBpbnNpZGUgYSBEb2N1bWVudE1hcmtlciBkb2VzIG5vdCBncm93IHRoZSBt
YXJrZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9pZCBh
ZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1hcmtlcjo6RGF0YSYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSos
IGJvb2wgYWN0aXZlTWF0Y2gpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgYWRkTWFya2VyKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
bnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lk
IGFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zKTsKICAgICB2b2lkIGFkZERpY3RhdGlvblJl
c3VsdE1hcmtlcihSYW5nZSosIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgdm9p
ZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91cwogICAgIH0KIAogICAgIFNlbGVj
dGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbDsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGb2N1
c2luZyBhIGZvcm0gZWxlbWVudCB0cmlnZ2VycyBhbmltYXRpb24gaW4gVUlLaXQgdG8gc2Nyb2xs
IHRvIHRoZSByaWdodCBwb3NpdGlvbi4KICAgICAvLyBDYWxsaW5nIHVwZGF0ZUZvY3VzQXBwZWFy
YW5jZSgpIHdvdWxkIGdlbmVyYXRlIGFuIHVubmVjZXNzYXJ5IGNhbGwgdG8gU2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24oKSwKICAgICAvLyB3aGljaCB3b3VsZCBqdW1wIHVzIGFyb3VuZCBk
dXJpbmcgdGhpcyBhbmltYXRpb24uIFNlZSA8cmRhcjovL3Byb2JsZW0vNjY5OTc0MT4uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBOb2RlOjp+Tm9kZSgp
CiAKICAgICBkb2N1bWVudCgpLmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAKLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpICYmICghQVNTRVJUX0RJU0FC
TEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKSkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFC
TEUoU0VDVVJJVFlfQVNTRVJUSU9OUykpCiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighZG9jdW1lbnQtPnRvdWNoRXZlbnRMaXN0ZW5lcnNDb250YWluKCp0aGlzKSk7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudC0+dG91Y2hF
dmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykpOwpAQCAtMzc1LDE0ICszNzUsMTQgQEAgdm9pZCBO
b2RlOjp3aWxsQmVEZWxldGVkRnJvbShEb2N1bWVudCYgZAogICAgIGlmIChoYXNFdmVudFRhcmdl
dERhdGEoKSkgewogICAgICAgICBkb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigq
dGhpcywgRXZlbnRIYW5kbGVyUmVtb3ZhbDo6QWxsKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBk
b2N1bWVudC5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMsIEV2ZW50SGFuZGxlclJlbW92
YWw6OkFsbCk7CiAjZW5kaWYKICAgICAgICAgZG9jdW1lbnQuZGlkUmVtb3ZlVG91Y2hFdmVudEhh
bmRsZXIoKnRoaXMsIEV2ZW50SGFuZGxlclJlbW92YWw6OkFsbCk7CiAjZW5kaWYKICAgICB9CiAK
LSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkb2N1bWVudC5yZW1vdmVU
b3VjaEV2ZW50SGFuZGxlcigqdGhpcywgRXZlbnRIYW5kbGVyUmVtb3ZhbDo6QWxsKTsKICNlbmRp
ZgogCkBAIC0yMDgzLDcgKzIwODMsNyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVu
dChEb2N1bWVuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaEV2ZW50
TGlzdGVuZXJzOyArK2kpIHsKICAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92ZVRvdWNo
RXZlbnRIYW5kbGVyKCp0aGlzKTsKICAgICAgICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFRvdWNo
RXZlbnRIYW5kbGVyKCp0aGlzKTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9S
TShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgICAgIG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7
CiAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMpOwog
I2VuZGlmCkBAIC0yMTAyLDcgKzIxMDIsNyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1
bWVudChEb2N1bWVuCiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2xkRG9jdW1lbnQudG91Y2hFdmVu
dExpc3RlbmVyc0NvbnRhaW4oKnRoaXMpKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighb2xkRG9jdW1lbnQudG91Y2hFdmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykpOwog
I2VuZGlmCkBAIC0yMTI2LDcgKzIxMjYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZl
bnRMaXN0ZW5lcihOCiAgICAgZWxzZSBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUo
ZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2
ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1l
bnQoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50KQogICAgICAgICB0
YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5pbmNyZW1lbnRTY3JvbGxFdmVudExp
c3RlbmVyc0NvdW50KCk7CiAKQEAgLTIxNDEsNyArMjE0MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlBZGRFdmVudExpc3RlbmVyKE4KICAgICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVu
dFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3Vj
aEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoSU9TX0dF
U1RVUkVfRVZFTlRTKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChldmVudE5hbWVz
KCkuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCkBAIC0yMTY4LDcgKzIxNjgsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lCiAgICAgZWxzZSBpZiAoZXZl
bnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9k
ZS0+ZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodGFy
Z2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiBldmVudFR5cGUgPT0gZXZlbnRO
YW1lcygpLnNjcm9sbEV2ZW50KQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdp
bmRvdygpLT5kZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CiAKQEAgLTIxODIs
NyArMjE4Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmUKICAg
ICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAg
dGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5v
ZGUpOwogI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAmJiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIGlmIChldmVudE5hbWVzKCkuaXNHZXN0dXJlRXZlbnRUeXBlKGV2
ZW50VHlwZSkpCkBAIC0yNDc0LDcgKzI0NzQsNyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQmIGV2CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUo
KSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFdoZWVsRXZl
bnRIYW5kbGVyKHN0YXJ0Tm9kZSwgZG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpKTsKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgaWYgKGlzPFRvdWNoRXZl
bnQ+KGV2ZW50KSAmJiBldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShldmVudFR5cGUpKSB7
CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAg
ICAgICB3aGlsZSAocmVuZGVyZXIgJiYgKCFpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikgfHwgIWRv
d25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkpCkBAIC0yNDkxLDcgKzI0OTEsNyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQmIGV2CiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMo
KQogewogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlIGlPUyBjb2RlIHBhdGggZGlmZmVyZW50IGZy
b20gdGhlIG5vbi1pT1MgY29kZSBwYXRoPwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFpczxFbGVtZW50PigqdGhpcykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoZG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpLmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQpAQCAtMjUwMyw3ICsyNTAzLDcgQEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9u
ZFRvTW91c2VNb3ZlRXZlbnRzKAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGUgaU9TIGNvZGUgcGF0aCBkaWZmZXJl
bnQgZnJvbSB0aGUgbm9uLWlPUyBjb2RlIHBhdGg/Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKCkgfHwgaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgfHwgaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCk7CiAjZWxzZQogICAgIGlmICghaXM8RWxlbWVudD4oKnRo
aXMpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKICNlbmRpZgogCkBAIC0xMjQ1LDcgKzEyNDUsNyBA
QCB2b2lkIFJhbmdlOjphYnNvbHV0ZVRleHRRdWFkcyhWZWN0b3I8RmxvCiAgICAgICAgICppbkZp
eGVkID0gYWxsRml4ZWQgPyBFbnRpcmVseUZpeGVkUG9zaXRpb24gOiAoc29tZUZpeGVkID8gUGFy
dGlhbGx5Rml4ZWRQb3NpdGlvbiA6IE5vdEZpeGVkUG9zaXRpb24pOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpbnRlcnZhbHNT
dWZmaWNpZW50bHlPdmVybGFwKGludCBzdGFydEEsIGludCBlbmRBLCBpbnQgc3RhcnRCLCBpbnQg
ZW5kQikKIHsKICAgICBpZiAoZW5kQSA8PSBzdGFydEEgfHwgZW5kQiA8PSBzdGFydEIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VHJhbnNmb3JtLWZyaWVuZGx5CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYnNvbHV0ZVRleHRR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2Us
IFJhbmdlSW5GaXhlZFBvc2l0aW9uKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIEZsb2F0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nUmVjdChSZXNwZWN0Q2xpcHBpbmdGb3JUZXh0
UmVjdHMgPSBSZXNwZWN0Q2xpcHBpbmdGb3JUZXh0UmVjdHM6Ok5vKSBjb25zdDsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFVuaW9u
SW50ZXJpb3JMaW5lcyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mKSBjb25zdDsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdQogICAgIGFic29sdXRl
UG9pbnQubW92ZUJ5KHZpZXctPmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBMYXlv
dXRSZWN0IHZpc2libGVSZWN0OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7
CiAjZWxzZQogICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3
cG9ydEFyZ3VtZW50CiAgICAgICAgIGFyZ3VtZW50cy5tYXhab29tID0gZmluZFNjYWxlVmFsdWUo
ZG9jdW1lbnQsIGtleSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleSwgInVzZXItc2NhbGFibGUiKSkKICAgICAgICAgYXJndW1lbnRzLnVzZXJa
b29tID0gZmluZEJvb2xlYW5WYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBJZ25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5
IGJlIHJlbW92ZWQKICAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGlu
IHRoZSB3ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKICAgICBlbnVtIFR5
cGUgewogICAgICAgICAvLyBUaGVzZSBhcmUgb3JkZXJlZCBpbiBpbmNyZWFzaW5nIGltcG9ydGFu
Y2UuCiAgICAgICAgIEltcGxpY2l0LAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBQbHVnaW5Eb2N1bWVudCwKICAgICAgICAgSW1hZ2VEb2N1bWVu
dCwKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIy
LDcgQEAgdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjp1bmFwcGx5KCkKICAgICAvLyBMb3cg
bGV2ZWwgb3BlcmF0aW9ucywgbGlrZSBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBh
IGxheW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCB1c2UgdGhlbSBw
ZXJmb3JtIG9uZQogICAgIC8vIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9yIHRoZSBjcmVh
dGlvbiBvZiBWaXNpYmxlUG9zaXRpb25zKS4KICAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2hlcmUgc2hvdWxkIGlQaG9uZSBjb2RlIGRl
YWwgd2l0aCB0aGUgY29tcG9zaXRpb24/CiAgICAgLy8gU2luY2UgZWRpdGluZyBjb21tYW5kcyBk
b24ndCBzYXZlL3Jlc3RvcmUgdGhlIGNvbXBvc2l0aW9uLCB1bmRvaW5nIHdpdGhvdXQgZml4aW5n
CiAgICAgLy8gdXAgdGhlIGNvbXBvc2l0aW9uIHdpbGwgbGVhdmUgYSBzdGFsZSwgaW52YWxpZCBj
b21wb3NpdGlvbiwgYXMgaW4gPHJkYXI6Ly9wcm9ibGVtLzY4MzE2Mzc+LgpAQCAtNzcwLDcgKzc3
MCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW4KICAgICByZXBs
YWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwogICAg
IFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobWFya2VyLmlzRGljdGF0aW9u
KCkpIHsKICAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdl
dCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFya2VyLmFsdGVybmF0
aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0
NTAsNyArMTQ1MCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgK
ICAgICAvLyBhbnl0aGluZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBh
biBlbXB0eSBwYXJhZ3JhcGggY2FuIGhhdmUgc3R5bGUKICAgICAvLyB0b28sIDxkaXY+PGI+PGJy
PjwvYj48L2Rpdj4gZm9yIGV4YW1wbGUuICBTYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZl
IGl0IGxhdGVyLgogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlSW5FbXB0eVBhcmFncmFw
aDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlICYmIHByZXNl
cnZlU3R5bGUpIHsKICNlbHNlCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZW5k
T2ZQYXJhZ3JhcGhUb01vdmUgJiYgcHJlc2VydmVTdHlsZSAmJiBpc1JpY2hseUVkaXRhYmxlUG9z
aXRpb24oZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDExICsxOTgsMTEgQEAgVGVtcG9y
YXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlYwogICAgIDogbV9mcmFtZShmcmFtZSkK
ICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV93YXNJZ25vcmluZ1NlbGVjdGlvbkNo
YW5nZXMoZnJhbWUuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9hcHBlYXJhbmNlVXBk
YXRlc1dlcmVFbmFibGVkKGZyYW1lLnNlbGVjdGlvbigpLmlzVXBkYXRlQXBwZWFyYW5jZUVuYWJs
ZWQoKSkKICNlbmRpZgogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChvcHRpb25zICYgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uRW5hYmxlQXBw
ZWFyYW5jZVVwZGF0ZXMpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFVwZGF0ZUFwcGVh
cmFuY2VFbmFibGVkKHRydWUpOwogI2VuZGlmCkBAIC0yMjYsNyArMjI2LDcgQEAgVGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlOjp+VGVtcG9yYXJ5U2VsZQogICAgICAgICBtX2ZyYW1lLT5lZGl0b3Io
KS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2Vz
LCByZXZlYWxTZWxlY3Rpb24pOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX29wdGlvbnMgJiBUZW1wb3JhcnlTZWxlY3Rpb25P
cHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcykKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCkuc2V0VXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQobV9hcHBlYXJhbmNlVXBkYXRlc1dlcmVFbmFi
bGVkKTsKICNlbmRpZgpAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgRWRpdG9yOjpoYW5kbGVUZXh0
RXZlbnQoVGV4dEV2ZW50JiAKIAogICAgIGlmIChldmVudC5pc1Bhc3RlKCkpIHsKICAgICAgICAg
aWYgKGV2ZW50LnBhc3RpbmdGcmFnbWVudCgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBpZiAoY2xpZW50KCktPnBlcmZvcm1zVHdv
U3RlcFBhc3RlKGV2ZW50LnBhc3RpbmdGcmFnbWVudCgpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgRWRpdG9yOjpFZGl0b3IoRnJh
bWUmIGZyYW1lKQogICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVsbENo
ZWNrZXI+KGZyYW1lKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fZWRp
dG9yVUlVcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVk
KQotI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElP
UykKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigq
dGhpcywgJkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMpCiAjZW5kaWYK
IHsKQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgRWRpdG9yOjpjbGVhcigpCiAgICAgbV9vbGRT
ZWxlY3Rpb25Gb3JFZGl0b3JVSVVwZGF0ZSA9IHsgfTsKICAgICBtX2VkaXRvclVJVXBkYXRlVGlt
ZXIuc3RvcCgpOwogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRh
dGVUaW1lci5zdG9wKCk7CiAgICAgbV9kZXRlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlcy5jbGVh
cigpOwogI2VuZGlmCkBAIC0xMjU2LDcgKzEyNTYsNyBAQCBib29sIEVkaXRvcjo6aW5zZXJ0VGV4
dFdpdGhvdXRTZW5kaW5nVGV4CiAgICAgICAgICAgICAvLyBSZXZlYWwgdGhlIGN1cnJlbnQgc2Vs
ZWN0aW9uCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGVkaXRlZEZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCkpCiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBlZGl0ZWRGcmFtZS0+cGFn
ZSgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgICAgICAgICAgICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWU7CiAjZWxzZQogICAgICAgICAgICAgICAg
ICAgICBTZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWw7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJM
IEVkaXRvcjo6cGFzdGViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgRWRpdG9yOjpjb3B5SW1hZ2Uo
Y29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9p
ZCBFZGl0b3I6OnRvZ2dsZVVuZGVybGluZSgpCiAKIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSAmJiAKICAgICAgICAgYmFzZVdyaXRp
bmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpID09IGRpcmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkzMyw3ICsxOTMzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNv
bnN0IFN0cmluZwogICAgICAgICB9CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgY2xpZW50KCktPnN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNj
aW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKTsKICNlbmRpZgogCkBAIC0yMDEwLDcgKzIw
MTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nCiAgICAgICAg
IH0KICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpICAgICAgICAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAgICAgICAgCiAgICAgY2xpZW50KCktPnN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdD
b250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpOwogI2VuZGlmCiB9CkBAIC0yMDQ1LDcgKzIwNDUs
NyBAQCB2b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygpCiAgICAgdGV4dENoZWNrZXIoKS0+bGVh
cm5Xb3JkKHRleHQpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0
YXJ0QmVmb3JlU2VsZWN0aW9uKQogewpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBFZGl0b3I6
OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFN0cmluZyBFZGl0
b3I6Om1pc3NwZWxsZWRXb3JkQXRDYXJldE9yUmFuZ2UoTm9kZSogY2xpY2tlZE5vZGUpIGNvbnN0
CiB7CkBAIC0yMzQzLDcgKzIzNDMsNyBAQCB2b2lkIEVkaXRvcjo6c2hvd1NwZWxsaW5nR3Vlc3NQ
YW5lbCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVl
KTsKICNlbmRpZgogICAgIGNsaWVudCgpLT5zaG93U3BlbGxpbmdVSSh0cnVlKTsKQEAgLTIzNzQs
NyArMjM3NCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKIHsK
ICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0
ZXJUeXBpbmcpOwogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKICAgICBPcHRpb25T
ZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9uczsKQEAgLTI1MTcsNyArMjUx
Nyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKICAgICAKIHZv
aWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc2VsZWN0
aW9uIGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIC8vIE1pZ2h0IGJl
IG5pY2UgdG8gYXNzZXJ0IHRoYXQgaGVyZS4KICAgICAKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIHZv
aWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWEKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlbGVjdGlvbik7CiAgICAgICAgIFVOVVNFRF9QQVJBTShjaGVja1NwZWxsaW5nKTsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogYm9vbCBF
ZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSogbm9kZSkgY29uc3QKQEAgLTI4
NDYsNyArMjg0Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGUK
IAogdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBBU1NFUlQodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKTsKIAogICAg
IGlmIChyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpCkBAIC0yODY1LDcgKzI4NjUsNyBAQCB2b2lk
IEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoCiAjZWxzZQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7Ci0jZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAog
CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRz
QWZmZWN0CiAgICAgICAgIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsCiAg
ICAgICAgIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uLAogICAgICAgICBE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsCiAjZW5kaWYK
ICAgICB9OwpAQCAtMzAwNyw3ICszMDA3LDcgQEAgdm9pZCBFZGl0b3I6OnJldmVhbFNlbGVjdGlv
bkFmdGVyRWRpdGluZwogICAgIGlmIChtX2lnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAg
IHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6
OlJldmVhbFVwVG9NYWluRnJhbWU7CiAjZWxzZQogICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2
ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbDsKQEAgLTMwMjIsNyArMzAyMiw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGIKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gaWdub3JlOwotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBTaG91bGQg
c3VwcHJlc3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBhIGNvbXBvc2l0
aW9uIGNoYW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IAogICAgIGlmICghaWdub3Jl
KQogICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCksIHsgfSk7CkBAIC0zMTcxLDcgKzMxNzEsNyBAQCB2b2lkIEVkaXRvcjo6Y2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kCiAgICAgLy8gY2hhbmdlIHRoZSBjYXJldCdzIERPTSBw
b3NpdGlvbiAoWyJoZWxsbyIsIDBdKS4gSW4gdGhlc2Ugc2l0dWF0aW9ucyB0aGUgYWJvdmUgRnJh
bWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbiBjYWxsCiAgICAgLy8gZG9lcyBub3QgY2FsbCBFZGl0
b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKSwgd2hpY2gsIG9uIHRoZSBNYWMs
IHNlbmRzIHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBhbmQKICAgICAvLyBzdGFydHMg
YSBuZXcga2lsbCByaW5nIHNlcXVlbmNlLCBidXQgd2Ugd2FudCB0byBkbyB0aGVzZSB0aGluZ3Mg
KG1hdGNoZXMgQXBwS2l0KS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBGSVhNRTogU2hvdWxkIHN1cHByZXNzIHNlbGVjdGlvbiBjaGFuZ2Ugbm90
aWZpY2F0aW9ucyBkdXJpbmcgYSBjb21wb3NpdGlvbiBjaGFuZ2UgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzM4ODMwPgogICAgIGlmIChtX2lnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTMyNDksNyArMzI0OSw3IEBAIEludFJlY3QgRWRpdG9yOjpmaXJzdFJlY3RGb3JS
YW5nZShSYW5nZSoKIAogYm9vbCBFZGl0b3I6OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5l
d1NlbGVjdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25z
dAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCkBAIC0zNTIwLDcgKzM1MjAsNyBAQCB2b2lkIEVkaXRvcjo6c2Vs
ZWN0aW9uV2lsbENoYW5nZSgpCiAKIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNl
dFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU2hvdWxkIHN1cHByZXNzIHNlbGVjdGlv
biBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBkdXJpbmcgYSBjb21wb3NpdGlvbiBjaGFuZ2UgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzM4ODMwPiAKICAgICBpZiAobV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2Vz
KQogICAgICAgICByZXR1cm47CkBAIC0zNTI5LDcgKzM1MjksNyBAQCB2b2lkIEVkaXRvcjo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGll
bnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigmbV9mcmFtZSk7CiAKLSNpZiBFTkFCTEUo
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoc2hvdWxkRGV0ZWN0VGVsZXBob25lTnVtYmVycygpKQogICAgICAgICBtX3RlbGVwaG9u
ZU51bWJlckRldGVjdGlvblVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogI2VuZGlmCkBA
IC0zNTQ1LDcgKzM1NDUsNyBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihjCiAgICAgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogfQogCi0jaWYgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wg
RWRpdG9yOjpzaG91bGREZXRlY3RUZWxlcGhvbmVOdW1iZXJzKCkKIHsKQEAgLTM2NDEsNyArMzY0
MSw3IEBAIHZvaWQgRWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXIKICAgICB9CiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBFZGl0b3I6OnVwZGF0ZUVkaXRvclVJTm93
SWZTY2hlZHVsZWQoKQogewpAQCAtMzY2NSwxMCArMzY2NSwxMCBAQCB2b2lkIEVkaXRvcjo6ZWRp
dG9yVUlVcGRhdGVUaW1lckZpcmVkKCkKICAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9m
cmFtZS5zZXR0aW5ncygpLmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgICAgIGlmIChtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRC
cm93c2luZykgewogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5ld1N0YXJ0KG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBuZXdBZGphY2VudFdv
cmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChuZXdTdGFydCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwog
I2Vsc2UKLSAgICAgICAgICAgIC8vIElmIHRoaXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZP
Uk0oSU9TKSBjb2RlIGNvdWxkIGJlIHJlbW92ZWQ6CisgICAgICAgICAgICAvLyBJZiB0aGlzIGJ1
ZyBnZXRzIGZpeGVkLCB0aGlzIFBMQVRGT1JNKElPU19GQU1JTFkpIGNvZGUgY291bGQgYmUgcmVt
b3ZlZDoKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MjU5NjExPiBXb3JkIGJvdW5k
YXJ5IGNvZGUgb24gaVBob25lIGdpdmVzIGRpZmZlcmVudCByZXN1bHRzIHRoYW4gZGVza3RvcAog
ICAgICAgICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFy
eTsKICAgICAgICAgICAgIFVDaGFyMzIgYyA9IG5ld1N0YXJ0LmNoYXJhY3RlckJlZm9yZSgpOwpA
QCAtMzY3OCw3ICszNjc4LDcgQEAgdm9pZCBFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJl
ZCgpCiAgICAgICAgICAgICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5ld0FkamFjZW50V29yZHMgPSBWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKG5ld1N0YXJ0LCBzdGFydFdvcmRTaWRlKSwgZW5kT2ZXb3Jk
KG5ld1N0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgaWYgKGlz
Q29udGludW91c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQpCiAgICAgICAgICAgICAgICAgbmV3U2Vs
ZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKG5ld1N0YXJ0
KSwgZW5kT2ZTZW50ZW5jZShuZXdTdGFydCkpOwogICAgICAgICB9CkBAIC0zNzYxLDcgKzM3NjEs
NyBAQCBib29sIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoCiAKIE9wdGlvblNl
dDxUZXh0Q2hlY2tpbmdUeXBlPiBFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhj
b25zdCBOb2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlw
ZT4gdGV4dENoZWNraW5nT3B0aW9ucykKIHsKLSNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFD
RU1FTlQpICYmICFQTEFURk9STShJT1MpCisjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VN
RU5UKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG9ubHlBbGxvd3NUZXh0UmVw
bGFjZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaG9zdCA9IHJvb3RFZGl0YWJsZUVsZW1l
bnQuc2hhZG93SG9zdCgpKQogICAgICAgICBvbmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50ID0gaXM8
SFRNTElucHV0RWxlbWVudD4oaG9zdCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmhv
c3QpLmlzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50KCk7CkBAIC0zNzcz
LDcgKzM3NzMsNyBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpyZXNvCiAK
ICAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpOwogICAgIGJvb2wgc2hvdWxkTWFya0dyYW1t
YXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucy5jb250
YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKICAgICBib29sIHNo
b3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgdGV4
dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsK
ICNlbmRpZgpAQCAtMzc4Myw3ICszNzgzLDcgQEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IEVkaXRvcjo6cmVzbwogICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJl
Y3Rpb24pCiAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkNvcnJl
Y3Rpb24pOwogICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQpAQCAtMzgwNiw3ICsz
ODA2LDcgQEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IEVkaXRvcjo6cmVzbwogICAgICAg
ICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwog
ICAgIH0KICNlbmRpZgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICAgICByZXR1cm4gY2hlY2tpbmdUeXBlczsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZh
dGU6CiAgICAgUmVmPEZyYW1lPiBtX2ZyYW1lOwogICAgIE9wdGlvblNldDxUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb24+IG1fb3B0aW9uczsKICAgICBib29sIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25D
aGFuZ2VzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgbV9hcHBlYXJhbmNlVXBkYXRlc1dlcmVFbmFibGVkOwogI2VuZGlmCiAgICAgc3RkOjpv
cHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBtX3NlbGVjdGlvblRvUmVzdG9yZTsKQEAgLTE3MSw3
ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY29weVVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CiAgICAgUGFzdGVib2FyZFdyaXRl
ckRhdGE6OlVSTCBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwog
I2VuZGlmCiAKQEAgLTIwNiwxNCArMjA2LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZv
cm1hdHRpbmdBbmRTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3Bl
bkZvck1vcmVUeXBpbmcoKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29s
IGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlLCBFZGl0QWN0
aW9uID0gRWRpdEFjdGlvbjo6RGVsZXRlKTsKICAgICB2b2lkIGNsZWFyVGV4dCgpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CiAjZW5kaWYKIApAQCAtMjk3LDEyICsy
OTcsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlT3ZlcndyaXRl
TW9kZUVuYWJsZWQoKTsKIAogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyhPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4sIFJlZlB0cjxSYW5nZT4mJiBz
cGVsbGluZ1JhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmUHRyPFJhbmdlPiYmIGdyYW1tYXJSYW5nZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKICNlbmRpZgog
ICAgIHZvaWQgY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZyk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wg
c3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAjZW5kaWYKICAgICB2b2lkIHNob3dTcGVs
bGluZ0d1ZXNzUGFuZWwoKTsKQEAgLTM3MCw3ICszNzAsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRl
eHQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNv
bnN0IFN0cmluZyYsIEVsZW1lbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRB
bGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7
CkBAIC00NzUsMTMgKzQ3NSwxMyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKICAg
ICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQoKTsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wg
Y2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKTsKICAgICB2b2lkIHRha2VGaW5kU3Ry
aW5nRnJvbVNlbGVjdGlvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICNlbmRpZgog
CkBAIC00OTMsNyArNDkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzY2FuU2Vs
ZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycygpOwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiYgZGV0ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzOyB9CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlE
aWN0YXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRh
dGUgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBzaG91bGREZXRlY3RUZWxlcGhvbmVO
dW1iZXJzKCk7CiAgICAgdm9pZCBzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiwg
Y29uc3QgU3RyaW5nVmlldyYsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgbWFya2VkUmFuZ2VzKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHN0cnVjdCBGb250QXR0cmlidXRlcyB7CiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5TRm9udD4gZm9udDsKLSNlbGlmIFBMQVRG
T1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFVJRm9u
dD4gZm9udDsKICNlbmRpZgogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNyArNjgsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKQEAgLTEzNSw3ICsxMzUsNyBAQCBGcmFtZVNlbGVjdGlvbjo6RnJhbWVT
ZWxlY3Rpb24oRnJhbWUqIGZyCiAgICAgLCBtX3Nob3VsZFNob3dCbG9ja0N1cnNvcihmYWxzZSkK
ICAgICAsIG1fcGVuZGluZ1NlbGVjdGlvblVwZGF0ZShmYWxzZSkKICAgICAsIG1fYWx3YXlzQWxp
Z25DdXJzb3JPblNjcm9sbFdoZW5SZXZlYWxpbmdTZWxlY3Rpb24oZmFsc2UpCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3VwZGF0ZUFwcGVhcmFu
Y2VFbmFibGVkKGZhbHNlKQogICAgICwgbV9jYXJldEJsaW5rcyh0cnVlKQogI2VuZGlmCkBAIC00
MzYsNyArNDM2LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZQog
CiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVEYXRhRGV0ZWN0b3JzRm9yU2VsZWN0aW9uKCkK
IHsKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5zY2FuU2VsZWN0aW9uRm9yVGVsZXBo
b25lTnVtYmVycygpOwogI2VuZGlmCiB9CkBAIC0xOTg3LDcgKzE5ODcsNyBAQCBib29sIEZyYW1l
U2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbigqcmFuZ2UsIGFmZmluaXR5KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0aGlzIGNo
ZWNrIG9ubHkgaW4gaU9TPwogICAgIGlmIChuZXdTZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIGlubGluZSBzdGF0aWMgYm9vbCBz
aG91bGRTdG9wQmxpbmtpbmdEdWUKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFy
YW5jZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKCFtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKQEAgLTIyNTMsNyArMjI1Myw3IEBAIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBG
cmFtZVNlbGUKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9u
Q2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
QEAgLTIzNzAsNyArMjM3MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlv
bihTZWwKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNT
RVJUKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9k
ZSgpICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKFJlbmRlckxheWVy
KiBsYXllciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xh
eWVyKCkpIHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KSB7CiAg
ICAgICAgICAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0
cnVlKTsKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob24KICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBkZXNpZ25N
b2RlIGlzIG9uIGZvciB0aGlzIGRvY3VtZW50KS4KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygp
LmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgaWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50
LT5oYXNFZGl0YWJsZVN0eWxlKCkgfHwgY2FyZXRCcm93c2luZykpCiAgICAgICAgIHJldHVybjsK
QEAgLTI0MTIsNyArMjQxMiw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkZy
b21Ob24KIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9u
Q2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
QEAgLTI0ODAsNyArMjQ4MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNob3dUcmVlRm9yVGhp
cygpIGMKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHZvaWQgRnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvRWxlbWVudENvbnRh
aW5pbmdDYXJldFNlbGVjdGlvbigpCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVsZW1l
bnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOwpAQCAtMjg5NCw3ICsyODk0LDcgQEAg
dm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRDb2xvcihjb25zdAogICAgICAgICAgICAgaW52
YWxpZGF0ZUNhcmV0UmVjdCgpOwogICAgIH0KIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlICJDb2xvci5oIgogI2VuZGlmCiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZUNvbnRh
aW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbnN0OwpAQCAtMzYyLDcgKzM2Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3BlbmRpbmdTZWxlY3Rpb25VcGRhdGUgOiAxOwogICAgIGJvb2wgbV9hbHdh
eXNBbGlnbkN1cnNvck9uU2Nyb2xsV2hlblJldmVhbGluZ1NlbGVjdGlvbiA6IDE7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fdXBkYXRl
QXBwZWFyYW5jZUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9jYXJldEJsaW5rcyA6IDE7CiAgICAg
Q29sb3IgbV9jYXJldENvbG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjZW5kaWYKIApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoCiAgICAgbV9ub2RlLT5pbnNl
cnREYXRhKG1fb2Zmc2V0LCBtX3RleHQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXaHkgd291bGQgcmVhcHBseSBiZSBpT1Mt
c3BlY2lmaWM/CiB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNv
bW1hbmQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRJbnRvVGV4dE5vZGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Y2xv
c2VUeXBpbmcoRnJhbWUqIGYKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmNsb3NlVHlwaW5n
KCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlv
bklmT3BlbkZvck1vcmVUeXBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBuZXdTZWxlY3Rpb24pCiB7CiAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlw
aW5nQ29tbWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoKmZyYW1l
KSkgewpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGUKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzID0gc3RhcnQucHJldmlvdXMoKTsKICAgICBpZiAocHJldmlvdXMuaXNOb3ROdWxs
KCkpIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChwcmV2aW91cywgTGVmdFdvcmRJ
Zk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDIgPSBzdGFydE9mV29yZChz
dGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBpZiAocDEgIT0gcDIpIHsKQEAg
LTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRl
CiAgICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIo
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb21tYW5kVHlwZSk7Ci0gICAgICAgIC8v
IElmIHRoaXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZPUk0oSU9TKSBjb2RlIGNvdWxkIGJl
IHJlbW92ZWQ6CisgICAgICAgIC8vIElmIHRoaXMgYnVnIGdldHMgZml4ZWQsIHRoaXMgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgY29kZSBjb3VsZCBiZSByZW1vdmVkOgogICAgICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNzI1OTYxMT4gV29yZCBib3VuZGFyeSBjb2RlIG9uIGlQaG9uZSBnaXZlcyBkaWZm
ZXJlbnQgcmVzdWx0cyB0aGFuIGRlc2t0b3AKICAgICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNp
ZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKICAgICAgICAgVUNoYXIzMiBjID0gcHJldmlvdXMu
Y2hhcmFjdGVyQWZ0ZXIoKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
Om1hcmtNaXNzcGVsbGluZ3NBZnRlCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwMiA9IHN0YXJ0
T2ZXb3JkKHN0YXJ0LCBzdGFydFdvcmRTaWRlKTsKICAgICAgICAgaWYgKHAxICE9IHAyKQogICAg
ICAgICAgICAgZnJhbWUuZWRpdG9yKCkubWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KHAxLCBlbmRpbmdTZWxlY3Rpb24oKSwgZmFsc2UpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfQogfQogCkBAIC03MzUsNyAr
NzM1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleAogICAgIAog
ICAgIEFTU0VSVCghc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpOwogICAgIGlmIChzZWxlY3Rp
b25Ub0RlbGV0ZS5pc05vbmUoKSkgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciB0aGlzIGJ1ZzoKICAgICAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzQ2NTM3NTU+IFVJS2l0IHRleHQgd2lkZ2V0cyBzaG91bGQgdXNl
IFdlYktpdCBlZGl0aW5nIEFQSSB0byBtYW5pcHVsYXRlIHRleHQKICAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKQEAgLTg0Miw3ICs4NDIs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAgICAgCiAgICAg
QVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7CiAgICAgaWYgKHNlbGVjdGlvblRv
RGVsZXRlLmlzTm9uZSgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIHRoaXMgYnVnOgogICAgICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNDY1Mzc1NT4gVUlLaXQgdGV4dCB3aWRnZXRzIHNob3VsZCB1c2UgV2Vi
S2l0IGVkaXRpbmcgQVBJIHRvIG1hbmlwdWxhdGUgdGV4dAogICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwpAQCAtODc4LDcgKzg3OCw3IEBA
IHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wKICAgICB0eXBpbmdBZGRl
ZFRvT3BlbkNvbW1hbmQoRGVsZXRlU2VsZWN0aW9uKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgRnJpZW5kbHlFZGl0Q29tbWFuZCA6IHB1
YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRpbmdTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoRG9jdW1l
bnQmLCBPcHRpb25zKTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJ
blF1b3RlZENvbnRlbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBjbG9zZVR5cGluZyhG
cmFtZSopOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHN0YXRpYyB2b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9w
ZW5Gb3JNb3JlVHlwaW5nKEZyYW1lKiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogI2VuZGlm
CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBl
KFRleHRDb21wb3NpdGlvblR5cGUgdHlwZSkgeyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0K
ICAgICB2b2lkIHNldElzQXV0b2NvbXBsZXRpb24oYm9vbCBpc0F1dG9jb21wbGV0aW9uKSB7IG1f
aXNBdXRvY29tcGxldGlvbiA9IGlzQXV0b2NvbXBsZXRpb247IH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9u
T25MYXN0SW5zZXJ0Q29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pOwog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRl
dGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBGbG9hdFJl
Y3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFS
YW5nZSk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqZGV0ZWN0
Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JU
eXBlcywgTlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5CZVBy
ZXNlbnRlZEJ5RGF0YURldGVjdG9ycyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc0RhdGFEZXRlY3RvckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZGF0YURldGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZXRhaW5QdHI8RERBY3Rp
b25Db250ZXh0PiBEYXRhRGV0ZWN0aW9uCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgRGF0YURl
dGVjdGlvbjo6Y2FuQmVQcmVzZW50ZWRCeURhdGFEZXRlY3RvcnMoY29uc3QgVVJMJiB1cmwpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmli
dXRlc0NvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNB
dHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29h
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Zv
bnRTaGFkb3dDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9y
dCAiQ29sb3JDb2NvYS5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRM
aW5rLmg+CiAjZW5kaWYKIApAQCAtMzksNyArMzksNyBAQCBSZXRhaW5QdHI8TlNTaGFkb3c+IEZv
bnRTaGFkb3c6OmNyZWF0ZVNoCiB7CiAjaWYgVVNFKEFQUEtJVCkKICAgICBhdXRvIHNoYWRvdyA9
IGFkb3B0TlMoW05TU2hhZG93IG5ld10pOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW1BBTDo6Z2V0X1VJ
S2l0X05TU2hhZG93Q2xhc3MoKSBuZXddKTsKICNlbmRpZgogICAgIFtzaGFkb3cgc2V0U2hhZG93
Q29sb3I6cGxhdGZvcm1Db2xvcihjb2xvcildOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIGNsYXNzIFJhbmdlOwogZW51bSBjbGFzcyBJbmNsdWRlSW1hZ2VzSW5BdHRy
aWJ1dGVkU3RyaW5nIHsgWWVzLCBObyB9OwogICAgIAogV0VCQ09SRV9FWFBPUlQgTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdlJik7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFdFQkNPUkVfRVhQT1JUIE5TQXR0
cmlidXRlZFN0cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmLCBJ
bmNsdWRlSW1hZ2VzSW5BdHRyaWJ1dGVkU3RyaW5nID0gSW5jbHVkZUltYWdlc0luQXR0cmlidXRl
ZFN0cmluZzo6WWVzKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAKQEAgLTExOSw3ICsxMTks
NyBAQCBTT0ZUX0xJTktfQ0xBU1MoVUlGb3VuZGF0aW9uLCBOU1RleHRUYWIpCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBV
SUZvbnRUcmFpdFBsYWluICAgICAgID0gMHgwMDAwMDAwMCwKQEAgLTI4MSw3ICsyODEsNyBAQCAt
ICh2b2lkKXNldFRhYlN0b3BzOihOU0FycmF5ICopYXJyYXk7CiAKIEBpbnRlcmZhY2UgTlNUZXh0
QXR0YWNobWVudCA6IE5TT2JqZWN0CiAtIChpZClpbml0V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVX
cmFwcGVyICopZmlsZVdyYXBwZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kczsKIEBwcm9wZXJ0eShy
ZXRhaW4sIG5vbmF0b21pYykgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXI7CiAjZW5kaWYKQEAg
LTQ5Niw3ICs0OTYsNyBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKkhUTUxDb252ZXJ0ZXI6OmNvbnZl
CiAgICAgcmV0dXJuIFtbX2F0dHJTdHIgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLy8gUmV0dXJucyB0aGUg
Zm9udCB0byBiZSB1c2VkIGlmIHRoZSBOU0ZvbnRBdHRyaWJ1dGVOYW1lIGRvZXNuJ3QgZXhpc3QK
IHN0YXRpYyBOU0ZvbnQgKldlYkRlZmF1bHRGb250KCkKIHsKQEAgLTUxNiw3ICs1MTYsNyBAQCBz
dGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiBzdGF0aWMgUGxhdGZvcm1Gb250ICpfZm9u
dEZvck5hbWVBbmRTaXplKE5TU3RyaW5nICpmb250TmFtZSwgQ0dGbG9hdCBzaXplLCBOU011dGFi
bGVEaWN0aW9uYXJ5ICpjYWNoZSkKIHsKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQgPSBbY2FjaGUg
b2JqZWN0Rm9yS2V5OmZvbnROYW1lXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoZm9udCkKICAgICAgICAgcmV0dXJuIFtmb250IGZvbnRXaXRo
U2l6ZTpzaXplXTsKIApAQCAtNTMwLDcgKzUzMCw3IEBAIHN0YXRpYyBQbGF0Zm9ybUZvbnQgKl9m
b250Rm9yTmFtZUFuZFNpemUKICAgICBmb250ID0gW2ZvbnRNYW5hZ2VyIGZvbnRXaXRoRmFtaWx5
OmZvbnROYW1lIHRyYWl0czowIHdlaWdodDowIHNpemU6c2l6ZV07CiAjZW5kaWYKICAgICBpZiAo
IWZvbnQpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgTlNBcnJheSAqYXZhaWxhYmxlRmFtaWx5TmFtZXMgPSBbUGxhdGZvcm1Gb250Q2xhc3Mg
ZmFtaWx5TmFtZXNdOwogI2Vsc2UKICAgICAgICAgTlNBcnJheSAqYXZhaWxhYmxlRmFtaWx5TmFt
ZXMgPSBbZm9udE1hbmFnZXIgYXZhaWxhYmxlRm9udEZhbWlsaWVzXTsKQEAgLTU0Myw3ICs1NDMs
NyBAQCBzdGF0aWMgUGxhdGZvcm1Gb250ICpfZm9udEZvck5hbWVBbmRTaXplCiAgICAgICAgIHdo
aWxlIChkaXZpZGluZ1JhbmdlLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgIE5TU3RyaW5nICpm
YW1pbHlOYW1lID0gW2ZvbnROYW1lIHN1YnN0cmluZ1RvSW5kZXg6ZGl2aWRpbmdSYW5nZS5sb2Nh
dGlvbl07CiAgICAgICAgICAgICBpZiAoW2F2YWlsYWJsZUZhbWlseU5hbWVzIGNvbnRhaW5zT2Jq
ZWN0OmZhbWlseU5hbWVdKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmZhY2VOYW1lID0gW2ZvbnROYW1lIHN1
YnN0cmluZ0Zyb21JbmRleDooZGl2aWRpbmdSYW5nZS5sb2NhdGlvbiArIGRpdmlkaW5nUmFuZ2Uu
bGVuZ3RoKV07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZmFtaWx5TWVtYmVyRmFjZU5hbWVz
ID0gW1BsYXRmb3JtRm9udENsYXNzIGZvbnROYW1lc0ZvckZhbWlseU5hbWU6ZmFtaWx5TmFtZV07
CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZmFtaWx5TWVtYmVyRmFjZU5hbWUgaW4g
ZmFtaWx5TWVtYmVyRmFjZU5hbWVzKSB7CkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIFBsYXRm
b3JtRm9udCAqX2ZvbnRGb3JOYW1lQW5kU2l6ZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghZm9udCkKICAgICAgICAgZm9udCA9IFtQbGF0Zm9ybUZvbnRDbGFzcyBzeXN0ZW1Gb250T2ZT
aXplOnNpemVdOwogI2Vsc2UKQEAgLTg0Myw3ICs4NDMsNyBAQCBib29sIEhUTUxDb252ZXJ0ZXJD
YWNoZXM6OmZsb2F0UHJvcGVydHlWCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJpbmcgKl9OU0Zp
cnN0UGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TU2VhcmNoUGF0aERpcmVjdG9yeSBkaXJl
Y3RvcnksIE5TU2VhcmNoUGF0aERvbWFpbk1hc2sgZG9tYWluTWFzaywgQk9PTCBleHBhbmRUaWxk
ZSkKIHsKICAgICBOU0FycmF5ICphcnJheSA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5E
b21haW5zKGRpcmVjdG9yeSwgZG9tYWluTWFzaywgZXhwYW5kVGlsZGUpOwpAQCAtOTAwLDcgKzkw
MCw3IEBAIHN0YXRpYyBpbmxpbmUgTlNTaGFkb3cgKl9zaGFkb3dGb3JTaGFkb3cKICAgICAgICAg
ICAgICAgICAgICAgc3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgICAgICAgICAg
ICAgIENHRmxvYXQgc2hhZG93SGVpZ2h0ID0gW1tzaGFkb3dTdHlsZSBzdWJzdHJpbmdXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShzcGFjZVJhbmdlKSwgc2Vjb25kUmFuZ2UubG9jYXRp
b24gLSBOU01heFJhbmdlKHNwYWNlUmFuZ2UpKV0gZmxvYXRWYWx1ZV07CiAgICAgICAgICAgICAg
ICAgLy8gSSBkb24ndCBrbm93IHdoeSB3ZSBoYXZlIHRoaXMgZGlmZmVyZW5jZSBiZXR3ZWVuIHRo
ZSB0d28gcGxhdGZvcm1zLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldC5oZWlnaHQgPSBzaGFkb3dIZWlnaHQ7
CiAjZWxzZQogICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldC5oZWlnaHQgPSAtc2hhZG93SGVp
Z2h0OwpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnQoRWxl
bWVudCYgZWxlbQogTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqYXR0cnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRm9udE1hbmFnZXIgKmZv
bnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwogI2VuZGlmCiAK
QEAgLTEwNTIsNyArMTA1Miw3IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0
ZWRBdHQKICAgICBpZiAoZm9udFNpemUgPD0gMC4wKQogICAgICAgICBmb250U2l6ZSA9IGRlZmF1
bHRGb250U2l6ZTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoYWN0dWFsRm9udCkKICAgICAgICAgZm9udCA9IFthY3R1YWxGb250IGZv
bnRXaXRoU2l6ZTpmb250U2l6ZV07CiAjZWxzZQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgTlNEaWN0
aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dAogICAgICAgICBTdHJpbmcgZm9udFN0
eWxlID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlG
b250U3R5bGUpOwogICAgICAgICBpZiAoZm9udFN0eWxlID09ICJpdGFsaWMiIHx8IGZvbnRTdHls
ZSA9PSAib2JsaXF1ZSIpIHsKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250
ID0gZm9udDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgICAgIGZvbnQgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZm9udFdpdGhGYW1pbHlOYW1lOltm
b250IGZhbWlseU5hbWVdIHRyYWl0czpVSUZvbnRUcmFpdEl0YWxpYyBzaXplOltmb250IHBvaW50
U2l6ZV1dOwogI2Vsc2UKICAgICAgICAgICAgIGZvbnQgPSBbZm9udE1hbmFnZXIgY29udmVydEZv
bnQ6Zm9udCB0b0hhdmVUcmFpdDpOU0l0YWxpY0ZvbnRNYXNrXTsKQEAgLTEwODIsNyArMTA4Miw3
IEBAIE5TRGljdGlvbmFyeSAqSFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHQKICAgICAgICAgaWYg
KGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IGZvbnRXZWlnaHQudG9JbnQoKSA+PSA3
MDApIHsKICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUgd2VpZ2h0IHByb3Blcmx5IHVzaW5nIE5T
Rm9udE1hbmFnZXIKICAgICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250ID0gZm9u
dDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
ICAgIGZvbnQgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZm9udFdpdGhGYW1pbHlOYW1lOltmb250IGZh
bWlseU5hbWVdIHRyYWl0czpVSUZvbnRUcmFpdEJvbGQgc2l6ZTpbZm9udCBwb2ludFNpemVdXTsK
ICNlbHNlCiAgICAgICAgICAgICBmb250ID0gW2ZvbnRNYW5hZ2VyIGNvbnZlcnRGb250OmZvbnQg
dG9IYXZlVHJhaXQ6TlNCb2xkRm9udE1hc2tdOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgTlNEaWN0
aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dAogICAgICAgICAgICAgaWYgKCFmb250
KQogICAgICAgICAgICAgICAgIGZvbnQgPSBvcmlnaW5hbEZvbnQ7CiAgICAgICAgIH0KLSNpZiAh
UExBVEZPUk0oSU9TKSAvLyBJSkI6IE5vIHNtYWxsIGNhcHMgc3VwcG9ydCBvbiBpT1MKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkgLy8gSUpCOiBObyBzbWFsbCBjYXBzIHN1cHBvcnQgb24gaU9T
CiAgICAgICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50Q2FwcykgPT0gInNtYWxsLWNhcHMiKSB7CiAgICAgICAgICAgICAv
LyA/Pz8gc3ludGhlc2l6ZSBzbWFsbC1jYXBzIGlmIFtmb250IGlzRXF1YWw6b3JpZ2luYWxGb250
XQogICAgICAgICAgICAgTlNGb250ICpvcmlnaW5hbEZvbnQgPSBmb250OwpAQCAtMTM4NSw3ICsx
Mzg1LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZQogICAgICAg
ICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1l
V2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgfQogICAgIH0KLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZmlsZVdyYXBw
ZXIgJiYgIW5vdEZvdW5kKSB7CiAgICAgICAgIGZpbGVXcmFwcGVyID0gZmlsZVdyYXBwZXJGb3JV
UkwoZGF0YVNvdXJjZSwgdXJsKTsKICAgICAgICAgaWYgKHVzZVBsYWNlaG9sZGVyICYmIGZpbGVX
cmFwcGVyICYmIFtbW1tmaWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV0gcGF0aEV4dGVuc2lv
bl0gbG93ZXJjYXNlU3RyaW5nXSBoYXNQcmVmaXg6QCJodG0iXSkKQEAgLTE0MTYsNyArMTQxNiw3
IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGUKICAgICBpZiAoZmls
ZVdyYXBwZXIgfHwgdXNlUGxhY2Vob2xkZXIpIHsKICAgICAgICAgTlNVSW50ZWdlciB0ZXh0TGVu
Z3RoID0gW19hdHRyU3RyIGxlbmd0aF07CiAgICAgICAgIFJldGFpblB0cjxOU1RleHRBdHRhY2ht
ZW50PiBhdHRhY2htZW50ID0gYWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0QXR0YWNobWVudCBhbGxv
Y10gaW5pdFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBlcl0pOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBmbG9hdCB2ZXJ0aWNhbEFsaWduID0g
MC4wOwogICAgICAgICBfY2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQs
IENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbik7CiAgICAgICAgIGF0dGFj
aG1lbnQuZ2V0KCkuYm91bmRzID0gQ0dSZWN0TWFrZSgwLCAodmVydGljYWxBbGlnbiAvIDEwMCkg
KiBlbGVtZW50LmNsaWVudEhlaWdodCgpLCBlbGVtZW50LmNsaWVudFdpZHRoKCksIGVsZW1lbnQu
Y2xpZW50SGVpZ2h0KCkpOwpAQCAtMTQyNSwxMiArMTQyNSwxMiBAQCBCT09MIEhUTUxDb252ZXJ0
ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlCiAgICAgICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2Ug
PSBOU01ha2VSYW5nZSh0ZXh0TGVuZ3RoLCAwKTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
czsKICAgICAgICAgaWYgKGZpbGVXcmFwcGVyKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgIGlmIChpZ25vcmVPcmllbnRhdGlvbikK
ICAgICAgICAgICAgICAgICBbYXR0YWNobWVudCBzZXRJZ25vcmVzT3JpZW50YXRpb246WUVTXTsK
ICNlbmRpZgogICAgICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICAgICAgW2F0dGFjaG1lbnQgcmVsZWFzZV07CiAgICAgICAg
ICAgICBOU1VSTCAqbWlzc2luZ0ltYWdlVVJMID0gW193ZWJLaXRCdW5kbGUoKSBVUkxGb3JSZXNv
dXJjZTpAIm1pc3NpbmdfaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJ0aWZmIl07CiAgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1pc3NpbmdJbWFnZVVSTCAhPSBuaWwsICJVbmFibGUgdG8g
ZmluZCBtaXNzaW5nX2ltYWdlLnRpZmYhIik7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lkIEhU
TUxDb252ZXJ0ZXI6Ol9wcm9jZXNzTWV0YUVsZW1lbnRXCiAgICAgICAgICAgICBbX2RvY3VtZW50
QXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TQ29udmVydGVkRG9jdW1lbnRBdHRyaWJ1dGVdOwog
ICAgICAgICAgICAgW19kb2N1bWVudEF0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTp2ZXJzaW9uTnVtYmVyXSBmb3JLZXk6TlNDb2NvYVZlcnNpb25Eb2N1bWVudEF0dHJp
YnV0ZV07CiAgICAgICAgIH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB9IGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW0AiR2VuZXJhdG9yIiBjb21w
YXJlOm5hbWUgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0pIHsKICAgICAgICAga2V5
ID0gTlNHZW5lcmF0b3JEb2N1bWVudEF0dHJpYnV0ZTsKICNlbmRpZgpAQCAtMTY4Niw3ICsxNjg2
LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc01ldGFFbGVtZW50VwogICAgICAgICAg
ICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6TlNNb2RpZmljYXRp
b25UaW1lRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICB9CiAgICAgfQotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYgKE5TT3JkZXJlZFNh
bWUgPT0gW0AiRGlzcGxheU5hbWUiIGNvbXBhcmU6bmFtZSBvcHRpb25zOk5TQ2FzZUluc2Vuc2l0
aXZlU2VhcmNoXSB8fCBOU09yZGVyZWRTYW1lID09IFtAIkluZGV4VGl0bGUiIGNvbXBhcmU6bmFt
ZSBvcHRpb25zOk5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoXSkKICAgICAgICAga2V5ID0gTlNEaXNw
bGF5TmFtZURvY3VtZW50QXR0cmlidXRlOwogICAgIGVsc2UgaWYgKE5TT3JkZXJlZFNhbWUgPT0g
W0Aicm9ib3RzIiBjb21wYXJlOm5hbWUgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaF0p
IHsKQEAgLTE4ODAsNyArMTg4MCw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVt
ZW50KEVsZW0KICAgICAgICAgICAgIE5TVVJMICp1cmwgPSBlbGVtZW50LmRvY3VtZW50KCkuY29t
cGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwog
ICAgICAgICAgICAgaWYgKCF1cmwpCiAgICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93ZWJf
VVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6
W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVsYXRp
dmVUb1VSTDpfYmFzZVVSTF07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBOTzsKICNlbHNl
CiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBZRVM7CkBAIC0yMzk0LDcg
KzIzOTQsNyBAQCBOb2RlKiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNoZUFuY2VzdG9yCiAgICAg
cmV0dXJuIGNvbW1vbkFuY2VzdG9yOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyRm9y
VVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQogewpAQCAtMjQ1Nyw3
ICsyNDU3LDcgQEAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbQogICAg
IHJldHVybiBjb252ZXJ0ZXIuY29udmVydCgpOwogfQogICAgIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFRoaXMgZnVuY3Rpb24gdXNlcyBUZXh0
SXRlcmF0b3IsIHdoaWNoIG1ha2VzIG9mZnNldHMgaW4gaXRzIHJlc3VsdCBjb21wYXRpYmxlIHdp
dGggSFRNTCBlZGl0aW5nLgogTlNBdHRyaWJ1dGVkU3RyaW5nICplZGl0aW5nQXR0cmlidXRlZFN0
cmluZ0Zyb21SYW5nZShSYW5nZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXNJbkF0dHJpYnV0ZWRTdHJp
bmcgaW5jbHVkZU9yU2tpcEltYWdlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjcsMjMgKzY3LDIzIEBACiAjaW5jbHVkZSAiTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZS5oIgogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKQogQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKCkKIC0gKE5T
U3RyaW5nICopX2h0bWxEb2N1bWVudEZyYWdtZW50U3RyaW5nOihOU1JhbmdlKXJhbmdlIGRvY3Vt
ZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdCBzdWJyZXNvdXJjZXM6KE5TQXJyYXkg
Kiopc3VicmVzb3VyY2VzOwogQGVuZAotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJLaXRMZWdhY3kp
CiAjZWxpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFdl
YktpdCwgV2ViS2l0TGVnYWN5KQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkKKyNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAw
MDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEzMDApCiBTT0ZUX0xJTksoV2ViS2l0TGVnYWN5LCBfV2ViQ3JlYXRlRnJhZ21lbnQsIHZv
aWQsIChXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nLCBXZWJDb3JlOjpGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KSwgKGRvY3VtZW50LCBz
dHJpbmcsIHJlc3VsdCkpCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKIAogc3RhdGljIE5TRGljdGlvbmFyeSAq
YXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKQEAgLTEwOCw3ICsx
MDgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmliCiAgICAgICAg
IFtleGNsdWRlZEVsZW1lbnRzIGFkZE9iamVjdDpAIm9iamVjdCJdOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZSA9IEAiRXhjbHVk
ZWRFbGVtZW50cyI7CiAjZW5kaWYKIApAQCAtNzQwLDcgKzc0MCw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIHNl
bGVjdGlvbiBhbmQgY2hhbmdpbmcgdGhlIGJlaGF2aW9yLgogICAgIGlmICghZnJhbWUuZWRpdG9y
KCkuY2xpZW50KCktPmhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkpIHsKICAgICAgICAgaWYg
KHJlYWRQbGFpblRleHQoWyhOU1VSTCAqKXVybCBhYnNvbHV0ZVN0cmluZ10pKQpAQCAtNzQ5LDcg
Kzc0OSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwKIAogICAg
IGlmIChbKE5TVVJMICopdXJsIGlzRmlsZVVSTF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRv
IGFuY2hvciA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElP
Uy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0Rp
Y3RhdGlvbkNvbW1hbmRJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGF0aW9uQ29tbWFuZElPUy5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpAQCAtNzks
NCArNzksNCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3Rh
dGlvbkNvbW1hbmRJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9EaWN0YXRpb25Db21tYW5kSU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTIsNCArNTIsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTM5MCw0
ICszOTAsNCBAQCB2b2lkIEVkaXRvcjo6ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VyCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RnJhbWVTZWxlY3Rpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHkK
ICAgICAgICAgICAgIGNhY2hlLT5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKG1fc2Vs
ZWN0aW9uLnN0YXJ0KCksIGludGVudCwgbV9zZWxlY3Rpb24pOwogICAgIH0KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gaWYgem9vbSBmZWF0
dXJlIGlzIGVuYWJsZWQsIGluc2VydGlvbiBwb2ludCBjaGFuZ2VzIHNob3VsZCB1cGRhdGUgdGhl
IHpvb20KICAgICBpZiAoIVVBWm9vbUVuYWJsZWQoKSB8fCAhbV9zZWxlY3Rpb24uaXNDYXJldCgp
KQogICAgICAgICByZXR1cm47CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246
Om5vdGlmeUFjY2Vzc2liaWxpdHkKICAgICBDR1JlY3QgY2dWaWV3UmVjdCA9IE5TUmVjdFRvQ0dS
ZWN0KG5zVmlld1JlY3QpOwogCiAgICAgVUFab29tQ2hhbmdlRm9jdXMoJmNnVmlld1JlY3QsICZj
Z0NhcmV0UmVjdCwga1VBWm9vbUZvY3VzVHlwZUluc2VydGlvblBvaW50KTsKLSNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2ltcG9ydCAiRmlsZVN5c3RlbS5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0
IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgfHwg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2VuZGlmCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBDYWNoZWRGcmFtZUJhc2U6OnJl
c3RvcmUoKQogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2RvY3Vt
ZW50ID09IGZyYW1lLmRvY3VtZW50KCkpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2lzTWFpbkZyYW1lKSB7CiAgICAgICAg
IGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hl
ZEZyYW1lKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUo
RnJhbWUmIGZyYW1lKQogICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcg
Q2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3VtZW50TG9h
ZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKG1faXNNYWluRnJhbWUpIHsKICAgICAgICAgaWYgKERPTVdpbmRvdyog
ZG9tV2luZG93ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIGlmIChk
b21XaW5kb3ctPnNjcm9sbEV2ZW50TGlzdGVuZXJDb3VudCgpICYmIGZyYW1lLnBhZ2UoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2VuZGlm
CiAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSYgcGFn
ZSkKICAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIGRvbid0IHN1cHBvcnQgcGFnZXMgdy8gZnJh
bWVzIGluIHRoZSBiL2YgY2FjaGUuICBUaGlzIG1heSBuZWVkIHRvIGJlIHR3ZWFrZWQgd2hlbiB3
ZSBhZGQgc3VwcG9ydCBmb3IgdGhhdC4KICAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0g
cGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpOwog
ICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkRWxlbWVu
dCgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgZm9jdXNlZCBub2RlcyBjaGFuZ2luZyBzY3JvbGwgcG9zaXRp
b24gd2hlbiByZXN0b3JpbmcgZnJvbSB0aGUgY2FjaGUKICAgICAgICAgLy8gYXMgaXQgY2FuIGNh
dXNlIHVnbHkganVtcHMgYmVmb3JlIHdlIG1hbmFnZSB0byByZXN0b3JlIHRoZSBjYWNoZWQgcG9z
aXRpb24uCiAgICAgICAgIHBhZ2UubWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuc3VwcHJlc3NTY3Jv
bGxpbmcoKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIENhY2hlZFBhZ2U6OnJlc3RvcmUoUGFn
ZSYgcGFnZSkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmUpOwotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoZnJhbWVWaWV3
KQogICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcoaGFkUHJvaGli
aXRzU2Nyb2xsaW5nKTsKICAgICAgICAgcGFnZS5tYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXN0
b3JlU2Nyb2xsaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgSGlzdG9yeUl0
ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEhpCiAgICAgLCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIo
aXRlbS5tX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIpCiAgICAgLCBtX2Zvcm1Db250ZW50VHlwZShp
dGVtLm1fZm9ybUNvbnRlbnRUeXBlKQogICAgICwgbV9wcnVuaW5nUmVhc29uKFBydW5pbmdSZWFz
b246Ok5vbmUpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLCBtX29ic2N1cmVkSW5zZXRzKGl0ZW0ubV9vYnNjdXJlZEluc2V0cykKICAgICAsIG1fc2Nh
bGUoaXRlbS5tX3NjYWxlKQogICAgICwgbV9zY2FsZUlzSW5pdGlhbChpdGVtLm1fc2NhbGVJc0lu
aXRpYWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNlbmRp
ZgogCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOiAKICAgICBpbnQgc2hvd1RyZWVXaXRoSW5k
ZW50KHVuc2lnbmVkIGluZGVudExldmVsKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmxvYXRSZWN0IGV4cG9zZWRDb250
ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3NlZENvbnRlbnRSZWN0OyB9CiAgICAgdm9p
ZCBzZXRFeHBvc2VkQ29udGVudFJlY3QoRmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCkgeyBt
X2V4cG9zZWRDb250ZW50UmVjdCA9IGV4cG9zZWRDb250ZW50UmVjdDsgfQogCkBAIC0yNjgsNyAr
MjY4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gbV9jYWNo
ZWRQYWdlOwogICAgIFBydW5pbmdSZWFzb24gbV9wcnVuaW5nUmVhc29uOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmxvYXRSZWN0IG1fZXhwb3Nl
ZENvbnRlbnRSZWN0OwogICAgIEludFJlY3QgbV91bm9ic2N1cmVkQ29udGVudFJlY3Q7CiAgICAg
RmxvYXRTaXplIG1fbWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlczsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBib29sIGNhbkNhY2hlUGFnZShQYWdlJiBwYWdlKQogICAg
ICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6aXNEaXNhYmxlZEtleSgpKTsKICAgICAg
ICAgaXNDYWNoZWFibGUgPSBmYWxzZTsKICAgICB9Ci0jaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6
aXNBY3RpdmVBdCgmcGFnZSkpIHsKICAgICAgICAgUENMT0coIiAgIC1QYWdlIGlzIHVzaW5nIERl
dmljZU1vdGlvbiIpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3Nh
Z2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZGV2aWNl
TW90aW9uS2V5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQs
NyArMTk0LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlTWlzcwogICAg
IHJldHVybiBlbGVtZW50KCktPmlzUmVxdWlyZWQoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBj
b25zdAogewogICAgIEFTU0VSVChlbGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSwxMyArNTEsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
ID0gMDsKICAgICBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGlzS2V5Ym9h
cmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1
YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCA9IDA7CiAjZW5kaWYKICAg
ICBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAs
NyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgCiBib29sIENvbG9y
SW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAogewog
ICAgIEFTU0VSVChlbGVtZW50KCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChlbGVtZW50KCktPmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEhUTUxB
cHBsZXRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURf
UEFSQU0oY3JlYXRlUGx1Z2lucyk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBJdCdzIHNhZG5lc3Mg
dGhhdCB3ZSBoYXZlIHRoaXMgc3BlY2lhbCBjYXNlIGhlcmUuCkBAIC0xNzgsNyArMTc4LDcgQEAg
dm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KENyZQogICAgIEFTU0VSVChmcmFt
ZSk7CiAKICAgICByZW5kZXJlci0+c2V0V2lkZ2V0KGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxv
YWRlcigpLmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQocm91bmRlZEludFNpemUoTGF5b3V0U2l6ZShj
b250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpKSwgKnRoaXMsIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIH0KIAogYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6Y2FuRW1iZWRKYXZhKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICBib29sIHNob3VsZFNl
bGVjdE9uTW91c2VEb3duKCkgZmluYWwgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBpbnQgZGVmYXVs
dEhlaWdodCA9IDE1MDsKIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBw
aXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQKIC8vIHJlYWNoZXMg
dGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1h
eGltdW0gZGltZW5zaW9ucywKIC8vIGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBj
YW52YXMgc2l6ZS4gVGhlIG1heGltdW0gY2FudmFzIHNpemUgaXMgaW4gZGV2aWNlIHBpeGVscy4K
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNvbnN0IHVuc2ln
bmVkIG1heENhbnZhc0FyZWEgPSA0MDk2ICogNDA5NjsKICNlbHNlCiBjb25zdCB1bnNpZ25lZCBt
YXhDYW52YXNBcmVhID0gMTYzODQgKiAxNjM4NDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMg
aW5saW5lIHNpemVfdCBtYXhBY3RpdmVQaXhlbE1lbW9yCiAgICAgc3RhdGljIHNpemVfdCBtYXhQ
aXhlbE1lbW9yeTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbWF4UGl4ZWxNZW1vcnkgPSByYW1TaXplKCkgLyA0Owog
I2Vsc2UKICAgICAgICAgbWF4UGl4ZWxNZW1vcnkgPSBzdGQ6Om1heChyYW1TaXplKCkgLyA0LCAy
MTUxICogTUIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudAogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUxpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRq
dXN0LCBDU1NWYWx1ZU5vbmUpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzA0LDcgKzcwNCw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6Y2hpbGRT
aG91bGRDcmVhdGUKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IFRoaXMg
aXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzcyNTE1OD4uIFdlIHNob3VsZCBm
aW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGUgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGxvZ2ljLgog
Ym9vbCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0NCw3ICsx
NjQ0LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1N0ZXBwYWJsZSgpIGNvbgogICAgIHJl
dHVybiBtX2lucHV0VHlwZS0+aXNTdGVwcGFibGUoKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogRGF0ZUNvbXBvbmVudHM6OlR5cGUgSFRNTElucHV0
RWxlbWVudDo6ZGF0ZVR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZGF0
ZVR5cGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNlbmRpZgogCkBAIC0xMzIs
NyArMTMyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNUaW1lRmllbGQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzV2Vla0ZpZWxkKCkgY29uc3Q7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEYXRlQ29t
cG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDcgKzEyMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjZW5kaWYKQEAgLTE2NCw3ICsxNjQsNyBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5k
aWYKIApAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5p
dGlhbGl6YXQKICAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0
aW9uKE1lZGlhRWxlbWVudFNlc3Npb246Ok92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZv
ck1haW5Db250ZW50KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoIWRvY3VtZW50LnNldHRpbmdzKCkudmlkZW9QbGF5YmFja1Jl
cXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhZG9jdW1lbnQuc2V0dGluZ3MoKS5hdWRpb1BsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgIC8vIFJlbGF4IFJlcXVpcmVVc2VyR2Vz
dHVyZUZvckZ1bGxzY3JlZW4gd2hlbiB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSBh
bmQgYXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUgaXMgbm90IHNldDoKICAgICAgICAg
bV9tZWRpYVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CkBAIC03MDYsNyArNzA2LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bQogICAgIGlmIChtX2lz
V2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQuYWRkTWVkaWFDYW5T
dGFydExpc3RlbmVyKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tz
KHRoaXMpOwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aERvYwogICAgIGlmIChtX2lzV2FpdGluZ1VudGls
TWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlTWVkaWFDYW5TdGFydExpc3Rl
bmVyKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBkb2N1bWVudC51bnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7
CiAgICAgZG9jdW1lbnQudW5yZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENh
bGxiYWNrcyh0aGlzKTsKICNlbmRpZgpAQCAtMzY3OSw3ICszNjc5LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSFRNTE1lZGlhRWxlbWVudDo6c2V0VgogICAgIGlmICghKHZvbHVtZSA+PSAwICYmIHZv
bHVtZSA8PSAxKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChtX3ZvbHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTM4NDYsNyAr
Mzg0Niw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpuZXh0U2NhblJhdGUoKQogICAgIGRv
dWJsZSByYXRlID0gc3RkOjptaW4oU2Nhbk1heGltdW1SYXRlLCBmYWJzKHBsYXliYWNrUmF0ZSgp
ICogMikpOwogICAgIGlmIChtX3NjYW5EaXJlY3Rpb24gPT0gQmFja3dhcmQpCiAgICAgICAgIHJh
dGUgKj0gLTE7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcmF0ZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KHJhdGUsIG1pbkZhc3RSZXZlcnNlUmF0ZSgpKSwg
bWF4RmFzdEZvcndhcmRSYXRlKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIHJhdGU7CkBAIC00Njgz
LDcgKzQ2ODMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAg
ICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgog
ICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKSB7CiAgICAgICAgIG1fbmV4
dENoaWxkTm9kZVRvQ29uc2lkZXIgPSAmc291cmNlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFMb2Fk
aW5nUGVybWl0dGVkKCkpCiAjZW5kaWYKICAgICAgICAgICAgIHNlbGVjdE1lZGlhUmVzb3VyY2Uo
KTsKQEAgLTUwNTQsNyArNTA1NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdp
bmVXYXNVcGQKICAgICAgICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQobV9tZWRpYUtl
eXMtPmNkbUluc3RhbmNlKCkpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9w
bGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUpOwpA
QCAtNTI4NCw3ICs1Mjg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUo
KQogewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbmx5IHRoZSB1c2VyIGNhbiBj
aGFuZ2UgYXVkaW8gdm9sdW1lIHNvIHVwZGF0ZSB0aGUgY2FjaGVkIHZvbHVtZSBhbmQgcG9zdCB0
aGUgY2hhbmdlZCBldmVudC4KICAgICBmbG9hdCB2b2x1bWUgPSBtX3BsYXllci0+dm9sdW1lKCk7
CiAgICAgaWYgKG1fdm9sdW1lICE9IHZvbHVtZSkgewpAQCAtNTQ3Myw3ICs1NDczLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0
aGUgaU9TIGFuZCBub24taU9TIGNvZGUgKGJlbG93KS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19F
TVBUWSB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuOwog
I2Vsc2UKQEAgLTYxMzEsNyArNjEzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZv
clByZXBhcmVkRm8KICAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxFeGl0RnVsbHNjcmVl
bigpCiB7CkBAIC03MDMyLDcgKzcwMzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsCiAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFN0cmluZyBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllck5ldHdvcmtJbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpuZXR3b3JrSW50ZXJmYWNlTmFtZSgpOwpAQCAt
NzUzOSw3ICs3NTM5LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRp
dAogICAgICAgICByZXR1cm4gdGl0bGU7CiAKICAgICB0aXRsZSA9IG1fY3VycmVudFNyYy5ob3N0
KCkudG9TdHJpbmcoKTsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCF0aXRsZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHRpdGxlID0gZGVjb2RlSG9zdE5hbWUodGl0bGUpOwogI2VuZGlmCkBA
IC03Nzk2LDcgKzc3OTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZEJ1ZmZl
ckRhCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHVyZ2VCdWZmZXJlZERhdGFJZlBvc3NpYmxl
KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNz
dXJlKCkgJiYgbV9tZWRpYVNlc3Npb24tPmRhdGFCdWZmZXJpbmdQZXJtaXR0ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1ZpZGVvTGF5ZXJJbmxpbmUoKTsKICAgICB2b2lkIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xh
eWVyVG9JbmxpbmUoYm9vbCk7CiAgICAgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKLSNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtZWRpYVBsYXllclNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpOyB9CiAgICAgVmVjdG9yPFN0
cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92
ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgU3RyaW5nIG1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8
Q29va2llPiYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3RlbXBvcmFyaWx5QWxsb3dpbmdJbmxpbmVQbGF5YmFja0Fm
dGVyRnVsbHNjcmVlbiB7IGZhbHNlIH07CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5M
YXllcjsKICAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsKICAgICBNZWRpYVBs
YXllckVudW1zOjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5IHsgTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBlbHNlIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRhcmtNb2RlQ1NTRW5hYmxlZCgpICYm
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIikpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1l
cyhjb250ZW50VmFsdWUpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSgpLCAiZm9ybWF0LWRldGVjdGlvbiIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NG
b3JtYXREZXRlY3Rpb24oY29udGVudFZhbHVlKTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlv
bnMiKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmgiCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJh
ZygpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hTZWxlY3RJdGUKIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6dXNlc01lbnVMaXN0KCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuZGVsZWdh
dGVzTWVudUxpc3RSZW5kZXJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTMzNCw3
ICszMzQsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RBbGwoKSBjCiAKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
dXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZW51
TGlzdD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTGlzdEJveD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKQEAgLTM0Nyw3ICszNDcsNyBA
QCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0CiB7CiAgICAgaWYgKCFI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNoaWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCF1c2VzTWVudUxpc3QoKSkKICAgICAgICAg
cmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihjaGlsZCkgfHwgaXM8SFRNTE9wdEdyb3VwRWxl
bWVudD4oY2hpbGQpIHx8IHZhbGlkYXRpb25NZXNzYWdlU2hhZG93VHJlZUNvbnRhaW5zKGNoaWxk
KTsKICNlbmRpZgpAQCAtNTAwLDcgKzUwMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6Omlz
UmVxdWlyZWRGb3JtQ28KIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAjZWxzZQogICAg
IHJldHVybiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjp3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnVwZGF0ZUxpc3RCb3hTZWwKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChyZW5k
ZXJlcigpLT5pc0xpc3RCb3goKSB8fCBtX211bHRpcGxlKTsKICNlbHNlCiAgICAgQVNTRVJUKHJl
bmRlcmVyKCktPmlzTWVudUxpc3QoKSB8fCBtX211bHRpcGxlKTsKQEAgLTcwMCw3ICs3MDAsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaENoYW5nZUV2CiAKIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
c2Nyb2xsVG9TZWxlY3Rpbwogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5n
ZWRPblJlbmRlcmVyKCkKIHsKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgaWYgKGlzPFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpKQogICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcikuc2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7
CiAgICAgICAgIGVsc2UKQEAgLTEyMzksNyArMTIzOSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Om1lbnVMaXN0RGVmYXVsdEUKIAogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiBkb3duY2FzdDxN
b3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1
cygpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGlzPFJl
bmRlck1lbnVMaXN0PihyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8mIG1lbnVMaXN0ID0g
ZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcik7CkBAIC0xMjU2LDcgKzEyNTYsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFCiAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQgJiYgIWZvY3VzZWQoKSkgewogICAgICAgICBhdXRvJiBtZW51TGlzdCA9IGRv
d25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChtZW51TGlz
dC5wb3B1cElzVmlzaWJsZSgpKQpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZAogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw3ICs1NTMsNyBAQCBSZW5kZXJTdHls
ZSBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJCiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUo
c3R5bGUsIHRleHRCbG9ja1N0eWxlKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERp
c3BsYXlUeXBlOjpCbG9jayk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBXZSdyZSBhZGRpbmcgdGhyZWUgZXh0cmEgcGl4ZWxzIG9mIHBhZGRp
bmcgdG8gbGluZSB0ZXh0YXJlYXMgdXAgd2l0aCB0ZXh0IGZpZWxkcy4gIAogICAgIHRleHRCbG9j
a1N0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhlZCkpOwogICAgIHRleHRCbG9ja1N0
eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgoMywgRml4ZWQpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdCgKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFi
c3RyYWN0IHRoZSBzZWxlY3Rpb24gYmVoYXZpb3IgaW50byBhbiBFZGl0aW5nQmVoYXZpb3IgZnVu
Y3Rpb24gaW5zdGVhZAogICAgIC8vIG9mIGhhcmRjb2RpbmcgdGhlIGJlaGF2aW9yIHVzaW5nIGEg
bWFjcm8gZGVmaW5lLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VsZWN0IGFsbCB0aGUgdGV4dCBvbiBpT1MuIElu
c3RlYWQgdXNlIHRoZSBzdGFuZGFyZCB0ZXh0ZmllbGQgYmVoYXZpb3Igb2YgZ29pbmcgdG8gdGhl
IGVuZCBvZiB0aGUgbGluZS4KICAgICBzZXRTZWxlY3Rpb25SYW5nZShzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rp
b25IYXNGb3J3YXJkRGlyZWN0aW9uLCByZXZlYWxNb2RlLCBpbnRlbnQpOwogI2Vsc2UKQEAgLTY2
MCw3ICs2NjAsNyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kCiAg
ICAgcmV0dXJuIGluZGV4OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoaWRlUGxhY2Vob2xk
ZXIoKQogewogICAgIGlmIChSZWZQdHI8SFRNTEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gcGxhY2Vo
b2xkZXJFbGVtZW50KCkpCkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6YWRqdXN0SQogCiAgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQog
ICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCku
ZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0
aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBwYXJlbnRTdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHRleHRC
bG9ja1N0eWxlLnRleHRTZWN1cml0eSgpICE9IFRleHRTZWN1cml0eTo6Tm9uZSAmJiAhdGV4dEJs
b2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CiAgICAgICAgIC8vIFByZXNlcnZl
IHRoZSBhbGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rpb24gdG8gTFRSIHNvIHRoYXQgdGhl
IGxhc3QtdHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgogICAgICAgICAvLyAod2hpY2ggY2Fubm90
IGhhdmUgUlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhl
IG1hc2tlZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+LgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4
dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90
ZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50ID0gdGV4dDsgfQotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aGlkZVBsYWNlaG9sZGVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93UGxhY2Vob2xk
ZXJJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgZWxzZSB7CiAgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgICAgCiAK
LSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKICAgICAgICAgaWYgKG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIpIHsKICAgICAgICAgICAg
IGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
d2Via2l0YWlycGxheUF0dHIpLCAiZGVueSIpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgSFRN
TFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWUKICAgICBpZiAoIXBsYXllcigpLT5zdXBw
b3J0c0Z1bGxzY3JlZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVvRnVs
bHNjcmVlbk1vZGUpOwogICAgIC8vIEZ1bGxzY3JlZW4gaW1wbGVtZW50ZWQgYnkgcGxheWVyLgog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTg4LDExICsxODgsMTEgQEAgYm9vbCBIVE1MVmlkZW9FbGVt
ZW50OjpzdXBwb3J0c0Z1bGxzY3JlZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1
cm4gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4odmlkZW9G
dWxsc2NyZWVuTW9kZSk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiB9CiAKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKQog
ewogICAgIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgd2Via2l0RHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdDsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgd2Vi
a2l0UmVxdWVzdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlRG9jdW1lbgogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGNsYXNzIEltYWdlRXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1YmxpYyBFdmVu
dExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEltYWdlRXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IElt
YWdlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCkpOyB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW1hZ2VE
b2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSYgZnJhbQogICAgIDogSFRNTERvY3VtZW50KCZm
cmFtZSwgdXJsLCBJbWFnZURvY3VtZW50Q2xhc3MpCiAgICAgLCBtX2ltYWdlRWxlbWVudChudWxs
cHRyKQogICAgICwgbV9pbWFnZVNpemVJc0tub3duKGZhbHNlKQotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX2RpZFNocmlua0ltYWdlKGZhbHNl
KQogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKGZyYW1lLnNldHRpbmdzKCkuc2hy
aW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkpCkBAIC0y
NDIsNyArMjQyLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdAog
ICAgIGJvZHktPmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgCiAgICAgaWYgKG1fc2hv
dWxkU2hyaW5rSW1hZ2UpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0byBiZSBpbiBkZXZpY2UgcGl4ZWxz
IChyYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgogICAgICAgICBwcm9jZXNzVmlld3Bv
cnQoIndpZHRoPWRldmljZS13aWR0aCx2aWV3cG9ydC1maXQ9Y292ZXIiX3MsIFZpZXdwb3J0QXJn
dW1lbnRzOjpJbWFnZURvY3VtZW50KTsKICNlbHNlCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBJ
bWFnZURvY3VtZW50OjppbWFnZVVwZGF0ZWQoKQogICAgIG1faW1hZ2VTaXplSXNLbm93biA9IHRy
dWU7CiAKICAgICBpZiAobV9zaG91bGRTaHJpbmtJbWFnZSkgewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSA9
IHBhZ2UoKS0+Y2hyb21lKCkuc2NyZWVuU2l6ZSgpOwogICAgICAgICBpZiAoaW1hZ2VTaXplLndp
ZHRoKCkgPiBzY3JlZW5TaXplLndpZHRoKCkpCiAgICAgICAgICAgICBwcm9jZXNzVmlld3BvcnQo
U3RyaW5nOjpmb3JtYXQoIndpZHRoPSV1LHZpZXdwb3J0LWZpdD1jb3ZlciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbWFnZVNpemUud2lkdGgoKS50b0ludCgpKSksIFZpZXdwb3J0QXJndW1lbnRz
OjpJbWFnZURvY3VtZW50KTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmltYWdlVXBkYXRlZCgpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGZsb2F0IEltYWdlRG9jdW1lbnQ6OnNjYWxlKCkKIHsKICAgICBp
ZiAoIW1faW1hZ2VFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlz
Y29ubmVjdEltYWdlRWxlbWVudCgpIHsgbV9pbWFnZUVsZW1lbnQgPSBudWxscHRyOyB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgd2lu
ZG93U2l6ZUNoYW5nZWQoKTsKICAgICB2b2lkIGltYWdlQ2xpY2tlZChpbnQgeCwgaW50IHkpOwog
I2VuZGlmCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0U2l6ZSBpbWFnZVNp
emUoKTsKIAogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcmVzaXplSW1hZ2VU
b0ZpdCgpOwogICAgIHZvaWQgcmVzdG9yZUltYWdlU2l6ZSgpOwogICAgIGJvb2wgaW1hZ2VGaXRz
SW5XaW5kb3coKTsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIGVu
b3VnaCBvZiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIHRvIGRldGVybWluZSBpdHMgc2l6ZS4K
ICAgICBib29sIG1faW1hZ2VTaXplSXNLbm93bjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2hldGhlciB0aGUgaW1hZ2UgaXMgc2hydW5r
IHRvIGZpdCBvciBub3QuCiAgICAgYm9vbCBtX2RpZFNocmlua0ltYWdlOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw3ICs1MzMs
NyBAQCBTdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBEYXRlQ29tcG9uZW50czo6VHlwZSBJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OkludmFsaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAj
ZW5kaWYKIApAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVj
ZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIERhdGVDb21wb25l
bnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBk
aXNwbGF5U3RyaW5nKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBNZWRpYURvY3Vt
ZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudAogICAgIGlmIChkb2N1bWVudC5mcmFtZSgpKQogICAg
ICAgICBkb2N1bWVudC5mcmFtZSgpLT5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RBdERvY3VtZW50
U3RhcnQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYXV0byBoZWFkRWxlbWVudCA9IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
ICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZEVsZW1lbnQpOwogCkBAIC0xMTgsNyAr
MTE4LDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudAogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tb2Rlcm5NZWRpYUNv
bnRyb2xzRW5hYmxlZCgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgZWxlbWVudFN0eWxlOwog
ICAgICAgICBlbGVtZW50U3R5bGUuYXBwZW5kTGl0ZXJhbCgibWF4LXdpZHRoOiAxMDAlOyBtYXgt
aGVpZ2h0OiAxMDAlOyIpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBlbGVtZW50U3R5bGUuYXBwZW5kTGl0ZXJhbCgid2lkdGg6IDEwMCU7IGhl
aWdodDogYXV0bzsiKTsKICNlbmRpZgogICAgICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0
ZShzdHlsZUF0dHIsIGVsZW1lbnRTdHlsZS50b1N0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRT
UEkuaD4KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmNsaWVu
dERhdGFCdWZmCiAKICAgICB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0
b3JpbmcoKTsKICNlbmRpZgogCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzaG93UGxheWJhY2tUYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9lbGVtZW50
LnJlYWR5U3RhdGUoKSA8IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6SEFWRV9NRVRBREFUQSkgewog
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2Ug
ZWxlbWVudCBpcyBub3QgcGxheWFibGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTc5LDcgKzU3
OSw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1AKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byYgbGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gbV9lbGVt
ZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXRhaXJw
bGF5QXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxlZ2FjeUFp
cnBsYXlBdHRyaWJ1dGVWYWx1ZSwgImRlbnkiKSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAicmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CkBA
IC02MjAsNyArNjIwLDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFj
awogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIGhhc0xpc3RlbmVycyk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2hhc1BsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOwogICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFy
Z2V0TW9uaXRvcmluZygpOwogI2Vsc2UKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudFNlc3Npb246OmV4dGVybmFsT3V0cHV0CiAKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6
aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9wbGF5YmFja1Rh
cmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03MTYsNyArNzE2LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpyZXF1aXJlc0Z1bGxzYwogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0
dGluZ3MoKS5pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzSUJvb2tzKCkpCiAgICAg
ICAgIHJldHVybiAhbV9lbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKSAmJiAhbV9lbGVtZW50Lmhhc0F0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpwbGF5c2lubGluZUF0dHIpOwog
ICAgIGlmIChkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9O
XzEwXzApCkBAIC03NjYsNyArNzY2LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxv
d3NQaWN0dXJlSQogICAgIHJldHVybiBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFs
bG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkgJiYgIW1fZWxlbWVudC53ZWJraXRD
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVx
dWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgJiYgIW1fZWxlbWVudC5l
bGVtZW50SXNIaWRkZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29s
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wp
IG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25pdG9yaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBj
b25zdDsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1faGFzUGxheWJh
Y2tUYXJnZXRzIHsgZmFsc2UgfTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVycyB7IGZhbHNlIH07CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvUGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICBpZiAoZG9jdW1lbnQu
ZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoSW5q
ZWN0QXREb2N1bWVudFN0YXJ0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIFNob3VsZCBub3QgYmUgYWJsZSB0byB6b29tIGludG8gc3RhbmRh
bG9uZSBwbHVnLWluIGRvY3VtZW50cy4KICAgICBkb2N1bWVudC5wcm9jZXNzVmlld3BvcnQoInVz
ZXItc2NhbGFibGU9bm8iX3MsIFZpZXdwb3J0QXJndW1lbnRzOjpQbHVnaW5Eb2N1bWVudCk7CiAj
ZW5kaWYKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRl
RG9jdW1lbgogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKICAgICBib2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbndp
ZHRoQXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFy
Z2luaGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21pY1N0cmluZygiYmFja2dy
b3VuZC1jb2xvcjogcmdiKDIxNywyMjQsMjMzKSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKICNlbHNlCiAgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRv
bWljU3RyaW5nKCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsMzgsMzgpIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBS
YW5nZUlucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBS
YW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCiB7
CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3du
RXZlbgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5k
bGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmIGV2ZW50KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuaGFu
ZGxlVG91Y2hFdmVudChldmVudCk7CiAjZWxpZiBFTkFCTEUoVE9VQ0hfU0xJREVSKQogICAgIEFT
U0VSVChlbGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBw
b3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5n
ZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNTdGVwcGFibGUoKSBj
b25zdCBmaW5hbDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCYpIGZpbmFsOwogI2Vu
ZGlmCiAgICAgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOwpA
QCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpIGZpbmFsOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykg
JiYgRU5BQkxFKFRPVUNIX1NMSURFUikKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX1NMSURFUikKICAgICBib29sIGhhc1Rv
dWNoRXZlbnRIYW5kbGVyKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAgU2VhcmNoSW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUoSFRNTElucAogCiB2
b2lkIFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE5vcm1hbGx5IHdlJ3ZlIGdv
dCB0aGUgY29ycmVjdCByZW5kZXJlciBieSB0aGUgdGltZSB3ZSBnZXQgaGVyZS4gSG93ZXZlciB3
aGVuIHRoZSBpbnB1dCB0eXBlIGNoYW5nZXMKICAgICAvLyB3ZSBkb24ndCB1cGRhdGUgdGhlIGFz
c29jaWF0ZWQgcmVuZGVyZXJzIHVudGlsIGFmdGVyIHRoZSBuZXh0IHRyZWUgdXBkYXRlLCBzbyB3
ZSBjb3VsZCBhY3R1YWxseSBlbmQgdXAgaGVyZQogICAgIC8vIHdpdGggYSBtaXNtYXRjaGVkIHJl
bmRlcmVyIChlLmcuIHRocm91Z2ggZm9ybSBzdWJtaXNzaW9uKS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBUZXh0RmllbGRJbnB1dFR5cGU6On5UZXh0RmllbGRJbnB1dFR5cGUo
CiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWxlbWVudCgpLT5pc1JlYWRPbmx5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjYzLDcgKzI2Myw3IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW4KICAgICBBU1NFUlRfVU5VU0VE
KG9sZEZvY3VzZWROb2RlLCBvbGRGb2N1c2VkTm9kZSAhPSBlbGVtZW50KCkpOwogICAgIGlmIChS
ZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhlbGVtZW50KCkp
OwotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
IChlbGVtZW50KCktPmxpc3QoKSAmJiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IpCiAgICAg
ICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBzdWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1ZhbHVlQmxv
Y2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOwogI2VuZGlmCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudAogICAgIElucHV0VHlwZTo6aGFu
ZGxlQmx1ckV2ZW50KCk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT5l
bmRFZGl0aW5nKCk7Ci0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElP
UykKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkgJiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9y
KQogICAgICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwogI2VuZGlmCkBA
IC02NTgsNyArNjU4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlV
cwogICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLmZy
YW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQo
ZWxlbWVudCgpKTsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWxlbWVudCgpLT5saXN0KCkg
JiYgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAgICAgICBtX2RhdGFMaXN0RHJvcGRv
d25JbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBz
dWdnZXN0aW9ucygpLnNpemUoKSA/IENTU1ZhbHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUp
OwogI2VuZGlmCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxp
c3RBdHRyaWJ1dGVUYQogICAgIGlmICghbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKQogICAg
ICAgICByZXR1cm47CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIGVsZW1lbnQoKS0+bGlzdCgpID8gQ1NTVmFsdWVCbG9j
ayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgogI2VuZGlmCiAKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBT
ZXNzaW9uJiBzZXNzaW9uKQogICAgIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKFdlYlRocmVhZFNob3VsZFlpZWxkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotI2lmIEVOQUJMRShURUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJUZWxl
cGhvbmVOdW1iZXJEZXRlY3Rvci5oIgogI2VuZGlmCiAKQEAgLTIxOTEsNyArMjE5MSw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEEKICAgICBwcm9jZXNzQ2hhcmFj
dGVyQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBFeHRyYWN0IHRoZSBm
b2xsb3dpbmcgaU9TLXNwZWNpZmljIGNvZGUgaW50byBhIHNlcGFyYXRlIGZpbGUuCiAvLyBGcm9t
IHRoZSBzdHJpbmcgNDA4OTk2MTAxMCwgY3JlYXRlcyBhIGxpbmsgb2YgdGhlIGZvcm0gPGEgaHJl
Zj0idGVsOjQwODk5NjEwMTAiPjQwODk5NjEwMTA8L2E+IGFuZCBpbnNlcnRzIGl0LgpAQCAtMjI3
NSw3ICsyMjc1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFBhcnNlVGVsZXBob25lTgog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyJiBidWZmZXIpCiB7CkBAIC0yNDMwLDcgKzI0MzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NoYXJhY3RlckJ1CiB7CiAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAgICAgU3RyaW5nIGNoYXJhY3RlcnMgPSBidWZmZXIudGFr
ZVJlbWFpbmluZygpOwotI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYg
UExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgbV90
cmVlLmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKSAmJiBzaG91bGRQYXJzZVRlbGVw
aG9uZU51bWJlcnNJbk5vZGUobV90cmVlLmN1cnJlbnROb2RlKCkpICYmIFRlbGVwaG9uZU51bWJl
ckRldGVjdG9yOjppc1N1cHBvcnRlZCgpKQogICAgICAgICBsaW5raWZ5UGhvbmVOdW1iZXJzKGNo
YXJhY3RlcnMpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzUGFyc2luZ0ZyYWdtZW50T3JUZW1wbGF0ZUNv
bnRlbnRzKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnNlcnRQaG9uZU51bWJlckxpbmso
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5Niw3ICs4OTYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVm
YXVsCiAgICAgICAgIG1fY29udHJvbHMtPnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmUKIAogICAgIHJldHVybiB0cnVlOwogfQotI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3Vy
cmVudFRpbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZU9wYXF1ZSgpOwogICAgIHZvaWQgbWFr
ZVRyYW5zcGFyZW50KCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkBAIC0xMjQsNyArMTI0LDcgQEAg
Y2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRQogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgTWVkaWFD
b250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFD
b250cm9scyopOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50IGZpbmEKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlh
Q29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgog
CkBAIC0yNTAsNyArMjUwLDcgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dCBmaQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMjY3LDcgKzI2Nyw3IEBA
IGNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b24KIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC0yODQsNyArMjg0LDcgQEAgY2xhc3MgTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmLCBNZWRpYUNvbnRyb2xzKik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMzA3LDcgKzMwNyw3IEBA
IGNsYXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmUKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAtMzIyLDcgKzMyMiw3IEBAIGNsYXNzIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXMKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50JiwgTWVkaWFDb250cm9scyopOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKQEAgLTM1MSw3ICszNTEsNyBAQCBj
bGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQgZmluYWwgCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIE1l
ZGlhQ29udHJvbHMqKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRl
OwogI2VuZGlmCiAKQEAgLTM3Myw3ICszNzMsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApAQCAt
NDEzLDcgKzQxMyw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXQK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5C
dXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkBAIC00MjksNyAr
NDI5LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dAogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyZWRGdWxsc2Ny
ZWVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDcgKzI0Niw3IEBA
IHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkcmFnRnJvbShjb25zdCAKIHsKICAgICBSZWY8U2xp
ZGVyVGh1bWJFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZy
b21Qb2ludChwb2ludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBzdGFydERyYWdnaW5nKCk7CiAjZW5kaWYKIH0KQEAgLTMzOCw3ICszMzgsNyBA
QCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c3RvcERyYWdnaW5nKCkKICAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFpczxNb3VzZUV2ZW50PihldmVudCkp
IHsKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VN
b3ZlRXZlbnRzKCkKIHsKQEAgLTM5OCw3ICszOTgsNyBAQCBib29sIFNsaWRlclRodW1iRWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6
OndpbGxEZXRhY2hSZW5kZXJlcnMoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNl
dWRvQ2xhc3MoKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8RWxlbWVudD4gZm9jdXNEZWxlZ2F0
ZSgpIGZpbmFsOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKICAgICBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBmaW5hbDsKICAgICBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlCiAgICAgaWYgKGlucHV0ICYmIGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4o
ZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSA9PSBMZWZ0QnV0
dG9uKSB7CiAgICAgICAgIGlucHV0LT5mb2N1cygpOwogICAgICAgICBpbnB1dC0+c2VsZWN0KCk7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gaW5wdXQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGF1
dG8mIHNlYXJjaEZpZWxkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTZWFyY2hGaWVsZD4oKnJl
bmRlcmVyKTsKICAgICAgICAgICAgIGlmIChzZWFyY2hGaWVsZFJlbmRlcmVyLnBvcHVwSXNWaXNp
YmxlKCkpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25F
bGVtZW50OjpkZQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogYm9vbCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTQsNyArMjU0LDcgQEAg
aW5saW5lIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6UwogICAgIDogSFRNTERpdkVs
ZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKIHsKICAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCIt
d2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwg
QVhTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblRleHQoKSk7CiAjZW5kaWYKICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9taWNTdHJpbmcoImJ1dHRvbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTI5MCw3ICsyOTAsNyBA
QCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGVmCiAgICAgICAgIEhUTUxE
aXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBib29sIFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAgIGNv
bnN0IFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKICAg
ICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBvdmVycmlkZTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0xMDUsNyArMTA1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCYpIG92ZXJyaWRlOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQz
Miw3IEBAIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVkTm8KIAogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fb3Zlcmxh
eS0+c2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKTsKICNlbHNlCiAgICAgaWYgKGluZGljYXRpbmcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjks
NyBAQCB1bnNpZ25lZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omluc3BlY3RpCiAKIFN0cmluZyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKCkKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuICJtYWMiX3M7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHJldHVybiAid2lu
ZG93cyJfczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCiAjZW5kaWYKIApAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUoCiAKIHZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9T
LCBydW5uaW5nIGFuIEV2ZW50TG9vcCBjYXVzZXMgdXMgdG8gcnVuIGEgbmVzdGVkIFdlYlJ1bkxv
b3AuCiAgICAgLy8gU2luY2UgdGhlIFdlYlRocmVhZCBpcyBhdXRvcmVsZWFzZWQgYXQgdGhlIGVu
ZCBvZiBydW4gbG9vcCBpdGVyYXRpb25zCiAgICAgLy8gd2UgbmVlZCB0byBncmFjZWZ1bGx5IGhh
bmRsZSByZWxlYXNpbmcgYW5kIHJlYWNxdWlyaW5nIHRoZSBsb2NrLgpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJlYWtwb2ludC5oPgog
I2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgogI2VuZGlmCkBAIC02OSw3ICs2OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBIHJhY2UgY29uZGl0aW9uIGR1cmluZyBX
ZWJWaWV3IGRlYWxsb2NhdGlvbiBjYW4gbGVhZCB0byBhIGNyYXNoIGlmIHRoZSBsYXllciBzeW5j
IHJ1biBsb29wCiAgICAgLy8gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gdGhlIG1haW4gcnVuIGxvb3Ag
PHJkYXI6Ly9wcm9ibGVtLzk3OTg1NTA+LiBIb3dldmVyLCBmb3IgcmVzcG9uc2l2ZW5lc3MsCiAg
ICAgLy8gd2Ugc3RpbGwgYWxsb3cgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS83NDAzMzI4Pi4g
U2luY2UgdGhlIHJhY2UgY29uZGl0aW9uIGFuZCBzdWJzZXF1ZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NjMsNyArMTU2Myw3IEBAIFVSTCBEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnRVUkwoKSBjb25zdAog
ICAgIHJldHVybiB1cmw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1zIHRvIHZpb2xhdGUgdGhlIGVu
Y2Fwc3VsYXRpb24gb2YgdGhpcyBjbGFzcy4KIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlc3Bv
bnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiByZXNwb25zZU1pbWVUeXBlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
NyArMTQ5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdDsK
ICAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBy
ZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1zIHRvIHZpb2xhdGUg
dGhlIGVuY2Fwc3VsYXRpb24gb2YgdGhpcyBjbGFzcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlc3BvbnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4v
ZHlsZFNQSS5oPgogI2VuZGlmCiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzCiB7CiAgICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG5lZWRzUHJlZmxpZ2h0UXVpcmsgPSBJT1NBcHBs
aWNhdGlvbjo6aXNNb3ZpU3RhclBsdXMoKSAmJiBhcHBsaWNhdGlvblNES1ZlcnNpb24oKSA8IERZ
TERfSU9TX1ZFUlNJT05fMTJfMCAmJiAobV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9PSBQcmVm
bGlnaHRQb2xpY3k6OkNvbnNpZGVyIHx8IG1fb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPT0gUHJl
ZmxpZ2h0UG9saWN5OjpGb3JjZSk7CiAjZWxzZQogICAgIGJvb2wgbmVlZHNQcmVmbGlnaHRRdWly
ayA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgUmVmPERvY3VtZW50PiBE
b2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdQogewogICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCku
c3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChtX21p
bWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwg
dXJsKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtX21pbWVUeXBlKSAmJiAobV9mcmFt
ZS0+aXNNYWluRnJhbWUoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50
Rm9yU3ViZnJhbWVQREYoKSkpCiAgICAgICAgIHJldHVybiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZSht
X2ZyYW1lLCB1cmwpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopIGZpbmFsIHsgfQogICAg
IHZvaWQgb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKSBmaW5hbCB7IH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc3RhcnREZWxh
eWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgc3RvcERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRp
b25zKCkgZmluYWwgeyB9CiAgICAgYm9vbCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBFbXB0eUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAgICAgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYgcCkgY29uc3QgZmluYWwgeyByZXR1cm4gcDsgfQogICAgIEludFJlY3Qg
cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdCBmaW5hbCB7IHJldHVybiBy
OyB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gcDsgfTsKICAgICBJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHI7IH07
CiAjZW5kaWYKQEAgLTE0Myw3ICsxNDMsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1
YmxpYyBDaHJvbWVDCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoRWxlbWVudCYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoRWxlbWVudCYpIGZpbmFsIHsgfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEN1cnNv
cihjb25zdCBDdXJzb3ImKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGls
TW91c2VNb3Zlcyhib29sKSBmaW5hbCB7IH0KICNlbmRpZgpAQCAtMTY1LDcgKzE2NSw3IEBAIGNs
YXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUMKICAgICB2b2lkIGRpZFByZXZl
bnREZWZhdWx0Rm9yRXZlbnQoKSBmaW5hbCB7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRSZWNlaXZlTW9iaWxlRG9j
VHlwZShib29sKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldE5lZWRzU2Nyb2xsTm90aWZpY2F0aW9u
cyhGcmFtZSYsIGJvb2wpIGZpbmFsIHsgfQogICAgIHZvaWQgb2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KEZyYW1lJikgZmluYWwgeyB9CkBAIC0xODMsMTMgKzE4MywxMyBAQCBjbGFzcyBFbXB0eUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAKICAgICB2b2lkIHdlYkFwcE9yaWVudGF0aW9uc1Vw
ZGF0ZWQoKSBmaW5hbCB7IH07CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCwgUm91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH07Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBF
TkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgIGludCBkZXZpY2VPcmllbnRhdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBpc1N0b3BwaW5nKCkgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaQogICAg
IGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5
IGZvciBhc3NlcnRpb25zCiAKICAgICB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExv
YWRlciopIGZpbmFsIHsgfQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1M
KCkgZmluYWwgeyB9CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5
RnJhbWVMb2FkZXJDbGkKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZp
bmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCkBAIC0xNTMsNyArMTUzLDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaQogCiAgICAgdm9pZCBzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIGZpbmFsIHsgfQogICAgIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmluYWwg
eyB9Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9p
ZCBkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIGZpbmFsIHsgfQogI2Vu
ZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWwgeyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MCw3ICsxNDAsNyBAQAogI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb24uaCIKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9
IG51bGxwdHI7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50
OjpDb21wbGV0ZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdGhlIGRvY3VtZW50IFVSTCBvZiBhIFBERiBkb2N1bWVu
dCB0byBiZSBub24tZW1wdHkgc28gdGhhdCBib3RoIGJhY2svZm9yd2FyZCBoaXN0b3J5IG5hdmln
YXRpb24KICAgICAgICAgLy8gYmV0d2VlbiBQREYgcGFnZXMgYW5kIGZyYWdtZW50IG5hdmlnYXRp
b24gd29ya3MuIFNlZSA8cmRhcjovL3Byb2JsZW0vOTU0NDc2OT4gZm9yIG1vcmUgZGV0YWlscy4K
QEAgLTE2NDgsNyArMTY0OCw3IEBAIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6
OmluaXQKIAogYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1
cmwsIE5vZGUmIGluaXRpYXRvck5vZGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gTW9iaWxlU3RvcmUgZGVwZW5kcyBvbiB0aGUgaU9TIDQu
MCBlcmEgY2xpZW50IGRlbGVnYXRlIG1ldGhvZCBiZWNhdXNlIHdlYlZpZXc6cmVzb3VyY2U6d2ls
bFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2UKICAgICAvLyBkb2Vz
bid0IGxldCB0aGVtIHRlbGwgd2hlbiBhIGxvYWQgcmVxdWVzdCBpcyBjb21pbmcgZnJvbSBhIG1l
ZGlhIGVsZW1lbnQuIFNlZSA8cmRhcjovL3Byb2JsZW0vODI2NjkxNj4gZm9yIG1vcmUgZGV0YWls
cy4KICAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzTW9iaWxlU3RvcmUoKSkKQEAgLTE4MTgsNyAr
MTgxOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wKIAogICAg
IHN0b3BBbGxMb2FkZXJzKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBMYXkgb3V0IGltbWVkaWF0ZWx5IHdoZW4gc3RvcHBpbmcgdG8gaW1t
ZWRpYXRlbHkgY2xlYXIgdGhlIG9sZCBwYWdlIGlmIHdlIGp1c3QgY29tbWl0dGVkIHRoaXMgb25l
CiAgICAgLy8gYnV0IGhhdmVuJ3QgbGFpZCBvdXQvcGFpbnRlZCB5ZXQuCiAgICAgLy8gRklYTUU6
IElzIHRoaXMgYmVoYXZpb3Igc3BlY2lmaWMgdG8gaU9TPyBPciBzaG91bGQgd2UgZXhwb3NlIGEg
c2V0dGluZyB0byB0b2dnbGUgdGhpcyBiZWhhdmlvcj8KQEAgLTE5NzMsNyArMTk3Myw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgKICAgICAgICAgY2xpZW50UmVk
aXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKGZhbHNlKTsKICAgICAKICAgICBpZiAoY2FjaGVkUGFn
ZSAmJiBjYWNoZWRQYWdlLT5kb2N1bWVudCgpKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZJWE1FOiBDYWNoZWRQYWdlOjpyZXN0b3Jl
KCkgd291bGQgZGlzcGF0Y2ggdmlld3BvcnQgY2hhbmdlIG5vdGlmaWNhdGlvbi4gSG93ZXZlciBV
SUtpdCBleHBlY3RzIGxvYWQKICAgICAgICAgLy8gY29tbWl0IHRvIGhhcHBlbiBiZWZvcmUgYW55
IGNoYW5nZXMgdG8gdmlld3BvcnQgYXJndW1lbnRzIGFuZCBkZWFsaW5nIHdpdGggdGhpcyB0aGVy
ZSBpcyBkaWZmaWN1bHQuCiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5zZXREaXNw
YXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZVN1cHByZXNzZWQodHJ1ZSk7CkBAIC0xOTk1LDcgKzE5
OTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoCiAKICAgICAg
ICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKGhhc0luc2VjdXJlQ29udGVudCk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbV9mcmFtZS5wYWdl
KCktPmNocm9tZSgpLnNldERpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChm
YWxzZSk7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0
UHJvcGVydGllc0RpZENoYW5nZShtX2ZyYW1lLnBhZ2UoKS0+dmlld3BvcnRBcmd1bWVudHMoKSk7
CiAjZW5kaWYKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFBy
b3Zpc2lvbmFsTG9hZCgKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5yZXN1bWUoUmVhc29u
Rm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAogICAgICAgICAvLyBGb3JjZSBhIGxheW91dCB0
byB1cGRhdGUgdmlldyBzaXplIGFuZCB0aGVyZWJ5IHVwZGF0ZSBzY3JvbGxiYXJzLgotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1fY2xp
ZW50LmZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpKQogICAgICAgICAgICAgbV9m
cmFtZS52aWV3KCktPmZvcmNlTGF5b3V0KCk7CiAjZWxzZQpAQCAtMjU1Niw3ICsyNTU2LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbgogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaWRGaXJzdExheW91dCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gT25seSBzZW5kIGxheW91dC1yZWxhdGVkIGRlbGVnYXRlIGNh
bGxiYWNrcyBzeW5jaHJvbm91c2x5IGZvciB0aGUgbWFpbiBmcmFtZSB0bwogICAgIC8vIGF2b2lk
IHJlZW50ZXJpbmcgbGF5b3V0IGZvciB0aGUgbWFpbiBmcmFtZSB3aGlsZSBkZWxpdmVyaW5nIGEg
bGF5b3V0LXJlbGF0ZWQgZGVsZWdhdGUKICAgICAvLyBjYWxsYmFjayBmb3IgYSBzdWJmcmFtZS4K
QEAgLTM3MzgsNyArMzczOCw3IEBAIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmJsb2NrZWRC
eUNvbnQKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGcmFtZUxvYWRlcjo6Y29ubmVjdGlv
blByb3BlcnRpZXMoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKICAgICByZXR1cm4gbV9jbGll
bnQuY29ubmVjdGlvblByb3BlcnRpZXMobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXIt
PmlkZW50aWZpZXIoKSk7CkBAIC0zOTc1LDcgKzM5NzUsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0
ZVdpbmRvdyhGcmFtZSYgb3BlbmVyCiAgICAgLy8gZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
dGhlIHdpbmRvdyBzaXplIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS4KIAogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2aWV3cG9ydCBhcmd1bWVu
dHMgYmV0d2VlbiBpT1MgYW5kIG5vbi1JT1MuCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplID0gcGFnZS0+Y2hy
b21lKCkucGFnZVJlY3QoKS5zaXplKCk7CiAgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QgPSBwYWdl
LT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CiAgICAgaWYgKGZlYXR1cmVzLngpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFy
ZW50RnJhbWUoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZFJlcG9ydFJlc291cmNlVGltaW5nVG9QYXJl
bnRGcmFtZSA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1Rv
UGFyZW50RnJhbWUoKSB7IHJldHVybiBtX3Nob3VsZFJlcG9ydFJlc291cmNlVGltaW5nVG9QYXJl
bnRGcmFtZTsgfTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGll
cyhSZXNvdXJjZUxvYWRlciopOwogI2VuZGlmCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCA9
IDA7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGNsaWVudCBmb3JjZWQgdGhlIGxheW91dC4KICAgICB2aXJ0
dWFsIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogI2VuZGlm
CkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSA9IDA7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRpZXMoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRh
VG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpID0gMDsKICNlbmRpZgogICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnNhdmVTY3JvbGxQb3NpdGkKICAgICBlbHNlCiAgICAgICAgIGl0ZW0tPnNldFNjcm9sbFBvc2l0
aW9uKGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpdGVtLT5zZXRFeHBvc2VkQ29udGVudFJlY3Qo
ZnJhbWVWaWV3LT5leHBvc2VkQ29udGVudFJlY3QoKSk7CiAgICAgaXRlbS0+c2V0VW5vYnNjdXJl
ZENvbnRlbnRSZWN0KGZyYW1lVmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpOwogI2VuZGlm
CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3Np
dGkKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKHBhZ2UgJiYgbV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGl0ZW0tPnNldFBhZ2VTY2FsZUZhY3Rvcihw
YWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAvIHBhZ2UtPnZpZXdTY2FsZUZhY3RvcigpKTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaXRlbS0+c2V0
T2JzY3VyZWRJbnNldHMocGFnZS0+b2JzY3VyZWRJbnNldHMoKSk7CiAjZW5kaWYKICAgICB9CkBA
IC0xNTMsNyArMTUzLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBv
cwogICAgIC8vIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KICAgICBtX2ZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLnJlc3RvcmVWaWV3U3RhdGUoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRG9uJ3QgcmVzdG9yZSBzY3JvbGwgcG9pbnQgb24g
aU9TIGFzIEZyYW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKCkgZG9lcyB0aGF0Lgog
ICAgIGlmICh2aWV3ICYmICF2aWV3LT53YXNTY3JvbGxlZEJ5VXNlcigpKSB7CiAgICAgICAgIHZp
ZXctPnNjcm9sbFRvRm9jdXNlZEVsZW1lbnRJbW1lZGlhdGVseUlmTmVlZGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNl
UmVxdWVzCiAgICAgCiAgICAgbV9sb2FkVGltaW5nLm1hcmtTdGFydFRpbWVBbmRGZXRjaFN0YXJ0
KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBJZiB0aGUgZG9jdW1lbnRMb2FkZXIgd2FzIGRldGFjaGVkIHdoaWxlIHRoaXMgUmVzb3VyY2VM
b2FkZXIgd2FzIHdhaXRpbmcgaXRzIHR1cm4KICAgICAvLyBpbiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIgcXVldWUsIGRvbid0IGNvbnRpbnVlLgogICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKSkgewpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVz
b3VyY2VSZXF1ZXMKIAogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUoY2xpZW50
UmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJj
ZUxvYWRlciB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QsIGJhaWwg
b3V0LgogICAgICAgICBpZiAobV9yZWFjaGVkVGVybWluYWxTdGF0ZSkKICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZQogICAgICAgICBpZiAoY3JlYXRlZFJl
c291cmNlSWRlbnRpZmllcikKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyLCBkb2N1bWVudExv
YWRlcigpLCByZXF1ZXN0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAvLyBJZiB0aGlzIFJlc291cmNlTG9hZGVyIHdhcyBzdG9wcGVkIGFz
IGEgcmVzdWx0IG9mIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0LCBiYWlsIG91dAog
ICAgICAgICBpZiAobV9yZWFjaGVkVGVybWluYWxTdGF0ZSkgewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC03NTEsNyArNzUxLDcgQEAgYm9vbCBS
ZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaQogCiAjZW5kaWYKICAgICAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gUmVzb3VyY2VMb2FkZXI6OmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNl
SGFuZGxlKikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRl
bGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCiAgICAgewogICAgICAgICBzdGFy
dCgpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsK
ICNlbmRpZgogICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IHJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKGNoYWxsZW5nZSk7IH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0
aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDcgKzM5OSw3IEBAIGJvb2wgU3Vi
ZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWcKICAgICBJbnRTaXplIGNvbnRlbnRTaXpl
ID0gcm91bmRlZEludFNpemUoTGF5b3V0U2l6ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCksIHJl
bmRlcmVyLT5jb250ZW50SGVpZ2h0KCkpKTsKICAgICBib29sIGxvYWRNYW51YWxseSA9IGlzPFBs
dWdpbkRvY3VtZW50Pihkb2N1bWVudCkgJiYgIW1fY29udGFpbnNQbHVnaW5zICYmIGRvd25jYXN0
PFBsdWdpbkRvY3VtZW50Pihkb2N1bWVudCkuc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KCk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBp
T1MsIHdlIG9ubHkgdGVsbCB0aGUgcGx1Z2luIHRvIGJlIGluIGZ1bGwgcGFnZSBtb2RlIGlmIHRo
ZSBjb250YWluaW5nIHBsdWdpbiBkb2N1bWVudCBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50Lgog
ICAgIGlmIChkb2N1bWVudC5vd25lckVsZW1lbnQoKSkKICAgICAgICAgbG9hZE1hbnVhbGx5ID0g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdWJy
ZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkKIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBzdWJsb2FkZXIoYWRvcHRSZWYoKm5ldyBT
dWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFJT1NBcHBsaWNhdGlv
bjo6aXNXZWJQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gT24gaU9TLCBkbyBub3QgaW52b2tlIHN5
bmNocm9ub3VzIHJlc291cmNlIGxvYWQgZGVsZWdhdGVzIHdoaWxlIHJlc291cmNlIGxvYWQgc2No
ZWR1bGluZwogICAgICAgICAvLyBpcyBkaXNhYmxlZCB0byBhdm9pZCByZS1lbnRlcmluZyBzdHls
ZSBzZWxlY3Rpb24gZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8cmRhcjovL3Byb2JsZW0v
OTEyMTcxOT4pLgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZShGcmFtZSYgZnIKICAgICB9KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGlu
ZygpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQuCkBA
IC02ODQsNyArNjg0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBS
ZQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcgdGlt
ZSBvbiBpT1MgYnV0CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VMb2FkZXIgc3RvcmVzIHJlc291cmNl
cyBpbiB0aGUgbWVtb3J5IGNhY2hlIGltbWVkaWF0ZWx5LAogICAgIC8vIG1fcmVzb3VyY2UgbWln
aHQgYmUgY2FjaGVkIGRlc3BpdGUgaXRzIGxvYWRlciBub3QgYmVpbmcgaW5pdGlhbGl6ZWQuCkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25z
dAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwg
bV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIFJlZjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9zdGF0ZSA9IG1fc3RhdGUgPT0gVW5p
bml0aWFsaXplZCA/IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nIDogRmluaXNoaW5nOwogI2Vs
c2UKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUoTG9hZEMKIAogICAgIG1fcmVxdWVzdENvdW50VHJh
Y2tlciA9IHN0ZDo6bnVsbG9wdDsKICAgICBib29sIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlv
bnMgPSB0cnVlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmIChtX3N0YXRlID09IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nKQogICAgICAgICBz
aG91bGRQZXJmb3JtUG9zdExvYWRBY3Rpb25zID0gZmFsc2U7CiAjZW5kaWYKQEAgLTc0OCw3ICs3
NDgsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lKExvYWRDCiB2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIHsKICAgICBBU1NFUlQoIXJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChtX3N0YXRlICE9IFVuaW5pdGlhbGl6ZWQgJiYgbV9zdGF0ZSAhPSBD
YW5jZWxsZWRXaGlsZUluaXRpYWxpemluZykKICNlbHNlCiAgICAgaWYgKG1fc3RhdGUgIT0gVW5p
bml0aWFsaXplZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgSFRUUEhlYWRlck1hcCogb3JpZ2luYWxIZWFkZXJzKCkgY29u
c3Q7CiAKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0
KCk7IH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIHN0YXJ0TG9hZGluZygpIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IFdoYXQgaXMgYW4g
ImlPUyIgb3JpZ2luYWwgcmVxdWVzdD8gV2h5IGlzIGl0IG5lY2Vzc2FyeT8KQEAgLTEwNyw3ICsx
MDcsNyBAQCBwcml2YXRlOgogICAgICAgICBVbmluaXRpYWxpemVkLAogICAgICAgICBJbml0aWFs
aXplZCwKICAgICAgICAgRmluaXNoaW5nLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICBDYW5jZWxsZWRXaGlsZUluaXRpYWxpemluZwogI2VuZGlm
CiAgICAgfTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgbV9yZXNvdXJjZTsKICAgICB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1faU9TT3JpZ2luYWxS
ZXF1ZXN0OwogI2VuZGlmCiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTeXN0ZW1NZW1vcnkuaCIKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAjZW5kaWYK
IApAQCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgSEFWRShNRURJQV9B
Q0NFU1NJQklMSVRZX0ZSQU1FV09SSykKIHN0YXRpYyB2b2lkIHVzZXJDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZv
aWQqIG9ic2VydmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYp
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBz
dGF0aWNfY2FzdDxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRio+KG9ic2VydmVyKS0+Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oXnsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIElu
dFJlY3QgQ2hyb21lOjpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEkKICAgICByZXR1cm4gbV9jbGll
bnQucm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogSW50UG9pbnQgQ2hyb21lOjphY2Nlc3NpYmlsaXR5
U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CkBAIC00MjUs
NyArNDI1LDcgQEAgdm9pZCBDaHJvbWU6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IENocm9tZTo6Y3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBu
dWxscHRyOwogI2VuZGlmCiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CkBAIC00
ODIsNyArNDgyLDcgQEAgdm9pZCBDaHJvbWU6OmRpc3BhdGNoRGlzYWJsZWRBZGFwdGF0aW9ucwog
CiB2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9pc0Rpc3BhdGNoVmlld3BvcnRE
YXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC01NzUs
NyArNTc1LDcgQEAgYm9vbCBDaHJvbWU6OnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUAogCiB2
b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUmIGZyYW1lKQogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lKTsKICNlbHNlCiAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNj
cm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKICAgICBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0x
NzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQmKSBjb25zdDsKICAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50JikgY29uc3Q7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogQ2Fu
IHdlIGNvbWUgdXAgd2l0aCBhIGJldHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KICAgICB2b2lk
IHNldERpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChib29sIGRpc3BhdGNo
Vmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCkgeyBtX2lzRGlzcGF0Y2hWaWV3cG9ydERh
dGFEaWRDaGFuZ2VTdXBwcmVzc2VkID0gZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBw
cmVzc2VkOyB9CiAjZW5kaWYKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIENocm9t
ZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAw
IH07CiAgICAgVmVjdG9yPFBvcHVwT3BlbmluZ09ic2VydmVyKj4gbV9wb3B1cE9wZW5pbmdPYnNl
cnZlcnM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ym9vbCBtX2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkIHsgZmFsc2Ug
fTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNkZWZpbmUgTlNSZXNwb25kZXIg
V0FLUmVzcG9uZGVyCiAjaWZuZGVmIF9fT0JKQ19fCkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBJ
bnRSZWN0JikgY29uc3QgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9v
dFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKICNl
bmRpZiAgICAKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNlY29u
ZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSB7IHJldHVybiAwX3M7IH07CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1vYmlsZURvY1R5cGUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Nj
cm9sbE5vdGlmaWNhdGlvbnMoRnJhbWUmLCBib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9i
c2VydmVkQ29udGVudENoYW5nZShGcmFtZSYpID0gMDsKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25k
ZXIoKSB7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBhIG1vcmUgZGVzY3JpcHRpdmUgbmFt
ZSBmb3IgdGhpcyBmdW5jdGlvbiBhbmQgbWFrZSBpdCBwbGF0Zm9ybSBpbmRlcGVuZGVudCAoaWYg
cG9zc2libGUpLgogICAgIHZpcnR1YWwgYm9vbCBpc1N0b3BwaW5nKCkgPSAwOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTIxOSw3ICsyMTksNyBAQCBpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0
RXhlY3V0aW9uQ29uCiAgICAgLy8gVGhpcyByZWZlcmVuY2Ugd2lsbCBiZSByZWxlYXNlZCBhdXRv
bWF0aWNhbGx5IHdoZW4gYSBvbmUtc2hvdCB0aW1lciBmaXJlcywgd2hlbiB0aGUgY29udGV4dAog
ICAgIC8vIGlzIGRlc3Ryb3llZCwgb3IgaWYgZXhwbGljaXRseSBjYW5jZWxsZWQgYnkgcmVtb3Zl
QnlJZC4gCiAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIFdURk1v
dmUoYWN0aW9uKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewog
ICAgICAgICBib29sIGRpZERlZmVyVGltZW91dCA9IGNvbnRleHQuYWN0aXZlRE9NT2JqZWN0c0Fy
ZVN1c3BlbmRlZCgpOwogICAgICAgICBpZiAoIWRpZERlZmVyVGltZW91dCAmJiB0aW1lb3V0IDw9
IDEwMF9tcyAmJiBzaW5nbGVTaG90KSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBET01UaW1l
cjo6ZmlyZWQoKQogCiAgICAgY29udGV4dC5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc2hv
dWxkUmVwb3J0TGFja09mQ2hhbmdlczsKICAgICBib29sIHNob3VsZEJlZ2luT2JzZXJ2aW5nQ2hh
bmdlczsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4
dCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoc2hvdWxkQmVnaW5PYnNlcnZpbmdDaGFuZ2VzKSB7CiAgICAgICAgIFdLU3RvcE9ic2Vydmlu
Z0NvbnRlbnRDaGFuZ2VzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250
cm9sbGVyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCiAjaW5jbHVkZSAiV0tD
b250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIgogI2VuZGlmCkBAIC0xMTc2LDcgKzExNzYsNyBA
QCBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkgY29uCiAKIGludCBET01XaW5k
b3c6Om91dGVySGVpZ2h0KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gMDsKICNlbHNlCiAgICAgYXV0byogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgaW50IERPTVdpbmRvdzo6b3V0ZXJI
ZWlnaHQoKSBjb25zdAogCiBpbnQgRE9NV2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gMDsK
ICNlbHNlCiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpAQCAtMTY1OSw3ICsxNjU5
LDcgQEAgRXhjZXB0aW9uT3I8aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoSgogCiB2b2lkIERP
TVdpbmRvdzo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0SWQpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgaWYgKHRpbWVvdXRJZCA+IDAgJiYgZG9jdW1lbnQpIHsKQEAgLTE4MDcsNyAr
MTgwNyw3IEBAIGJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEEKICAgICBl
bHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFs
bG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgYWRkQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYgKChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50IHx8IGV2ZW50VHlwZSA9
PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCkgJiYgZG9jdW1lbnQoKSkgewog
ICAgICAgICBpZiAoaXNTYW1lU2VjdXJpdHlPcmlnaW5Bc01haW5GcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50
KQpAQCAtMTgzMSw5ICsxODMxLDkgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQQogICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiQmxvY2tlZCBhdHRlbXB0IGFkZCBkZXZpY2Ugb3JpZW50YXRpb24gbGlzdGVu
ZXIgZnJvbSBjaGlsZCBmcmFtZSB0aGF0IHdhc24ndCB0aGUgc2FtZSBzZWN1cml0eSBvcmlnaW4g
YXMgdGhlIG1haW4gcGFnZS4iX3MpOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNlbmRpZiAvLyBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQpCiAgICAg
ICAgIGluY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICNlbmRpZgpAQCAtMTg1
Myw3ICsxODUzLDcgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQQog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIHZvaWQgRE9NV2luZG93OjppbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVy
c0NvdW50KCkKIHsKQEAgLTE4NzksOCArMTg3OSw4IEBAIHZvaWQgRE9NV2luZG93OjpkZWNyZW1l
bnRTY3JvbGxFdmVudExpc3QKIAogdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKCkKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGUgUExBVEZPUk0o
SU9TKS1ndWFyZD8KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAg
ICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQ/
CisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChtX25hdmlnYXRvcikKICAgICAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20obV9uYXZp
Z2F0b3IuZ2V0KCkpLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOwogI2VuZGlmCkBA
IC0xOTAzLDcgKzE5MDMsNyBAQCBib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRF
dmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIHJlbW92
ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklF
TlRBVElPTikKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYm
IGRvY3VtZW50KCkpCiAgICAgICAgIGRvY3VtZW50KCktPmRldmljZU1vdGlvbkNvbnRyb2xsZXIo
KS0+cmVtb3ZlRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgZG9jdW1lbnQoKSkK
QEAgLTE5MTYsOSArMTkxNiw5IEBAIGJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnMKICAgICAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxl
ciA9IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKCkpKQogICAgICAgICAg
ICAgY29udHJvbGxlci0+cmVtb3ZlRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICB9Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
ZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnRO
YW1lcygpLnNjcm9sbEV2ZW50KQogICAgICAgICBkZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVy
c0NvdW50KCk7CiAjZW5kaWYKQEAgLTIwMjAsNyArMjAyMCw3IEBAIHZvaWQgRE9NV2luZG93Ojpy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKTsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKERvY3VtZW50KiBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKICAgICAgICAgZG9jdW1lbnQtPmRldmljZU1vdGlv
bkNvbnRyb2xsZXIoKS0+cmVtb3ZlQWxsRGV2aWNlRXZlbnRMaXN0ZW5lcnModGhpcyk7CiAgICAg
ICAgIGRvY3VtZW50LT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQWxsRGV2
aWNlRXZlbnRMaXN0ZW5lcnModGhpcyk7CkBAIC0yMDMwLDEwICsyMDMwLDEwIEBAIHZvaWQgRE9N
V2luZG93OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygKICAgICAgICAgY29udHJvbGxlci0+cmVt
b3ZlQWxsRGV2aWNlRXZlbnRMaXN0ZW5lcnModGhpcyk7CiAgICAgaWYgKERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6
ZnJvbShwYWdlKCkpKQogICAgICAgICBjb250cm9sbGVyLT5yZW1vdmVBbGxEZXZpY2VFdmVudExp
c3RlbmVycyh0aGlzKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNlbmRpZiAvLyBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fc2Ny
b2xsRXZlbnRMaXN0ZW5lckNvdW50KSB7CiAgICAgICAgIG1fc2Nyb2xsRXZlbnRMaXN0ZW5lckNv
dW50ID0gMTsKICAgICAgICAgZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcg
QEAgcHVibGljOgogICAgIFBlcmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgaW5jcmVtZW50U2Nyb2xs
RXZlbnRMaXN0ZW5lcnNDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0
ZW5lcnNDb3VudCgpOwogICAgIHVuc2lnbmVkIHNjcm9sbEV2ZW50TGlzdGVuZXJDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsRXZlbnRMaXN0ZW5lckNvdW50OyB9CkBAIC0zODcsNyArMzg3
LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFBhZ2VTdGF0dXMgeyBOb25lLCBTaG93biwg
SGlkZGVuIH07CiAgICAgUGFnZVN0YXR1cyBtX2xhc3RQYWdlU3RhdHVzIHsgUGFnZVN0YXR1czo6
Tm9uZSB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdW5zaWduZWQgbV9zY3JvbGxFdmVudExpc3RlbmVyQ291bnQgeyAwIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnTG93UG93ZXIKIGJvb2wgRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjpnUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVkID0gZmFsc2U7
CiBib29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Z0FsbG93c0FueVNTTENlcnRpZmljYXRl
ID0gZmFsc2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnTmV0d29ya0RhdGFVc2FnZVRyYWNraW5n
RW5hYmxlZCA9IGZhbHNlOwogYm9vbCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmdBVktpdEVu
YWJsZWQgPSBmYWxzZTsKIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnU2hvdWxkT3B0
T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbiA9IGZhbHNlOwpAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRSZXNvdXIKICAgICBnUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVkID0gZmxhZzsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3M6OnNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUodW5zaWduZWQgc2Vzc2lvbkNhdGVn
b3J5KQogewogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5T3Zl
cnJpZGUoc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+KHNlc3Npb25DYXRl
Z29yeSkpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpnbG9iYWxDb24KIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgcmV0dXJuICFNYWNBcHBsaWNh
dGlvbjo6aXNJQm9va3MoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgcmV0dXJuICFJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKTsKICNlbHNl
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkgeyByZXR1cm4gZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkRW5hYmxlZDsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QXVkaW9TZXNzaW9uQ2F0
ZWdvcnlPdmVycmlkZSh1bnNpZ25lZCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGF1ZGlvU2Vzc2lv
bkNhdGVnb3J5T3ZlcnJpZGUoKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGJvb2wgZ1Nob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOwogI2VuZGlmCiAgICAg
c3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVyczsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMg
Ym9vbCBnTmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5hYmxlZDsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBnQVZLaXRFbmFibGVkOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGdTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYs
NyArMTg2LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6cGxhdGZvcm1HZW5l
cmljRHJhZ09wZXJhdGlvbigpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIG92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgPSAwOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RGVs
YXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZp
Y2F0aW9ucygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rp
b24oKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudEluQXBwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmICFQTEFURk9STShJT1MpKQorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkR2VzdHVyZXNU
cmlnZ2VyQWN0aXZlKCkKIHsKICAgICAvLyBJZiB0aGUgcGxhdGZvcm0gd2UncmUgb24gc3VwcG9y
dHMgR2VzdHVyZVRhcERvd24gYW5kIEdlc3R1cmVUYXBDYW5jZWwgdGhlbiB3ZSdsbApAQCAtNjgz
LDcgKzY4Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBUaGUgdGV4dCBzZWxlY3Rpb24gYXNzaXN0YW50IHdpbGwgaGFuZGxlIHNlbGVjdGlv
biBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgYWxyZWFkeSBlZGl0aW5nIHRoZSBub2RlCiAgICAg
aWYgKG5ld1NlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gdGFyZ2V0Tm9kZS0+cm9v
dEVkaXRhYmxlRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTYsNyArMTA1
Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKICAgICAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5o
YXNFZGl0YWJsZVN0eWxlKCkpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0g
bm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51
bGxwdHIpOwogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3Mp
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAg
ICAgLy8gT24gaU9TLCBzZWxlY3Rpb24gY2hhbmdlcyBhcmUgdHJpZ2dlcmVkIHVzaW5nIHBsYXRm
b3JtLXNwZWNpZmljIHRleHQgaW50ZXJhY3Rpb24gZ2VzdHVyZXMgcmF0aGVyIHRoYW4KICAgICAg
ICAgICAgIC8vIGRlZmF1bHQgYmVoYXZpb3Igb24gY2xpY2sgb3IgbW91c2V1cC4gQXMgc3VjaCwg
dGhlIG9ubHkgdGltZSB3ZSBzaG91bGQgYWxsb3cgY2xpY2sgZXZlbnRzIHRvIGNoYW5nZSB0aGUK
ICAgICAgICAgICAgIC8vIHNlbGVjdGlvbiBvbiBpT1MgaXMgd2hlbiB3ZSBmb2N1cyBhIGRpZmZl
cmVudCBlZGl0YWJsZSBlbGVtZW50LCBpbiB3aGljaCBjYXNlIHRoZSB0ZXh0IGludGVyYWN0aW9u
CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Nyb2xsU3Rv
cCgpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdGFydFBhblNjcm9sbGluZygmZG93bmNhc3Q8
UmVuZGVyQm94PihyZW5kZXJlciksIGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CkBAIC0xOTI2
LDcgKzE5MjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAg
ICAgICAgIHJldHVybiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVF
dmVudCwgbV9mcmFtZVNldEJlaW5nUmVzaXplZC5nZXQoKSwgZmFsc2UsIDAsIHBsYXRmb3JtTW91
c2VFdmVudCwgZmFsc2UpOwogCiAgICAgLy8gT24gaU9TLCBvdXIgc2Nyb2xsYmFycyBhcmUgbWFu
YWdlZCBieSBVSUtpdC4KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIFNlbmQgZXZlbnRzIHJpZ2h0IHRvIGEgc2Nyb2xsYmFyIGlmIHRoZSBtb3Vz
ZSBpcyBwcmVzc2VkLgogICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICYmIG1fbW91
c2VQcmVzc2VkKQogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91
c2VNb3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQpOwpAQCAtMTk2MCw3ICsxOTYwLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KAogICAgICAgICB1cGRhdGVMYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZShzY3JvbGxiYXIsIG1fbW91c2VQcmVzc2VkID8gU2V0T3JDbGVhckxh
c3RTY3JvbGxiYXI6OkNsZWFyIDogU2V0T3JDbGVhckxhc3RTY3JvbGxiYXI6OlNldCk7CiAKICAg
ICAgICAgLy8gT24gaU9TLCBvdXIgc2Nyb2xsYmFycyBhcmUgbWFuYWdlZCBieSBVSUtpdC4KLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
IW1fbW91c2VQcmVzc2VkICYmIHNjcm9sbGJhcikKICAgICAgICAgICAgIHNjcm9sbGJhci0+bW91
c2VNb3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQpOyAvLyBIYW5kbGUgaG92ZXIgZWZmZWN0cyBvbiBw
bGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHZpc3VhbCBmZWVkYmFjayBvbiBzY3JvbGxiYXIgaG92ZXJp
bmcuCiAjZW5kaWYKQEAgLTI2ODcsMjUgKzI2ODcsMjUgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNs
ZWFyT3JTY2hlZHVsZUNsZWFyaQogICAgIGNsZWFyTGF0Y2hlZFN0YXRlKCk7CiB9CiAgICAgCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKIEludFBv
aW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9z
Y3JvbGwoKSBjb25zdAogewogICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247CiB9
CiAgICAgCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQogICAgIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgCiBib29sIEV2ZW50SGFu
ZGxlcjo6c2hvdWxkVXBkYXRlQXV0b3Njcm9sbCgpCiB7CiAgICAgcmV0dXJuIG1vdXNlUHJlc3Nl
ZCgpOwogfQogICAgIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIFdpZGdldCogRXZlbnRIYW5kbGVyOjp3aWRnZXRGb3JFdmVudFRh
cmdldChFbGVtZW50KiBldmVudFRhcmdldCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogT0JKQ19DTEFTUyBOU1Zp
ZXc7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogT0JKQ19DTEFTUyBXZWJFdmVudDsKICNlbmRpZgogCkBAIC01NSw3ICs1NSw3IEBAIE9CSkNf
Q0xBU1MgV2ViRXZlbnQ7CiBPQkpDX0NMQVNTIE5TRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykgJiYgZGVmaW5lZChfX09CSkNfXykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBkZWZpbmVkKF9fT0JKQ19fKQogI2luY2x1ZGUgIldBS0FwcEtpdFN0dWJzLmgiCiAjZW5kaWYK
IApAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRl
ZmF1bHRUb3VjaEV2ZW50SGFuZGxlcihOb2RlJiwgVG91Y2hFdmVudCYpOwogI2VuZGlmCiAKQEAg
LTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3aGVlbEV2
ZW50KE5TRXZlbnQgKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VEb3duKFdlYkV2ZW50
ICopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VVcChXZWJFdmVudCAqKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlTW92ZWQoV2ViRXZlbnQgKik7CkBAIC0zMDgsNyArMzA4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBOU0V2ZW50ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVF
dmVudCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBzdGF0aWMgV2ViRXZlbnQgKmN1cnJlbnRFdmVudCgpOwogCiAgICAgdm9pZCBp
bnZhbGlkYXRlQ2xpY2soKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB0cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbik7CiAj
ZW5kaWYKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2VsZWN0aW9uQXV0b3Njcm9sbChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbkluV2luZG93KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbFNlbGVjdGlvbkF1dG9zY3JvbGwoKTsKICAgICBJ
bnRQb2ludCBtX3RhcmdldEF1dG9zY3JvbGxQb3NpdGlvbkluV2luZG93OwpAQCAtMzk3LDcgKzM5
Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVu
YWJsZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xp
Y2soKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw3ICsxMDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2VuZGlm
CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbEZyZXF1ZW5jeSB7IDEwMDBfcyAvIDYw
LiB9OwogI2VuZGlmCiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBGcmFtZTo6RnJhbWUoUGFnZSYgcGFn
ZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgLCBtX2VkaXRvcihtYWtlVW5pcXVlUmVmPEVkaXRvcj4o
KnRoaXMpKQogICAgICwgbV9zZWxlY3Rpb24obWFrZVVuaXF1ZVJlZjxGcmFtZVNlbGVjdGlvbj4o
dGhpcykpCiAgICAgLCBtX2FuaW1hdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxDU1NBbmlt
YXRpb25Db250cm9sbGVyPigqdGhpcykpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLCBtX292ZXJmbG93QXV0b1Njcm9sbFRpbWVyKCp0aGlzLCAmRnJh
bWU6Om92ZXJmbG93QXV0b1Njcm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlbGVjdGlvbkNoYW5n
ZUNhbGxiYWNrc0Rpc2FibGVkKGZhbHNlKQogI2VuZGlmCkBAIC01MDMsNyArNTAzLDcgQEAgU3Ry
aW5nIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KAogICAgIHJldHVybiBtYXRjaExh
YmVsc0FnYWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGlkQXR0cikpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiB2b2lkIEZyYW1lOjpzY3JvbGxPdmVyZmxvd0xheWVyKFJlbmRlckxheWVy
KiBsYXllciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGV4cG9z
ZVJlY3QpCiB7CiAgICAgaWYgKCFsYXllcikKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIEZyYW1l
OjpzZWxlY3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhCiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0aW9u
Q2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQ7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJv
b2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
b3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6
ZU9yTm90IHNob3VsZEFkanVzdFZpZXdTaXplKQogewpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQg
RnJhbWU6OndpbGxEZXRhY2hQYWdlKCkKICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSAmJiBtX3ZpZXcpCiAgICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKS0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqbV92aWV3KTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRD
b3VudE9mT2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzKCkgPiAwICYmIG1fcGFnZSkKICAgICAgICAg
bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jbGVhckNvbnRlbnRDaGFuZ2VPYnNlcnZlcnMoKnRo
aXMpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNp
YmxlU2VsZWN0aW9uLmgiCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIFZpc2li
bGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogZW51bSB7CiAgICAgT3ZlcmZsb3dTY3JvbGxOb25lID0gMCwKICAg
ICBPdmVyZmxvd1Njcm9sbExlZnQgPSAxIDw8IDAsCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5pdCgpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIENyZWF0ZXMgPGh0bWw+PGJvZHkgc3R5bGU9Ii4uLiI+PC9ib2R5Pjwv
aHRtbD4gZG9pbmcgbWluaW1hbCBhbW91bnQgb2Ygd29yay4KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0
IFVSTCYpOwogI2VuZGlmCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIE5TQXJyYXkg
KmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVz
dWx0cy5nZXQoKTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVu
dHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRz
KGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJl
c3VsdElzSW5DZWxsQWJvdmUpOwogICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFNjcm9sbCB0aGUgc2VsZWN0
aW9uIGluIGFuIG92ZXJmbG93IGxheWVyLgogICAgIHZvaWQgc2Nyb2xsT3ZlcmZsb3dMYXllcihS
ZW5kZXJMYXllciosIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBl
eHBvc2VSZWN0KTsKIApAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQogICAgIFJldGFpblB0cjxOU0FycmF5PiBtX2RhdGFEZXRlY3Rpb25SZXN1
bHRzOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCBiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29uc3QgSW50UG9pbnQmIHRlc3RQb2lu
dCwgY29uc3QgTm9kZVF1YWxpZmllciYsIE5vZGUqJiBiZXN0LCBOb2RlKiBmYWlsZWROb2RlLCBJ
bnRQb2ludCYgYmVzdFBvaW50LCBJbnRSZWN0JiBiZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgdGVz
dFJlY3QpOwogICAgIGJvb2wgaGl0VGVzdFJlc3VsdEF0Vmlld3BvcnRMb2NhdGlvbihjb25zdCBG
bG9hdFBvaW50JiB2aWV3cG9ydExvY2F0aW9uLCBIaXRUZXN0UmVzdWx0JiwgSW50UG9pbnQmIGNl
bnRlcik7CiAgICAgTm9kZSogcXVhbGlmeWluZ05vZGVBdFZpZXdwb3J0TG9jYXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgdmlld3BvcnRMb2NhdGlvbiwgRmxvYXRQb2ludCYgYWRqdXN0ZWRWaWV3cG9y
dExvY2F0aW9uLCBjb25zdCBOb2RlUXVhbGlmaWVyJiwgYm9vbCBzaG91bGRBcHByb3hpbWF0ZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3
ICsxMTMsNyBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIgogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVDYWNoZS5oIgogI2VuZGlmCkBA
IC0xOTMsNyArMTkzLDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUmIGZyYW1lKQogICAg
ICwgbV9zaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbih0cnVlKQogICAgICwgbV9zcGVjdWxhdGl2
ZVRpbGluZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NwZWN1bGF0aXZlVGlsaW5nRW5hYmxlVGlt
ZXIoKnRoaXMsICZGcmFtZVZpZXc6OnNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlVGltZXJGaXJlZCkK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdXNl
Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoZmFsc2UpCiAgICAgLCBtX3VzZUN1c3RvbVNp
emVGb3JSZXNpemVFdmVudChmYWxzZSkKICNlbmRpZgpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpjbGVhcigpCiAKICAgICBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZCh0cnVlKTsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRv
IGF2b2lkIGZsYXNoZXMgb2Ygd2hpdGUsIGRpc2FibGUgdGlsZSB1cGRhdGVzIGltbWVkaWF0ZWx5
IHdoZW4gdmlldyBpcyBjbGVhcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBwYWdlIGxvYWQuCiAg
ICAgLy8gVGlsaW5nIHdpbGwgYmUgcmUtZW5hYmxlZCBmcm9tIFVJS2l0IHZpYSBbV0FLV2luZG93
IHNldFRpbGluZ01vZGU6XSB3aGVuIHdlIGhhdmUgY29udGVudCB0byBkcmF3LgogICAgIGlmIChM
ZWdhY3lUaWxlQ2FjaGUqIHRpbGVDYWNoZSA9IGxlZ2FjeVRpbGVDYWNoZSgpKQpAQCAtNDI0LDcg
KzQyNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpjbGVhcigpCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBGcmFtZVZpZXc6OmRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkKIHsKICAgICAvLyBSZS1lbmFibGUgdGlsZSB1cGRhdGVz
IHRoYXQgd2VyZSBkaXNhYmxlZCBpbiBjbGVhcigpLgpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpzZXRNYXJnaW5IZWlnaHQoTGF5b3V0VW4KIAogRnJhbWVGbGF0dGVuaW5nIEZy
YW1lVmlldzo6ZWZmZWN0aXZlRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1Mgd2hlbiBhc3lu
YyBmcmFtZSBzY3JvbGxpbmcgaXMgZW5hYmxlZCwgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB1
c2UgZnVsbCBmcmFtZSBmbGF0dGVuaW5nLgogICAgIC8vIEluIHRoYXQgY2FzZSwgd2UganVzdCBj
b25zaWRlciB0aGF0IGZyYW1lIGZsYXR0ZW5pbmcgaXMgZGlzYWJsZWQuIFRoaXMgYWxsb3dzIHBl
b3BsZSB0byB0ZXN0CiAgICAgLy8gZnJhbWUgc2Nyb2xsaW5nIG9uIGlPUyBieSBlbmFibGluZyAi
QXN5bmMgRnJhbWUgU2Nyb2xsaW5nIiB2aWEgdGhlIFNhZmFyaSBtZW51LgpAQCAtOTk0LDcgKzk5
NCw3IEBAIGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3IKICAgICBpZiAo
bmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKExlZ2FjeVRpbGVDYWNoZSogdGls
ZUNhY2hlID0gbGVnYWN5VGlsZUNhY2hlKCkpCiAgICAgICAgIHRpbGVDYWNoZS0+ZG9QZW5kaW5n
UmVwYWludHMoKTsKICNlbmRpZgpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgTGF5b3V0UmVjdCBGcmFt
ZVZpZXc6OmZpeGVkU2Nyb2xsYWJsZUFyZQogCiBMYXlvdXRQb2ludCBGcmFtZVZpZXc6OnNjcm9s
bFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRpb24oKSBjb25zdAogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZnJhbWUoKS5z
ZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdXNlQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSA/IGN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0KCkubG9jYXRpb24oKSA6IHNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKQEAgLTE3OTIsNyAr
MTc5Miw3IEBAIExheW91dFJlY3QgRnJhbWVWaWV3Ojp2aWV3cG9ydENvbnN0cmFpbmUKIHsKICAg
ICBBU1NFUlQoIWZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSk7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAodXNl
Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSkKICAgICAgICAgcmV0dXJuIGN1c3RvbUZp
eGVkUG9zaXRpb25MYXlvdXRSZWN0KCk7CiAjZW5kaWYKQEAgLTE4ODMsNyArMTg4Myw3IEBAIEZs
b2F0UG9pbnQgRnJhbWVWaWV3Ojpwb3NpdGlvbkZvclJvb3RDb24KICAgICByZXR1cm4gcG9zaXRp
b25Gb3JSb290Q29udGVudExheWVyKHNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9yaWdpbigpLCB0
b3BDb250ZW50SW5zZXQoKSwgaGVhZGVySGVpZ2h0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBMYXlvdXRSZWN0IEZyYW1lVmlldzo6cmVjdEZv
clZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGNvbnN0IExheW91dFJlY3QmIHZpc2libGVDb250
ZW50UmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG90YWxDb250ZW50c1NpemUsIGZsb2F0IGZyYW1l
U2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgU2Ny
b2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIHNjcm9sbEJlaGF2aW9yKQogewogICAgIGlmIChm
aXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQpAQCAtMjY2NCw3ICsyNjY0LDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCiAgICAgaWYgKCFmcmFtZSgpLnZp
ZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkgewogICAgICAgICBpZiAodXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3QoKSAmJiBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKSB7CiAgICAgICAgICAgICBz
ZXRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKQEAgLTI3MDcsNyArMjcw
Nyw3IEBAIFRpbGVkQmFja2luZzo6U2Nyb2xsYWJpbGl0eSBGcmFtZVZpZXc6OmMKICAgICBib29s
IHZlcnRpY2FsbHlTY3JvbGxhYmxlOwogICAgIGJvb2wgY2xpcHBlZEJ5QW5jZXN0b3JWaWV3ID0g
c3RhdGljX2Nhc3Q8Ym9vbD4obV92aWV3RXhwb3NlZFJlY3QpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHBhZ2UpCiAgICAgICAgIGNsaXBw
ZWRCeUFuY2VzdG9yVmlldyB8PSBwYWdlLT5lbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmll
dygpOwogI2VuZGlmCkBAIC0yNzQyLDcgKzI3NDIsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRl
VGlsZWRCYWNraW5nQWRhcHRpCiAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxhYmlsaXR5KGNv
bXB1dGVTY3JvbGxhYmlsaXR5KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIHZvaWQgRnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVD
aGFuZ2VkKCkKIHsKQEAgLTI4MTQsNyArMjgxNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RU
aWxlZEJhY2tpbmdDb3ZlcmEKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVu
ZGVyVmlldygpOwogICAgIGlmIChyZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPmxheWVyKCkgJiYg
cmVuZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpKQogICAgICAgICByZW5kZXJWaWV3LT5sYXll
cigpLT5iYWNraW5nKCktPmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKExlZ2FjeVRpbGVDYWNo
ZSogdGlsZUNhY2hlID0gbGVnYWN5VGlsZUNhY2hlKCkpCiAgICAgICAgIHRpbGVDYWNoZS0+c2V0
U3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkKG1fc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVk
KTsKICNlbmRpZgpAQCAtMjk3Myw3ICsyOTczLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUV4
dGVuZEJhY2tncm91bmRJZgogCiBGcmFtZVZpZXc6OkV4dGVuZGVkQmFja2dyb3VuZE1vZGUgRnJh
bWVWaWV3OjpjYWxjdWxhdGVFeHRlbmRlZEJhY2tncm91bmRNb2RlKCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyA8cmRhcjovL3By
b2JsZW0vMTYyMDEzNzM+CiAgICAgcmV0dXJuIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lOwog
I2Vsc2UKQEAgLTMyNDAsNyArMzI0MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExh
eW91dFRhc2tzKCkKICAgICBpZiAoIWxheW91dENvbnRleHQoKS5pc0xheW91dE5lc3RlZCgpICYm
IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIGZpcmVMYXlv
dXRSZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbmx5IHNlbmQgbGF5b3V0LXJlbGF0ZWQgZGVs
ZWdhdGUgY2FsbGJhY2tzIHN5bmNocm9ub3VzbHkgZm9yIHRoZSBtYWluIGZyYW1lIHRvCiAgICAg
Ly8gYXZvaWQgcmUtZW50ZXJpbmcgbGF5b3V0IGZvciB0aGUgbWFpbiBmcmFtZSB3aGlsZSBkZWxp
dmVyaW5nIGEgbGF5b3V0LXJlbGF0ZWQgZGVsZWdhdGUKICAgICAvLyBjYWxsYmFjayBmb3IgYSBz
dWJmcmFtZS4KQEAgLTMyODYsNyArMzI4Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKCkKIAogSW50U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JSZXNpemVFdmVudCgp
IGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKG1fdXNlQ3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50KQogICAgICAgICByZXR1cm4gbV9j
dXN0b21TaXplRm9yUmVzaXplRXZlbnQ7CiAjZW5kaWYKQEAgLTMzMTksNyArMzMxOSw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgKICAgICBpZiAoIWxheW91dENv
bnRleHQoKS5kaWRGaXJzdExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBEb24ndCBzZW5kIHRoZSBy
ZXNpemUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGlzIGxvYWRpbmcuIFNvbWUgcGFnZXMgYXV0b21h
dGljYWxseSByZWxvYWQKICAgICAvLyB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZDsgU2FmYXJp
IG9uIGlPUyBvZnRlbiByZXNpemVzIHRoZSB3aW5kb3cgd2hpbGUgc2V0dGluZyB1cCBpdHMKICAg
ICAvLyB2aWV3cG9ydC4gVGhpcyBvYnZpb3VzbHkgY2FuIGNhdXNlIHByb2JsZW1zLgpAQCAtNDg5
Myw3ICs0ODkzLDcgQEAgQVhPYmplY3RDYWNoZSogRnJhbWVWaWV3OjpheE9iamVjdENhY2hlKAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBib29sIEZyYW1lVmlldzo6dXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91
dFJlY3QoKSBjb25zdAogewogICAgIHJldHVybiAhZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZp
ZXdwb3J0RW5hYmxlZCgpICYmIG1fdXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q7CkBA
IC00OTM4LDcgKzQ5MzgsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsVmVsb2NpdHkoZG91
YmxlCiAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gdGhpcy0+dGlsZWRCYWNr
aW5nKCkpCiAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0VmVsb2NpdHkoVmVsb2NpdHlEYXRhKGhv
cml6b250YWxWZWxvY2l0eSwgdmVydGljYWxWZWxvY2l0eSwgc2NhbGVDaGFuZ2VSYXRlLCB0aW1l
c3RhbXApKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoYm9vbCBmbGFnKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVNlbGVjdGlvblVwZGF0ZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYm9vbCB1c2VDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpIGNv
bnN0OwogICAgIEludFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0OyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdChjb25zdCBJbnRSZWN0
Jik7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCB5UG9zaXRp
b25Gb3JIZWFkZXJMYXllcihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQg
dG9wQ29udGVudEluc2V0KTsKICAgICBzdGF0aWMgZmxvYXQgeVBvc2l0aW9uRm9yRm9vdGVyTGF5
ZXIoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGZsb2F0IHRvcENvbnRlbnRJbnNl
dCwgZmxvYXQgdG90YWxDb250ZW50c0hlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0KTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQ
T1JUIExheW91dFJlY3Qgdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNSZWN0KCkgY29uc3Q7CiAg
ICAgLy8gU3RhdGljIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4K
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTGF5b3V0UmVjdCByZWN0Rm9yVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25z
dCBMYXlvdXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZSwgZmxvYXQgZnJhbWVTY2FsZUZhY3Rvciwg
Ym9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lLCBTY3JvbGxCZWhhdmlvckZv
ckZpeGVkRWxlbWVudHMpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdp
bGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgUGFpbnRpbmdTdGF0ZSYpOwogICAgIHZvaWQgZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3RhdGUmKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKICNlbmRpZgogCkBAIC03Mjcs
NyArNzI3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgY29udGVudHNSZXNpemVkKCkg
ZmluYWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBmaW5hbDsKICNlbmRpZgogCkBA
IC04ODAsNyArODgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3BlY3VsYXRpdmVUaWxpbmdF
bmFibGVkOwogICAgIFRpbWVyIG1fc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1lcjsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV91c2VD
dXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDsKICAgICBJbnRSZWN0IG1fY3VzdG9tRml4ZWRQ
b3NpdGlvbkxheW91dFJlY3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcy
LDcgKzE3Miw3IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0KCkKICAgICBp
ZiAobV9maXJzdExheW91dCAmJiAhZnJhbWUoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgTE9H
KExheW91dCwgIkZyYW1lVmlldyAlcCBlbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDog
JS4zZnMiLCB0aGlzLCBkb2N1bWVudCgpLT50aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCkudmFs
dWUoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAodmlldygpLnVwZGF0ZUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KCkgJiYgc3Vi
dHJlZUxheW91dFJvb3QoKSkKICAgICAgICAgY29udmVydFN1YnRyZWVMYXlvdXRUb0Z1bGxMYXlv
dXQoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNy
aXRpY2FsTWVtb3J5KFN5bmNocgogICAgIGlmIChzeW5jaHJvbm91cyA9PSBTeW5jaHJvbm91czo6
WWVzKSB7CiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3RO
b3coKTsKICAgICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0
Tm93SWZOb3REb25lUmVjZW50bHkoKTsKICNlbHNlCiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBy
ZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeQogICAgIGlmIChzeW5jaHJvbm91cyA9
PSBTeW5jaHJvbm91czo6WWVzKSB7CiAgICAgICAgIC8vIEZhc3RNYWxsb2MgaGFzIGxvY2stZnJl
ZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJlZCBmcm9tIHRo
ZSB0aHJlYWQgaXRzZWxmLgogICAgICAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
ICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goV1RGOjpyZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkpOwogI2VuZGlmCiAgICAgICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIE5hdmlnYXRvcjo6amF2YUVuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgTmF2aWdhdG9yOjpzdGFuZGFsb25lKCkgY29u
c3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZURhdGEsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYpOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgc3RhbmRhbG9uZSgpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIg
KzM5LDEyIEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEZXZpY2Uu
aCIKICNlbmRpZgogCiAjaWZuZGVmIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIFdFQkNPUkVfTkFW
SUdBVE9SX1BMQVRGT1JNIGRldmljZU5hbWUoKQogI2VsaWYgT1MoTUFDX09TX1gpICYmIChDUFUo
UFBDKSB8fCBDUFUoUFBDNjQpKQogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSAi
TWFjUFBDIl9zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjUsNyArMTcy
NSw3IEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1YKICAgICAgICAg
bV9pc1ByZXJlbmRlciA9IGZhbHNlOwogCiAgICAgICAgIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
cygpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICByZXN1bWVEZXZpY2VNb3Rpb25BbmRPcmllbnRhdGlvblVwZGF0ZXMoKTsKICNlbmRpZgogCkBA
IC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wg
aXNWCiAKICAgICAgICAgc2V0U1ZHQW5pbWF0aW9uc1N0YXRlKCp0aGlzLCBTVkdBbmltYXRpb25z
U3RhdGU6OlBhdXNlZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgc3VzcGVuZERldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygp
OwogI2VuZGlmCiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUGFnZTo6cmVtb3ZlUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGkKIAogdm9pZCBQYWdlOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sIGJv
b2wgaXNWaWRlbywgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJiByb3V0aW5nQ29udGV4dFVJRCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogcmVmYWN0b3IgaU9TIGltcGxlbWVudGF0
aW9uLgogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0SWQpOwogICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoY29uc3QgRmxvYXRCb3hF
eHRlbnQmKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcoKSBjb25zdCB7IHJldHVy
biBtX2VuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3OyB9CiAgICAgdm9pZCBzZXRFbmNs
b3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldyhib29sIGYpIHsgbV9lbmNsb3NlZEluU2Nyb2xs
YWJsZUFuY2VzdG9yVmlldyA9IGY7IH0KICNlbmRpZgpAQCAtNzg0LDcgKzc4NCw3IEBAIHByaXZh
dGU6CiAgICAgRmxvYXRCb3hFeHRlbnQgbV9mdWxsc2NyZWVuSW5zZXRzOwogICAgIFNlY29uZHMg
bV9mdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbiB7IDBfcyB9OwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2VuY2xvc2VkSW5TY3JvbGxh
YmxlQW5jZXN0b3JWaWV3IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1lbW9yeVVzYWdlTWVhc3Vy
ZW0KIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5QmVmb3JlUHJvY2Vzc01heUJlY29tZUluYWN0
aXZlIHsgOF9taW4gfTsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBwb3N0UGFnZUxvYWRDUFVVc2Fn
ZURvbWFpblJlcG9ydGluZ1RocmVzaG9sZCB7IDIwLjAgfTsgLy8gUmVwb3J0aW5nIHBhZ2VzIHVz
aW5nIG92ZXIgMjAlIENQVSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcmVwb3J0aW5nIHRoZSAx
MCUgd29yc3QgcGFnZXMuCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHN0YXRpYyBjb25zdCB1aW50NjRfdCBwb3N0UGFnZUxvYWRNZW1vcnlVc2FnZURvbWFp
blJlcG9ydGluZ1RocmVzaG9sZCB7IDIwNDggKiBNQiB9OwogI2VuZGlmCiAKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkCiAgICAgbV9w
YWdlLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRNZW1vcnlVc2FnZUtleSgpLCBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6Om1lbW9yeVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luZ0tleShtZW1vcnlVc2Fn
ZS52YWx1ZSgpKSwgU2hvdWxkU2FtcGxlOjpObyk7CiAKICAgICAvLyBPbiBpT1MsIHdlIHJlcG9y
dCBhY3R1YWwgSmV0c2FtcyBpbnN0ZWFkLgotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1lbW9yeVVzYWdlLnZhbHVlKCkgPiBwb3N0UGFnZUxv
YWRNZW1vcnlVc2FnZURvbWFpblJlcG9ydGluZ1RocmVzaG9sZCkKICAgICAgICAgcmVwb3J0UGFn
ZU92ZXJQb3N0TG9hZFJlc291cmNlVGhyZXNob2xkKG1fcGFnZSwgUmVwb3J0aW5nUmVhc29uOjpI
aWdoTWVtb3J5VXNhZ2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291
cmNlVXNhZ2VPdmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VPdmVybGF5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6aW5pdGlhbGl6ZSgpCiAKICAgICBJ
bnRSZWN0IGluaXRpYWxSZWN0KGZyYW1lVmlldy53aWR0aCgpIC8gMiAtIG5vcm1hbFdpZHRoIC8g
MiwgZnJhbWVWaWV3LmhlaWdodCgpIC0gbm9ybWFsSGVpZ2h0IC0gMjAsIG5vcm1hbFdpZHRoLCBu
b3JtYWxIZWlnaHQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gRklYTUU6IFRoZSBvdmVybGF5IHNob3VsZCBiZSBzdHVjayB0byB0aGUgdmll
d3BvcnQgaW5zdGVhZCBvZiBtb3ZpbmcgYWxvbmcgd2l0aCB0aGUgcGFnZS4KICAgICBpbml0aWFs
UmVjdC5zZXRZKDIwKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBTZWN1
cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUgogICAgIGlmIChtX3VuaXZlcnNhbEFjY2Vz
cykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2RhdGEucHJvdG9jb2wgPT0gImZpbGUiICYmIHVy
bC5pc0xvY2FsRmlsZSgpICYmICFGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmls
ZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgZmxvYXQgU2V0dGluZ3NCYXNlOjpkZWZhdWx0TWluaW11bVpv
b21GbwogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogYm9vbCBTZXR0aW5nc0Jhc2U6OmRlZmF1bHRUZXh0QXV0b3NpemluZ0VuYWJsZWQo
KQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2Uu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBlbnVtIFBERkltYWdlQ2FjaGluZ1Bv
bGljeSB7CiAgICAgUERGSW1hZ2VDYWNoaW5nQmVsb3dNZW1vcnlMaW1pdCwKICAgICBQREZJbWFn
ZUNhY2hpbmdEaXNhYmxlZCwKICAgICBQREZJbWFnZUNhY2hpbmdDbGlwQm91bmRzT25seSwKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQREZJbWFnZUNh
Y2hpbmdEZWZhdWx0ID0gUERGSW1hZ2VDYWNoaW5nQmVsb3dNZW1vcnlMaW1pdAogI2Vsc2UKICAg
ICBQREZJbWFnZUNhY2hpbmdEZWZhdWx0ID0gUERGSW1hZ2VDYWNoaW5nRW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIDk5
KSBNYWNFZGl0aW5nQmVoYXZpb3IgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLgogaW5saW5lIEVkaXRp
bmdCZWhhdmlvclR5cGUgZWRpdGluZ0JlaGF2aW9yVHlwZUZvclBsYXRmb3JtKCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gRWRpdGlu
Z0lPU0JlaGF2aW9yOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHJldHVybiBFZGl0aW5nTWFjQmVo
YXZpb3I7CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRZb3VUdWJl
Rmxhc2hQbHUKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRZb3VUdWJlRmxhc2hQbHVnaW5SZXBs
YWNlbWVudEVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Rml4ZWRCYWNr
Z3JvdW5kc1BhaW50UmVsYXRpdmVUb0RvY3VtZW50ID0gdHJ1ZTsKIHN0YXRpYyBjb25zdCBib29s
IGRlZmF1bHRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQgPSB0
cnVlOwogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2sg
PSBmYWxzZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVk
aWFFbmFibGVkID0gCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVkID0gZmFs
c2U7CiAjZW5kaWYKICAgICAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQor
I2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogc3RhdGljIGNvbnN0
IGJvb2wgZGVmYXVsdENvbmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBi
b29sIGRlZmF1bHRDb25pY0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VGV4dEluZGljYXRvci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiU2Vs
ZWN0aW9uUmVjdC5oIgogI2VuZGlmCiAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmUHRyPFRleHRJbmRp
Y2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZQogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgT3B0aW9uU2V0PFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uczsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0ZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzKTsKICAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKQEAgLTE4MSw3ICsx
ODEsNyBAQCBzdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JECiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uUmVjdHNGb3JSYW5nZShWZWN0b3I8RmxvYXRS
ZWN0PiYgcmVzdWx0aW5nUmVjdHMsIGNvbnN0IFJhbmdlJiByYW5nZSkKIHsKQEAgLTMwNCw3ICsz
MDQsNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpCiAKICAgICBp
ZiAoKGRhdGEub3B0aW9ucyAmIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQ
YWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzKSAmJiAoaGFzTm9uSW5saW5lT3JSZXBsYWNl
ZEVsZW1lbnRzKHJhbmdlKSB8fCB0cmVhdFJhbmdlQXNDb21wbGV4RHVlVG9JbGxlZ2libGVUZXh0
Q29sb3JzKSkKICAgICAgICAgZGF0YS5vcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25QYWlu
dEFsbENvbnRlbnQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgZWxzZSBpZiAoZGF0YS5vcHRpb25zICYgVGV4dEluZGljYXRvck9wdGlvblVzZVNlbGVj
dGlvblJlY3RGb3JTaXppbmcpCiAgICAgICAgIGdldFNlbGVjdGlvblJlY3RzRm9yUmFuZ2UodGV4
dFJlY3RzLCByYW5nZSk7CiAjZW5kaWYKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpCiAKICAgICAvLyBVc2UgdGhlIGV4cG9zZWRDb250
ZW50UmVjdC92aWV3RXhwb3NlZFJlY3QgaW5zdGVhZCBvZiB2aXNpYmxlQ29udGVudFJlY3QgdG8g
YXZvaWQgY3JlYXRpbmcgYSBodWdlIGluZGljYXRvciBmb3IgYSBsYXJnZSB2aWV3IGluc2lkZSBh
IHNjcm9sbCB2aWV3LgogICAgIEludFJlY3QgY29udGVudHNDbGlwUmVjdDsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0NsaXBSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChmcmFtZVZpZXctPmV4cG9zZWRDb250ZW50UmVjdCgpKTsKICNlbHNl
CiAgICAgaWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gZnJhbWVWaWV3LT52aWV3RXhwb3NlZFJl
Y3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgogI2VuZGlmCiAKQEAgLTMyMiw3ICszMjIsNyBAQCBWaWV3cG9y
dENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMgVmlld3BvCiB7CiAgICAgUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcGFyYW1ldGVycy53aWR0aCA9IHN0YXRpY19jYXN0PGludD4oc2NyZWVuU2l6ZSgpLndpZHRo
KCkpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSB1bmlmaWVkIHdpdGgg
Vmlld3BvcnRBcmd1bWVudHMgb24gYWxsIHBvcnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0IDxub3RpZnkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hlLmgiCiAjaW1w
b3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIKICNlbmRpZgpAQCAtNDcsNyAr
NDcsNyBAQCB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkKICAgICBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2xlYXIoKTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKElP
U01BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpICYmICFQTEFURk9STShJT1NNQUMpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGNhbGwgdG8gR1NGb250SW5pdGlhbGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMyODg2NzE1
PiBpcyBmaXhlZC4KICAgICBHU0ZvbnRJbml0aWFsaXplKCk7CiAgICAgR1NGb250UHVyZ2VGb250
Q2FjaGUoKTsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3Jp
dGljYWwpCiAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29sOjphbGxMYXllclBvb2xzKCkp
CiAgICAgICAgIHBvb2wtPmRyYWluKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBMZWdhY3lUaWxlQ2FjaGU6OmRyYWluTGF5ZXJQb29sKCk7CiAg
ICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCkudHJpbVVucGFyZW50ZWRUaWxlc1RvVGFy
Z2V0KDApOwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVt
b3J5KENyaXRpY2FsKQogCiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0c09uVG9wTGV2ZWxO
YXZpZ2F0aW9uKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBQcm90ZWN0IGFnYWluc3QgZG9pbmcgZXhjZXNzaXZlIGpldHRpc29uaW5nIGR1
cmluZyByZXBlYXRlZCBuYXZpZ2F0aW9ucy4KICAgICBjb25zdCBhdXRvIG1pbmltdW1UaW1lU2lu
Y2VOYXZpZ2F0aW9uID0gMl9zOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgdm9pZCBzaG93VGV4
dChDR0NvbnRleHRSZWYgY29udGV4CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9y
KGNvbnRleHQsIGNvbG9yKTsKIAogICAgIGF1dG8gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlU2NhbGUoMSwgLTEpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gQ0ZTVFIoIkNvdXJpZXIiKTsKICAgICBD
R0Zsb2F0IGZvbnRTaXplID0gMTA7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc2l6ZV90IHZtUGFnZVNpemUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB2bV9rZXJuZWxfcGFnZV9zaXplOwogI2Vsc2UK
ICAgICBzdGF0aWMgc2l6ZV90IGNhY2hlZCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIkRldmljZS5oIgogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1VJ
S2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZSQU1FV09S
SyhVSUtpdCkKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIkV2ZW50SGFuZGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbXBvcnQgIkF1dG9z
Y3JvbGxDb250cm9sbGVyLmgiCkBAIC02OTEsNCArNjkxLDQgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnRyeVRvQmVnaW5EYXRhSW50ZXJhYwogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIkNvbW1vblZNLmgiCkBAIC03NTEsNCArNzUxLDQgQEAgdm9pZCBGcmFtZTo6cmVzZXRB
bGxHZW9sb2NhdGlvblBlcm1pc3NpbwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9DaHJvbWVNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Nocm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogI2ltcG9ydCAiQ2hyb21lQ2xpZW50LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCiAjaW5jbHVkZSAiV0FLVmlldy5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAKICNpbXBvcnQgIlNWR0RvY3VtZW50LmgiCiAjaW1wb3J0IDxwYWwv
TG9nZ2luZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNlbmRpZgogCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShXZWJUaHJlYWROU1J1bkxvb3Ao
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CiAjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihT
Y2hlZHVsZVBhaXI6OmNyZWF0ZShbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gZ2V0Q0ZSdW5M
b29wXSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9XZWJDb3JlRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgIlNjcm9sbFR5cGVzLmgiCiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0u
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCAiV0FLQXBwS2l0U3R1YnMuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUs
NyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29uY2lsCiAgICAgICAgICAg
ICBsYXlvdXRWaWV3cG9ydFJlY3QgPSBvdmVycmlkZVJlY3Q7CiAgICAgICAgICAgICBpZiAodmlz
dWFsVmlld3BvcnRFbmFibGVkICYmIHZpZXdwb3J0UmVjdFN0YWJpbGl0eSAhPSBWaWV3cG9ydFJl
Y3RTdGFiaWxpdHk6OkNoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5KQogICAgICAg
ICAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChMYXlvdXRS
ZWN0KG92ZXJyaWRlUmVjdC52YWx1ZSgpKSwgdmlld3BvcnRSZWN0U3RhYmlsaXR5ID09IFZpZXdw
b3J0UmVjdFN0YWJpbGl0eTo6U3RhYmxlID8gRnJhbWVWaWV3OjpUcmlnZ2VyTGF5b3V0T3JOb3Q6
OlllcyA6IEZyYW1lVmlldzo6VHJpZ2dlckxheW91dE9yTm90OjpObyk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBlbHNlIGlmICh2aWV3
cG9ydFJlY3RTdGFiaWxpdHkgPT0gVmlld3BvcnRSZWN0U3RhYmlsaXR5OjpTdGFibGUpCiAgICAg
ICAgICAgICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KGVu
Y2xvc2luZ0ludFJlY3Qob3ZlcnJpZGVSZWN0LnZhbHVlKCkpKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9p
bnQgbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oKTsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaXhlZFBvc2l0
aW9uUmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3Rh
cnRQYW5HZXN0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2ls
bFN0YXJ0U2Nyb2xsKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJT
Y3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNsYXNzIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OwogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdU
cmVlTm9kZSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQogCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgogCkBAIC02Niw0ICs2
Niw0IEBAIGNvbnN0IEludFBvaW50JiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm8KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw0ICs1NSw0IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9T
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbmNsdWRlICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAKQEAgLTU5
LDQgKzU5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9ySU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNjcm9sbGluZ0Nvb3Jk
aW5hdG9ySU9TLmgiCiAKQEAgLTEwMCw0ICsxMDAsNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9ySU9TOjpjb21taXRUcmVlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtNzIsNCArNzIsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgiCiAKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJTY3JvbGxp
bmdDb29yZGluYXRvci5oIgpAQCAtMjAxLDQgKzIwMSw0IEBAIEZsb2F0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm8KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJ
T1MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlSU9TLmgiCiAK
LSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKQEAgLTEyMSw0ICsxMjEsNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OmN1cnJlbnRTbmFw
UG9pbnRJCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZVRyZWUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCkBAIC02Miw0
ICs2Miw0IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX1RS
RUUoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUywgaXNTY3JvbGxpbmdUcmVlSU9TKCkpCiAKLSNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwogI2VuZGlm
CiAKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcihTdHJpbmcgdW5ibG9ja1VSTEhvc3QsIFVuYmxvY2tSZXF1ZXN0ZXJGdW5jdGlv
bik7Ci0jaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgJiYgUExBVEZPUk0oSU9TKQorI2lmIEhB
VkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyKFN0cmluZyB1bmJsb2NrVVJMSG9zdCwgUmV0YWluUHRyPFdl
YkZpbHRlckV2YWx1YXRvcj4pOwogI2VuZGlmCiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV91bmJsb2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsK
ICAgICBVbmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24gbV91bmJsb2NrUmVxdWVzdGVyOwotI2lmIEhB
VkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFM
X0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxXZWJGaWx0
ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9yOwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC00NTEsNSArNDUxLDUgQEAgY29uc3QgQ3Vyc29yJiBn
cmFiYmluZ0N1cnNvcigpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1
YmxpYzoKIAogICAgIEN1cnNvcigpID0gZGVmYXVsdDsKIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgQ3Vyc29yJiBmcm9tVHlwZShDdXJzb3I6OlR5cGUpOwogCkBAIC0xNzIsNyArMTcyLDcgQEAg
cHJpdmF0ZToKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0N1cnNvcj4gbV9wbGF0Zm9ybUN1cnNv
cjsKICNlbmRpZgogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIH07CiAKIEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqLCBj
b25zdCBJbnRQb2ludCYgc3BlY2lmaWVkSG90U3BvdCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgY29u
c3QgQ3Vyc29yJiBub25lQ3Vyc29yKCk7CiBjb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKTsKIGNv
bnN0IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGlubGluZSBDdXJzb3I6OlR5cGUgQ3Vyc29yOjp0eXBl
KCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVj
dGlvblN0YXRlIHsKICAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4
dD4gc2VsZWN0aW9uOwogfTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYg
ZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwogI2Vs
aWYgUExBVEZPUk0oTUFDKQpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmFu
Z2U7CiBjbGFzcyBVUkw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKICNlbGlm
IFBMQVRGT1JNKE1BQykKIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVz
KGNvbnN0IFZlY3QKICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBUaGlz
IGZ1bmN0aW9uIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gRmlsZUNob29zZXI6OmNob29zZUZpbGVz
KCkuIFdlIHNob3VsZCBtZXJnZSB0aGlzIGZ1bmN0aW9uCi0vLyB3aXRoIEZpbGVDaG9vc2VyOjpj
aG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisv
LyB3aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBM
QVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlTWVkaWFG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlTdHJpbmcsIEljb24qIGljb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50
LiBXZSBzaG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsOSAr
ODgsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlk
ZW50aWNhbCB0byBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4gV2Ugc2hvdWxkIG1lcmdlIHRo
aXMKLSAgICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBo
ZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisgICAgLy8gZnVuY3Rpb24gd2l0
aCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKSBhbmQgaGVuY2UgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZU1lZGlh
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlT
dHJpbmcsIEljb24qKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9I
b3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0
V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8v
IE1ldGhvZHMgZm9yIGRvaW5nIGNvb3JkaW5hdGUgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gc2Ny
ZWVuIGNvb3JkaW5hdGVzLgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdU
b1NjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0
eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBj
b25zdCA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3
IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgKIAogI2VuZGlmIC8v
IEVOQUJMRShDT05URVhUX01FTlVTKQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgp
CiB7CkBAIC00MjUsNyArNDI1LDcgQEAgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJj
aGVzVGV4dAogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDbGVhciBSZWNlbnQgU2VhcmNoZXMi
LCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3Mg
Y29udGVudHMiKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIFN0cmluZyBBWFdlYkFyZWFUZXh0KCkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJj
aGVzVGV4dCgpOwogICAgIFN0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCk7CiAg
ICAgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwpAQCAtMjQwLDcg
KzI0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpOwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgaHRt
bFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IG51bSk7CiAgICAgU3RyaW5nIGZpbGVCdXR0b25D
aG9vc2VNZWRpYUZpbGVMYWJlbCgpOwogICAgIFN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlTXVsdGlw
bGVNZWRpYUZpbGVzTGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvd1Bv
d2VyTW9kZU5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb3dQb3dlck1vZGVOb3RpZmllci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKSAmJiAhVVNFKEdMSUIpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFVU0UoR0xJ
QikKIAogTG93UG93ZXJNb2RlTm90aWZpZXI6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyKExvd1Bvd2Vy
TW9kZUNoYW5nZUNhbGxiYWNrJiYpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b3dQb3dlck1vZGVOb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogT0JKQ19DTEFTUyBXZWJMb3dQb3dlck1vZGVPYnNlcnZlcjsKICNlbmRpZgpAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIG5vdGlmeUxvd1Bvd2VyTW9kZUNoYW5nZWQoYm9v
bCk7CiAgICAgZnJpZW5kIHZvaWQgbm90aWZ5TG93UG93ZXJNb2RlQ2hhbmdlZChMb3dQb3dlck1v
ZGVOb3RpZmllciYsIGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAgICAgc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UvcGpwZWciKTsKICAgICBzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBZGQgbWFsZm9ybWVkIGlt
YWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQgdG8gaGFuZGxlIG1h
bGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0CiAgICAgLy8gVGhlc2Ugd2VyZSByZW1vdmVk
IGZvciA8cmRhcjovL3Byb2JsZW0vNjU2NDUzOD4gUmUtZW5hYmxlIFVUSSBjb2RlIGluIFdlYkNv
cmUgbm93IHRoYXQgTW9iaWxlQ29yZVNlcnZpY2VzIGV4aXN0cwogICAgIC8vIEJ1dCBNYWlsIHJl
bGllcyBvbiBhdCBsZWFzdCBpbWFnZS90aWYgcmVwb3J0ZWQgYXMgYmVpbmcgc3VwcG9ydGVkIChz
aG91bGQgYmUgaW1hZ2UvdGlmZikuCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTQogICAgICAgICAidGV4dC8iLAogICAgICAgICAiYXBw
bGljYXRpb24veG1sIiwKICAgICAgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCIsCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgImFwcGxpY2F0
aW9uL3ZuZC53YXAueGh0bWwreG1sIiwKICAgICAgICAgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLAog
ICAgICAgICAiYXBwbGljYXRpb24vYXRvbSt4bWwiLApAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU0KICAgICAgICAgInRleHQveC1xaWYi
X3MsCiAgICAgICAgICJ0ZXh0L3gtY3N2Il9zLAogICAgICAgICAidGV4dC94LXZjZiJfcywKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAidGV4
dC9ydGYiX3MsCiAjZWxzZQogICAgICAgICAidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0
b3IiX3MsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IGNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGxvbmcg
Y2hhbmdlQ291bnQpOwogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJp
dmF0ZToKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBi
b29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwogICAgIHZvaWQgcmVhZFJlc3BlY3Rp
bmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJl
YWRpbmdQb2xpY3kpOwogCkBAIC0zMzEsNyArMzMxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogZXh0ZXJuIE5T
U3RyaW5nICpXZWJBcmNoaXZlUGJvYXJkVHlwZTsKIGV4dGVybiBOU1N0cmluZyAqVUlDb2xvclBi
b2FyZFR5cGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiAKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVn
eSB7CiBwdWJsaWM6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVt
SW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRl
bGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQAogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRXZl
bnQ7CiAjZW5kaWYKIApAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXks
IGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBOU0V2ZW50KiBtYWNFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjRXZlbnQu
Z2V0KCk7IH0KICNlbHNlCiAgICAgICAgIDo6V2ViRXZlbnQgKmV2ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9FdmVudC5nZXQoKTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgUmV0
YWluUHRyPE5TRXZlbnQ+IG1fbWFjRXZlbnQ7CiAjZWxzZQogICAgICAgICBSZXRhaW5QdHI8OjpX
ZWJFdmVudD4gbV9FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogT0JKQ19DTEFTUyBOU1Bhc3RlYm9hcmQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiAjZW5k
aWYKIApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFz
cyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdQRSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCBQTEFURk9STShXUEUpCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJk
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1JbmZv
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KTsKQEAgLTEwNywxNCArMTA3LDE0
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgYWxsb3dSZWFkaW5nVVJMQXRJbmRleChjb25z
dCBVUkwmLCBpbnQgaW5kZXgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPGlkPiBt
X3Bhc3RlYm9hcmQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNf
Q0xBU1MgVUlTY3JlZW47CiAjZW5kaWYKIApAQCAtMTEyLDcgKzExMiw3IEBAIElPUmVnaXN0cnlH
UFVJRCBncHVJREZvckRpc3BsYXlNYXNrKHVpbnQKIAogI2VuZGlmIC8vICFQTEFURk9STShNQUMp
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogZmxvYXQg
c2NyZWVuUFBJRmFjdG9yKCk7CiBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICghUExBVEZPUk0oSU9TKSAmJiAhUExBVEZP
Uk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQorI2lmICghUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKE1BQykpIHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRl
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBXRUJDT1JFX0VY
UE9SVCBib29sIGlzSUFkUHJvZHVjZXIoKTsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2Ug
SU9TQXBwbGljYXRpb24gewogCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgaXNNb3ZpU3RhclBsdXMo
KTsKIAogfSAvLyBJT1NBcHBsaWNhdGlvbgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPUykgJiYg
IVBMQVRGT1JNKE1BQykKKyNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFu
aW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Ny
b2xsYWJsZUFyZWEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpz
ZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYgogCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojpjb250ZW50c1Nj
cm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbFNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKQEAgLTIwOCwxNCArMjA4LDE0IEBAIEludFBv
aW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzU2Nyb2xsUG9zaXQKIAogdm9pZCBTY3JvbGxWaWV3Ojpz
ZXRDb250ZW50c1Njcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSkKICAgICAgICAgc2V0QWN0dWFsU2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwog
I2VuZGlmCiAgICAgc2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwogfQogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEludFJlY3QgU2Nyb2xsVmlldzo6
dW5vYnNjdXJlZENvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFy
cyBzY3JvbGxiYXJJbmNsdXNpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHVub2JzY3VyZWRDb250
ZW50UmVjdEludGVybmFsKHNjcm9sbGJhckluY2x1c2lvbik7CkBAIC0yNjQsNyArMjY0LDcgQEAg
SW50U2l6ZSBTY3JvbGxWaWV3OjpzaXplRm9yVW5vYnNjdXJlZENvbgogCiBJbnRSZWN0IFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1
ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNsdXNpb24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yIHZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvciA9PSBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0KSB7CiAgICAgICAgIGlmIChwbGF0
Zm9ybVdpZGdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRS
ZWN0KHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogT0JKQ19D
TEFTUyBXQUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwpAQCAtNDgsNyArNDgsNyBA
QCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAjZGVmaW5lIE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQgX19PQkpDX18KIEBjbGFzcyBOU1Njcm9s
bFZpZXc7CkBAIC0xNzcsMTMgKzE3NywxMyBAQCBwdWJsaWM6CiAgICAgLy8gY29udHJpYnV0ZSB0
byBwYWludGluZyBidXQgbm90IHRvIHRoZSBzY3JvbGxhYmxlIGFyZWEuCiAgICAgLy8gVGhlIHVu
b2JzY3VyZWRDb250ZW50UmVjdCBpcyB0aGUgYXJlYSB0aGF0IGlzIG5vdCBjb3ZlcmVkIGJ5IFVJ
IGVsZW1lbnRzLgogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRS
ZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxi
YXJzKSBjb25zdDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBJbnRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKSBj
b25zdCB7IHJldHVybiB1bm9ic2N1cmVkQ29udGVudFJlY3QoSW5jbHVkZVNjcm9sbGJhcnMpOyB9
CiAjZWxzZQogICAgIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xs
YmFycygpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJh
cnMoKTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBUaGlzIGlzIHRoZSBhcmVhIHRoYXQgaXMgcGFydGlhbGx5IG9yIGZ1bGx5
IGV4cG9zZWQsIGFuZCBtYXkgZXh0ZW5kIHVuZGVyIG92ZXJsYXBwaW5nIFVJIGVsZW1lbnRzLgog
ICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdDsK
IApAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCBjb250ZW50c1Njcm9s
bFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50c1Njcm9sbFBvc2l0aW9uKGNv
bnN0IEludFBvaW50Jik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpbnQgYWN0dWFsU2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHVub2JzY3VyZWRD
b250ZW50UmVjdCgpLngoKTsgfQogICAgIGludCBhY3R1YWxTY3JvbGxZKCkgY29uc3QgeyByZXR1
cm4gdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkueSgpOyB9CiAgICAgLy8gRklYTUU6IG1heWJlIGZp
eCBzY3JvbGxQb3NpdGlvbigpIG9uIGlPUyB0byByZXR1cm4gdGhlIGFjdHVhbCBzY3JvbGwgcG9z
aXRpb24uCkBAIC00MTcsNyArNDE3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zm
c2V0JiwgY29uc3QgU2Nyb2xsT2Zmc2V0JikgPSAwOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHVub2JzY3VyZWRDb250ZW50
U2l6ZUNoYW5nZWQoKSA9IDA7CiAjZW5kaWYKIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHByaXZhdGU6
CiAgICAgU2Nyb2xsYmFyTW9kZSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlIHsgU2Nyb2xsYmFy
QXV0byB9OwogICAgIFNjcm9sbGJhck1vZGUgbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGUgeyBTY3Jv
bGxiYXJBdXRvIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBGSVhNRTogZXhwb3NlZENvbnRlbnRSZWN0IGlzIGEgdmVyeSBzaW1pbGFyIGNv
bmNlcHQgdG8gZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgZXhjZXB0IGl0IGRvZXMgbm90IGRpZmZl
cmVudGlhdGUKICAgICAvLyBiZXR3ZWVuIGV4cG9zZWQgYW5kIHVub2JzY3VyZWQgYXJlYXMuIFRo
ZSB0d28gYXR0cmlidXRlcyBzaG91bGQgZXZlbnR1YWxseSBiZSBtZXJnZWQuCiAgICAgRmxvYXRS
ZWN0IG1fZXhwb3NlZENvbnRlbnRSZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1
LDcgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9sbEFuaW1hdAogICAgICAgICBz
Y3JvbGxBbmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBTY3JvbGxhYmxlQXJlYTo6
aXNQaW5uZWRJbkJvdGhEaXJlY3Rpb25zKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSBjb25z
dAogewogICAgIHJldHVybiBpc1Bpbm5lZEhvcml6b250YWxseUluRGlyZWN0aW9uKHNjcm9sbERl
bHRhLndpZHRoKCkpICYmIGlzUGlubmVkVmVydGljYWxseUluRGlyZWN0aW9uKHNjcm9sbERlbHRh
LmhlaWdodCgpKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBib29sIFNjcm9sbGFibGVBcmVhOjppc1Bp
bm5lZFZlcnRpY2FsbHlJCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsK
IH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogaW50IFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU2Nyb2xsYmFySW50cnVzaW9uKCkg
Y29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydFNjcm9sbCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRT
Y3JvbGwoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU2Nyb2xsKCkgeyB9CkBAIC0y
MjUsNyArMjI1LDcgQEAgcHVibGljOgogICAgIGVudW0gVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiYXJzIHsgRXhjbHVkZVNjcm9sbGJhcnMsIEluY2x1ZGVTY3JvbGxiYXJzIH07CiAg
ICAgZW51bSBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvciB7CiAgICAgICAgIENvbnRlbnRzVmlz
aWJsZVJlY3QsCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIExlZ2FjeUlPU0RvY3VtZW50Vmlld1JlY3QsCiAgICAgICAgIExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QgPSBMZWdhY3lJT1NEb2N1bWVudFZpZXdSZWN0CiAjZWxzZQpAQCAtMjg0
LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVBbmltYXRpb24o
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wg
aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuICFob3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgc2Nyb2xsT2Zmc2V0KEhvcml6b250YWxTY3Jv
bGxiYXIpIDw9IDA7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9NYXhp
bXVtUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiAhaG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNj
cm9sbE9mZnNldChIb3Jpem9udGFsU2Nyb2xsYmFyKSA+PSBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCku
eCgpOyB9CiAgICAgYm9vbCBpc1ZlcnRpY2FsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuICF2ZXJ0aWNhbFNjcm9sbGJhcigpIHx8IHNjcm9sbE9mZnNldChW
ZXJ0aWNhbFNjcm9sbGJhcikgPD0gMDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTY3Jv
bGxiYXI6OnNldFByZXNzZWRQYXJ0KFNjcm9sbGJhcgogICAgICAgICB0aGVtZSgpLmludmFsaWRh
dGVQYXJ0KCp0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBib29sIFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAobV9wcmVzc2VkUGFydCA9PSBU
aHVtYlBhcnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgdXNlZCBmb3IgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBnaXZlIDpob3ZlciBmZWVkYmFjay4g
IFRoZXkgd2lsbCBub3QgZ2V0IGNhbGxlZAogICAgIC8vIHdoZW4gdGhlIG1vdXNlIHdlbnQgZG93
biBpbiBhIHNjcm9sbGJhciwgc2luY2UgaXQgaXMgYXNzdW1lZCB0aGUgc2Nyb2xsYmFyIHdpbGwg
c3RhcnQKICAgICAvLyBncmFiYmluZyBhbGwgZXZlbnRzIGluIHRoYXQgY2FzZSBhbnl3YXkuCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjZW5k
aWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlRW50ZXJlZCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZP
Uk0oTUFDKQogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNlbmRpZgogCkBA
IC0xOTEsNyArMTkxLDcgQEAgaW5saW5lIGJvb2wgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6
bwogCiBzdGF0aWMgYm9vbCBzaG91bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gV2Vi
VGhyZWFkSXNFbmFibGVkKCkgfHwgYXBwbGljYXRpb25TREtWZXJzaW9uKCkgPCBEWUxEX0lPU19W
RVJTSU9OXzEyXzA7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgcmV0dXJuICFpc0luV2ViUHJv
Y2VzcygpICYmIGFwcGxpY2F0aW9uU0RLVmVyc2lvbigpIDwgRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xNDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJXZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKIApAQCAtMTM2LDEyICsxMzYsMTIgQEAgcHJp
dmF0ZToKIAogaW5saW5lIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAg
Ly8gRklYTUU6IFdyaXRlIHRoaXMgaW4gdGVybXMgb2YgVVNFKFdFQl9USFJFQUQpIGluc3RlYWQg
b2YgUExBVEZPUk0oSU9TKS4KLSNpZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBXcml0
ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElP
U19GQU1JTFkpLgorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX3RocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQucHRyKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0
RmlyZVRpbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWxpZGF0aW9u
QnViYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsaWRhdGlv
bkJ1YmJsZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
YWxpZGF0aW9uQnViYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lm
IFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNQb3BvdmVyOwotI2VsaWYgUExBVEZPUk0oSU9T
KQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxl
cjsKIE9CSkNfQ0xBU1MgV2ViVmFsaWRhdGlvbkJ1YmJsZURlbGVnYXRlOwogT0JKQ19DTEFTUyBX
ZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2duaXplcjsKQEAgLTQ0LDcgKzQ0LDcgQEAgT0JKQ19D
TEFTUyBXZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2duaQogI2lmIFBMQVRGT1JNKE1BQykKIE9C
SkNfQ0xBU1MgTlNWaWV3OwogdXNpbmcgUGxhdGZvcm1WaWV3ID0gTlNWaWV3OwotI2VsaWYgUExB
VEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlWaWV3
OwogdXNpbmcgUGxhdGZvcm1WaWV3ID0gVUlWaWV3OwogI2Vsc2UKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQogICAgIGRvdWJsZSBmb250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemU7
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QW5jaG9yUmVjdChjb25zdCBJbnRSZWN0JiBhbmNob3JSZWN0
LCBVSVZpZXdDb250cm9sbGVyKiBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBudWxscHRyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKTsKICNlbHNlCkBAIC04NCw3ICs4NCw3IEBA
IHByaXZhdGU6CiAgICAgZG91YmxlIG1fZm9udFNpemUgeyAwIH07CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFJldGFpblB0cjxOU1BvcG92ZXI+IG1fcG9wb3ZlcjsKLSNlbGlmIFBMQVRGT1JNKElP
UykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRy
b2xsZXI+IG1fcG9wb3ZlckNvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFdlYlZhbGlkYXRpb25C
dWJibGVUYXBSZWNvZ25pemVyPiBtX3RhcFJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFdlYlZh
bGlkYXRpb25CdWJibGVEZWxlZ2F0ZT4gbV9wb3BvdmVyRGVsZWdhdGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
Zm5kZWYgTlNWaWV3CiAjZGVmaW5lIE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUZyb21TdXBlcnZpZXcoKTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQg
YWRkVG9TdXBlcnZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hh
cmR3YXJlTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZUxpc3QKICAgICAsIG1fYWN0aXZpdHkoQXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bikKICAgICAsIG1fb3V0cHV0RGV2aWNlU3Vw
cG9ydHNMb3dQb3dlck1vZGUoZmFsc2UpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgbV9vdXRwdXREZXZpY2VTdXBwb3J0c0xvd1Bvd2VyTW9kZSA9
IHRydWU7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFu
Z2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJn
ZXRNb25pdG9yaW5nKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2
YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQQUw6OlN5c3RlbVNsZWVwTGlzdGVuZXI+IG1f
c3lzdGVtU2xlZXBMaXN0ZW5lcjsKICAgICBSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBt
X2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tU
YXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CiAgICAgYm9vbCBtX2NhblBsYXlUb1RhcmdldCB7IGZh
bHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KFdFQl9BVURJTykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkF1ZGlvRGVz
dGluYXRpb25JT1MuaCIKIApAQCAtMjc0LDUgKzI3NCw1IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bklPUzo6ZnJhbWVTaXplQ2hhbmcKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvRGVzdGluYXRpb25JT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgi
CkBAIC03Niw0ICs3Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvRmlsZVJlYWRlcklPUy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9G
aWxlUmVhZGVySU9TLmgiCiAKLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1Mp
CisjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCkBAIC0yNDUsNCAr
MjQ1LDQgQEAgUmVmUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdQogCiB9IC8v
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Zp
bGVSZWFkZXJJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9GaWxlLmg+CiAj
aW5jbHVkZSA8QXVkaW9Ub29sYm94L0V4dGVuZGVkQXVkaW9GaWxlLmg+CkBAIC02OCw0ICs2OCw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9TZXNzaW9uSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgogCi0jaWYgVVNFKEFVRElPX1NF
U1NJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWQXVkaW9TZXNzaW9uLmg+CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBBdWRpb1Nlc3Np
b246OnNldENhdGVnb3J5KENhdGVnb3J5VAogCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAg
ICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0Q2F0ZWdvcnk6Y2F0ZWdvcnlT
dHJpbmcgbW9kZTpjYXRlZ29yeU1vZGUgcm91dGVTaGFyaW5nUG9saWN5OnBvbGljeSBvcHRpb25z
Om9wdGlvbnMgZXJyb3I6JmVycm9yXTsKLSNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgJiYg
IVBMQVRGT1JNKElPU01BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYm
ICFQTEFURk9STShJT1NNQUMpCiAgICAgQVNTRVJUKCFlcnJvcik7CiAjZW5kaWYKIH0KQEAgLTE3
Nyw3ICsxNzcsNyBAQCBSb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9TZXNzaW9uOjpyb3V0ZVNoCiAK
IFN0cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKIHsKLSNpZiAh
UExBVEZPUk0oSU9TX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKElPU01BQykgJiYgIVBMQVRGT1JN
KFdBVENIT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZP
Uk0oSU9TTUFDKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICByZXR1cm4gW1tBVkF1ZGlvU2Vz
c2lvbiBzaGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwogI2Vsc2UKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTIzNSw0ICsyMzUsNCBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6CiAKIH0KIAotI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9O
KSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTYyLDQgKzYyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlh
UGxheWVyLmgiCkBAIC00MTIsNCArNDEyLDQgQEAgLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDooTgogfQogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1B
QykKICNpbXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNl
bGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNlbmRpZgpAQCAtNDMsNyArNDMsNyBA
QCBzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKTsKIAogc3RhdGljIGNvbnN0IENGVGlt
ZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQq
LCBDRkRpY3Rpb25hcnlSZWYpCiB7CiAgICAgV2ViVGhyZWFkUnVuKF57CkBAIC01OCw3ICs1OCw3
IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAgICAgc3RhdGljIFBvd2VyT2Jz
ZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQogICAgICAgICBw
b3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hh
cmVkVGltZXIpLnJlbGVhc2UoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90
aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24pIHsKICAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9u
ID0gdHJ1ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
c2V0RmlyZUludGVyCiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIGludGVydmFsLnZhbHVlKCk7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikg
ewogICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZp
cmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBu
dWxscHRyKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbHNlCiAgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QAogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4u
aCIKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpCkBAIC02Myw3ICs2Myw3IEBAIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Q29udGVudEZpbHQKICAgICBMT0coQ29udGVudEZpbHRl
cmluZywgIkNyZWF0aW5nIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aXRoIGFuIHVuYmxv
Y2sgcmVxdWVzdGVyIGFuZCB1bmJsb2NrIFVSTCBob3N0IDwlcz4uXG4iLCBtX3VuYmxvY2tVUkxI
b3N0LmFzY2lpKCkuZGF0YSgpKTsKIH0KIAotI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYm
IFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIoU3RyaW5nIHVuYmxvY2tVUkxIb3N0LCBSZXRhaW5QdHI8V2ViRmlsdGVyRXZh
bHVhdG9yPiBldmFsdWF0b3IpCiAgICAgOiBtX3VuYmxvY2tVUkxIb3N0IHsgV1RGTW92ZSh1bmJs
b2NrVVJMSG9zdCkgfQogICAgICwgbV93ZWJGaWx0ZXJFdmFsdWF0b3IgeyBXVEZNb3ZlKGV2YWx1
YXRvcikgfQpAQCAtODEsNyArODEsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6d3JhcFdpCiAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAg
ICAgfSk7CiAgICAgfX07Ci0jaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgJiYgUExBVEZPUk0o
SU9TKQorI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgbV93ZWJGaWx0ZXJFdmFsdWF0b3IgPSBudWxscHRyOwogI2VuZGlmCiAgICAgc3RkOjpz
d2FwKG1fdW5ibG9ja1JlcXVlc3Rlciwgd3JhcHBlZFJlcXVlc3Rlcik7CkBAIC04OSw3ICs4OSw3
IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjp3cmFwV2kKIAogYm9vbCBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6Om5lZWRzVUlQcm9jZXNzKCkgY29uc3QKIHsKLSNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1MpCisjaWYgSEFWRShQQVJFTlRB
TF9DT05UUk9MUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gbV93ZWJGaWx0
ZXJFdmFsdWF0b3I7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3ICsxMDIsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrVVJM
SG9zdCBmb3JLZXk6dW5ibG9ja1VSTEhvc3RLZXldOwogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6
KE5TVVJMICopbV91bnJlYWNoYWJsZVVSTCBmb3JLZXk6dW5yZWFjaGFibGVVUkxLZXldOwotI2lm
IEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtjb2RlciBlbmNvZGVP
YmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRv
cktleV07CiAjZW5kaWYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTE0LDcg
KzExNCw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2Nr
VVJMSG9zdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1N0cmluZyBjbGFzc10gZm9y
S2V5OnVuYmxvY2tVUkxIb3N0S2V5XTsKICAgICB1bmJsb2NrSGFuZGxlci5tX3VucmVhY2hhYmxl
VVJMID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMIGNsYXNzXSBmb3JLZXk6dW5y
ZWFjaGFibGVVUkxLZXldOwotI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JN
KElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmls
dGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI1LDcgKzEy
NSw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKIGJvb2wgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3Rlcikg
ewotI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZF
KFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
IW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UK
QEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2Fu
SGFuCiBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQodm9pZCAoXmJsb2Nr
KSgpKQogewogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdl
YlRocmVhZFJ1bihibG9jayk7CiAjZWxzZQogICAgICAgICBibG9jaygpOwpAQCAtMTU0LDcgKzE1
NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZCgKIAogdm9pZCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMoRGVjaXNpb25I
YW5kbGVyRnVuY3Rpb24gZGVjaXNpb25IYW5kbGVyKSBjb25zdAogewotI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFMpICYmIFBMQVRGT1JNKElPUykKKyNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xT
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3dlYkZpbHRlckV2YWx1YXRvcikg
ewogICAgICAgICBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgdW5ibG9ja1dpdGhDb21wbGV0aW9uOltk
ZWNpc2lvbkhhbmRsZXJdKEJPT0wgdW5ibG9ja2VkLCBOU0Vycm9yICopIHsKICAgICAgICAgICAg
IGRpc3BhdGNoVG9NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewpAQCAt
MTc3LDQgKzE3Nyw0IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRGF0YURldGVj
dG9yc0NvcmVTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYkNvcmUsIERhdGFEZXRlY3Rv
cnNDb3JlLCBERFNjYW5uZXJSZXN1bHQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihX
ZWJDb3JlLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyQ3JlYXRlLCBERFNjYW5uZXJSZWYs
IChERFNjYW5uZXJUeXBlIHR5cGUsIEREU2Nhbm5lck9wdGlvbnMgb3B0aW9ucywgQ0ZFcnJvclJl
ZiAqIGVycm9yUmVmKSwgKHR5cGUsIG9wdGlvbnMsIGVycm9yUmVmKSkKQEAgLTY2LDYgKzY2LDYg
QEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgRAogCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVy
RW5hYmxlT3B0aW9uYWxTb3VyY2UsIHZvaWQsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2Fu
bmVyU291cmNlIHNvdXJjZSwgQm9vbGVhbiBlbmFibGUpLCAoc2Nhbm5lciwgc291cmNlLCBlbmFi
bGUpKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRGF0
YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIgogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUktfT1BUSU9OQUwoRGF0YURldGVjdG9yc0NvcmUpCiAKQEAgLTY0LDQgKzY0LDQgQEAgU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgRAogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShXZWJDb3JlLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyRW5hYmxl
T3B0aW9uYWxTb3VyY2UsIHZvaWQsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FubmVyU291
cmNlIHNvdXJjZSwgQm9vbGVhbiBlbmFibGUpLCAoc2Nhbm5lciwgc291cmNlLCBlbmFibGUpKQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVu
dENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDx3dGYv
QVNDSUlDVHlwZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIktleUV2ZW50Q29k
ZXNJT1MuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9M
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBO
U1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIENhbiBiZSBjYWxsZWQg
b24gYSBkaXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KICAg
ICAvLyBTZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAy
NDczPi4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIFN0
cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmkKICAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5
Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IGNvdW50KQogewog
ICAgIHN3aXRjaCAoY291bnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0CiAgICAgbV9xdWV1ZSA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJLaXQgTmV0d29ya0V4dGVu
c2lvbiBGaWx0ZXJpbmciLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKICAgICBBU1NFUlRfVU5V
U0VEKHVybCwgIXVybCk7CiAgICAgbV9uZUZpbHRlclNvdXJjZSA9IGFkb3B0TlMoW2FsbG9jTkVG
aWx0ZXJTb3VyY2VJbnN0YW5jZSgpIGluaXRXaXRoRGVjaXNpb25RdWV1ZTptX3F1ZXVlLmdldCgp
XSk7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBbbV9uZUZp
bHRlclNvdXJjZSBzZXRTb3VyY2VBcHBJZGVudGlmaWVyOmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpXTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSAtcmVzcG9uZHNUb1NlbGVjdG9yOiBj
aGVjayBvbmNlIC1zZXRTb3VyY2VBcHBQaWQ6IGlzIGRlZmluZWQgaW4gYW4gU0RLIHVzZWQgYnkg
dGhlIGJ1aWxkZXJzLgogICAgIGlmIChbbV9uZUZpbHRlclNvdXJjZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcFBpZDopXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTksNyArOTksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVuCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjp1bmJsb2NrSGFuZGxlcigpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJu
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB7ICJ1bmJsb2NrIl9zLCBtX3dlYkZpbHRlckV2
YWx1YXRvciB9OwogI2Vsc2UKICAgICByZXR1cm4geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBQYXN0
ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlIFBhc3RlYm9hcmQ6CiB7CiAgICAgYm9vbCBtYXlDb250
YWluRmlsZVBhdGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5nZXROdW1iZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1heUNvbnRhaW5GaWxlUGF0aHMp
IHsKICAgICAgICAgLy8gT24gaU9TLCBmaWxlcyBhcmUgbm90IHdyaXR0ZW4gdG8gdGhlIHBhc3Rl
Ym9hcmQgdXNpbmcgZmlsZSBVUkxzLCBzbyB3ZSBuZWVkIGEgaGV1cmlzdGljIHRvIGRldGVybWlu
ZQogICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0aGUgcGFzdGVib2FyZCBjb250YWlucyBpdGVt
cyB0aGF0IHJlcHJlc2VudCBmaWxlcy4gQW4gZXhhbXBsZSBvZiB3aGVuIHRoaXMgZ2V0cyB0cmlj
a3kKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtVmlldy5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0
Zm9ybVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IE9CSkNfQ0xBU1MgVUlWaWV3OwogdHlwZWRlZiBVSVZpZXcgUGxhdGZvcm1WaWV3OwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00MSw1ICs0MSw1IEBAIHB1YmxpYzoKIAogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWwu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0xMTMsNCAr
MTEzLDQgQEAgcHVibGljOgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAog
I2ltcG9ydCAiQXVkaW9UcmFja0xpc3QuaCIKICNpbXBvcnQgIkV2ZW50LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIE1hY0FwcGxpY2F0aW9uOjppc1NvbGlk
U3RhdGVOZXR3b3JrCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNN
b2JpbGVNYWlsKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3Rl
bVZlcnNpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U3lzdGVtVmVyc2lvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlCiB7CiAgICAgLy8g
Q2FuJ3QgdXNlIC1bTlNQcm9jZXNzSW5mbyBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nXSBi
ZWNhdXNlIGl0IGhhcyB0b28gbXVjaCBzdHVmZiB3ZSBkb24ndCB3YW50LgogICAgIE5TU3RyaW5n
ICpzeXN0ZW1MaWJyYXJ5UGF0aCA9IFtOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlu
cyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TU3lzdGVtRG9tYWluTWFzaywgWUVTKSBvYmplY3RBdElu
ZGV4OjBdOwotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWV9TSU1VTEFUT1IpCiAgICAgaWYgKGNoYXIgKnNpbXVsYXRvclJvb3QgPSBnZXRlbnYoIlNJ
TVVMQVRPUl9ST09UIikpCiAgICAgICAgIHN5c3RlbUxpYnJhcnlQYXRoID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlcy8lQCIsIHNpbXVsYXRvclJvb3QsIHN5c3RlbUxpYnJhcnlQYXRo
XTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMu
aCIKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRy
b2xsZXI7CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgPSAwOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51
bGxwdHI7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9y
dCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICNp
bXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCiAKICNpbXBvcnQgIkRP
TVdpbmRvdy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFU
Rk9STShJT1MpKQorI2lmIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02Niw0ICs2Niw0IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVm
aW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9TKSkKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCiAKLSNpZiBFTkFCTEUoR0FNRVBBRCkgJiYg
KGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPUykpCisjaWYgRU5BQkxFKEdBTUVQQUQp
ICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKICNpbmNsdWRl
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUgPEdhbWVDb250cm9s
bGVyL0dhbWVDb250cm9sbGVyLmg+CiAKQEAgLTIwNiw0ICsyMDYsNCBAQCB2b2lkIEdhbWVDb250
cm9sbGVyR2FtZXBhZDo6c2V0dXBBc0dhbWVwCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZP
Uk0oSU9TKSkKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18p
IHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVO
QUJMRShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtODUsNCArODUsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBM
QVRGT1JNKElPUykpCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2
NF9fKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgogCi0jaWYgRU5BQkxFKEdB
TUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJM
RShHQU1FUEFEKSAmJiAoZGVmaW5lZChfX0xQNjRfXykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkp
CiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgogI2ltcG9ydCAiR2FtZXBhZFBy
b3ZpZGVyQ2xpZW50LmgiCkBAIC0xNzYsNCArMTc2LDQgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6aW5wdQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBFTkFCTEUoR0FNRVBBRCkgJiYgKGRlZmluZWQoX19MUDY0X18pIHx8IFBMQVRGT1JNKElPUykp
CisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIChkZWZpbmVkKF9fTFA2NF9fKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcg
KzIyMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkIHsgZmFsc2Ug
fTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIG9mIG1fYWxsb3dTdWJzYW1wbGluZyBzaG91
bGQgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdEltYWdlU3Vic2FtcGxpbmdFbmFibGVkIGluIFNldHRp
bmdzLmNwcAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fYWxs
b3dTdWJzYW1wbGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKICAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGNv
bXBvc2l0aW9uRmlsbCA9IDB4M0NBRkMwRTM7CiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgY29tcG9zaXRpb25GaWxsID0gMHhGRkUxREQ1NTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5oIgogI2VsaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYy5oIgpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9y
PiBEaXNwbGF5UmVmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OmNyZWF0ZShkaXNwbGF5SUQpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUzo6Y3JlYXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIEZvbnQ6OkZv
bnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGYKICAgICAsIG1faXNCcm9rZW5JZGVvZ3Jh
cGhGYWxsYmFjayhmYWxzZSkKICAgICAsIG1faGFzVmVydGljYWxHbHlwaHMoZmFsc2UpCiAgICAg
LCBtX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZShmYWxzZSkKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fc2hvdWxkTm90QmVVc2VkRm9yQXJh
YmljKGZhbHNlKQogI2VuZGlmCiB7CkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBjb2RlUG9pbnRTdQogCiBzdGF0aWMgUmVmUHRyPEdseXBoUGFnZT4gY3Jl
YXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVtYmVyLCBjb25zdCBGb250JiBmb250
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBUaW1lcyBOZXcgUm9tYW4gY29udGFpbnMgQXJhYmljIGdseXBocywgYnV0IENvcmUg
VGV4dCBkb2Vzbid0IGtub3cgaG93IHRvIHNoYXBlIHRoZW0uIFNlZSA8cmRhcjovL3Byb2JsZW0v
OTgyMzk3NT4uCiAgICAgLy8gT25jZSB3ZSBoYXZlIHRoZSBmaXggZm9yIDxyZGFyOi8vcHJvYmxl
bS85ODIzOTc1PiB0aGVuIHJlbW92ZSB0aGlzIGNvZGUgdG9nZXRoZXIgd2l0aCBGb250OjpzaG91
bGROb3RCZVVzZWRGb3JBcmFiaWMoKQogICAgIC8vIGluIDxyZGFyOi8vcHJvYmxlbS8xMjA5Njgz
NT4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGJvb2wgc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGROb3RCZVVzZWRGb3JBcmFiaWM7IH07CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkKQEAgLTMxNCwxMiArMzE0LDEyIEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25l
ZCBtX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSA6IDE7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCBtX3Nob3VsZE5vdEJlVXNl
ZEZvckFyYWJpYyA6IDE7CiAjZW5kaWYKIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgZm9udEZhbWlseVNob3VsZE5vdEJlVXNlZEZvckFyYWJp
YyhDRlN0cmluZ1JlZik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMyArNTAsMTMgQEAKICNpbmNsdWRlIDxkd3JpdGUuaD4KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KICNpbmNsdWRlIDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KIAogc3RhdGljIFJlY3Vy
c2l2ZUxvY2sgZm9udExvY2s7CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBGb250Q2FjaGU6OmFsdGVybmF0ZQogRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3Nl
ZEZhbWlseU5hbWUsCiAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZm9udEZhY2VGZWF0
dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGluZ3Ms
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VDYXBhYmlsaXRpZXMs
IGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1lKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZm9udExvY2sp
OwogI2VuZGlmCiAgICAgCkBAIC0zMDksNyArMzA5LDcgQEAgUmVmUHRyPE9wZW5UeXBlVmVydGlj
YWxEYXRhPiBGb250Q2FjaGU6OgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIGNvbnN0IHVuc2lnbmVkIGNNYXhJbmFjdGl2ZUZvbnREYXRh
ID0gMTIwOwogY29uc3QgdW5zaWduZWQgY1RhcmdldEluYWN0aXZlRm9udERhdGEgPSAxMDA7CiAj
ZWxzZQpAQCAtMzMzLDcgKzMzMyw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGb3JG
YW1pbHkoY28KIAogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZvclBsYXRmb3JtRGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmb250
TG9jayk7CiAjZW5kaWYKICAgICAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIEZvbnRDYWNoZTo6
cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuCiAgICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJv
bUZvbnRDYXNjYWRlQ2FjaGUoKTsKICAgICBwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soZm9udExvY2spOwogI2VuZGlmCiAKQEAgLTQxOCw3ICs0MTgsNyBAQCBz
aXplX3QgRm9udENhY2hlOjpmb250Q291bnQoKQogCiBzaXplX3QgRm9udENhY2hlOjppbmFjdGl2
ZUZvbnRDb3VudCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmb250TG9jayk7CiAjZW5kaWYKICAgICB1
bnNpZ25lZCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDcgKzk4LDcgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRQbGF0Zgog
ICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpKQogewogICAg
IG1fZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoZm9udFNtb290aGluZ01vZGUpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fZm9udERl
c2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoQ1RGb250R2V0U2l6ZShmb250RGF0YS5mb250KCkp
KTsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoQ1RGb250R2V0U2l6ZShm
b250RGF0YS5mb250KCkpKTsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhDVEZv
bnRHZXRTeW1ib2xpY1RyYWl0cyhmb250RGF0YS5mb250KCkpICYga0NURm9udFRyYWl0SXRhbGlj
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUZvbnRzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3Vz
Y3JpcHQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi0jZGVmaW5lIFVTRV9QTEFU
Rk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCAoKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkpCisjZGVmaW5lIFVTRV9QTEFU
Rk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCAoKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbW9qaSgpIGNvbnN0
CiAgICAgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICByZXR1cm4gbV9pc0Vtb2ppOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1ZhcmlhdGlvbnMgeyBmYWxz
ZSB9OwogICAgIC8vIFRoZSB2YWx1ZXMgYWJvdmUgYXJlIGNvbW1vbiB0byBhbGwgcG9ydHMKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9p
c0Vtb2ppIHsgZmFsc2UgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMjcsNyArMTMyNyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIGludCBwaXhlbHNT
aXplKTsKICAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscyk7
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IHNldFJlbmRlcmJ1ZmZlclN0b3JhZ2VGcm9tRHJhd2FibGUoR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwMiw3ICs3MDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hCiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGbG9hdFJlY3Qgc3JjUmVj
dChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgpKTsKICNlbHNlCiAgICAgRmxvYXRS
ZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjYsNyArNDY2LDcgQEAgcHVibGljOgogICAgIC8vIExh
eWVyIGNvbnRlbnRzCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSop
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdl
KikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZv
ck1lZGlhKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3Mu
aD4KICNlbGlmIFBMQVRGT1JNKE1BQykKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBG
SVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZC4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogI2VuZGlmCiAK
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSWNvbihjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwog
I2VsaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogCiAgICAgQVNTRVJUKCFp
c0JpdG1hcEltYWdlKCkgfHwgbm90U29saWRDb2xvcigpKTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6
ZSA9IG9yaWdpbmFsU2l6ZSgpOwogI2Vsc2UKICAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNp
emUgPSBzaXplKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpk
cmF3VGlsZWQoR3JhcGhpYwogICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlz
aWJsZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZyBvbiBp
T1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2UgdGhhbiB0byB0aWxlIGl0LgogICAg
IGlmIChjdHh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKHNpemUoKS53
aWR0aCgpID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkuaGVpZ2h0
KCkgPT0gZGVzdFJlY3QuaGVpZ2h0KCkpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgLy8gdGlsZSBzaXplIGlzIGxhcmdl
ICg8cmRhcjovL3Byb2JsZW0vNDY5MTg1OT4sIDxyZGFyOi8vcHJvYmxlbS82MjM5NTA1PikuCiAg
ICAgLy8gTWVtb3J5IGNvbnN1bXB0aW9uIGRlcGVuZHMgb24gdGhlIHRyYW5zZm9ybWVkIHRpbGUg
c2l6ZSB3aGljaCBjYW4gZ2V0CiAgICAgLy8gbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIHRpbGUg
aWYgdXNlciB6b29tcyBpbiBlbm91Z2guCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgY29uc3QgZmxvYXQgbWF4UGF0dGVyblRpbGVQaXhlbHMgPSA1MTIg
KiA1MTI7CiAjZWxzZQogICAgIGNvbnN0IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0
OCAqIDIwNDg7CkBAIC0zMzcsNyArMzM3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpYwogCiB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhM
ZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXpl
JiBpbnRyaW5zaWNSYXRpbykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpbnRyaW5zaWNSYXRpbyA9IG9yaWdpbmFsU2l6ZSgpOwogI2Vsc2UKICAg
ICBpbnRyaW5zaWNSYXRpbyA9IHNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBzaXplKCkuaGVpZ2h0
KCk7IH0KICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFsU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IENHUG9pbnQ7CiAjZW5kaWYKIAog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBPUyhE
QVJXSU4pCiAjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
IHR5cGVkZWYgc3RydWN0IENHUG9pbnQgTlNQb2ludDsKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgQ0dQb2ludCBOU1BvaW50OwogdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2lu
dDsKICNlbmRpZgogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0
IHRhZ1BPSU5UIFBPSU5UOwpAQCAtMTMxLDEyICsxMzEsMTIgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIG9wZXJhdG9yIENHUG9pbnQoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBPUyhEQVJXSU4pICYmICFk
ZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IE5TUG9pbnQmKTsgLy8gZG9uJ3Qg
ZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBXRUJDT1JFX0VYUE9SVCBv
cGVyYXRvciBOU1BvaW50KCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIEludFBvaW50KGNvbnN0IFBPSU5UJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UmVjdC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUmVjdCBOU1JlY3Q7CiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWZuZGVmIE5TUmVj
dAogI2RlZmluZSBOU1JlY3QgQ0dSZWN0CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNTaXplIE5TU2l6ZTsKICNlbmRpZgogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZm5kZWYg
TlNTaXplCiAjZGVmaW5lIE5TU2l6ZSBDR1NpemUKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02ODgsNyArNjg4LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQ
bGF5ZXI6OnBsYXRmb3JtTGF5ZQogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtTGF5ZXIo
KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogdm9p
ZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5
ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtNzIy
LDcgKzcyMiw3IEBAIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIE1lZGlhUGwKIAog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
TlNBcnJheSogTWVkaWFQbGF5ZXI6OnRpbWVkTWV0YWRhdGEoKSBjb25zdAogewpAQCAtOTI0LDcg
KzkyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2gKIAogYm9v
bCBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6Omlz
QVZGb3VuZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgpAQCAt
MTE3NSw3ICsxMTc1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQog
CiB2b2lkIE1lZGlhUGxheWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BB
UkFNKG5ld1ZvbHVtZSk7CiAgICAgbV92b2x1bWUgPSBtX3ByaXZhdGUtPnZvbHVtZSgpOwogI2Vs
c2UKQEAgLTE0ODUsNyArMTQ4NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmRvZXNIYXZlQXR0cmli
dXRlKGNvbnMKICAgICByZXR1cm4gY2xpZW50KCkuZG9lc0hhdmVBdHRyaWJ1dGUoYXR0cmlidXRl
LCB2YWx1ZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIFN0cmluZyBNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFj
ZU5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBv
dXRPZkJhbmRUcmFja1NvdXJjZXMoKSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwm
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKQEAgLTI2
OSw3ICsyNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqIHZhbHVlID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsK
ICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7CkBAIC0yNzksNyAr
Mjc5LDcgQEAgcHVibGljOgogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUo
KSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0OwogICAgIFN0cmluZyBh
Y2Nlc3NMb2coKSBjb25zdDsKICAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdDsKQEAgLTUyMSw3
ICs1MjEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+
IG91dE9mQmFuZFRyYWNrU291cmNlcygpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJOZXR3b3JrSW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBW
ZWN0b3I8Q29va2llPiYpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0jaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgeyB9CkBAIC01OCw3ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6
VmlkZW9GdWxsc2NyZWVuTW9kZSkgeyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgTlNBcnJheSAqdGltZWRNZXRhZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NMb2coKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZXJyb3JM
b2coKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CkBAIC0xMTMsNyArMTEzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZURvdWJsZShkb3VibGUgdm9sdW1lKSB7IHJldHVybiBzZXRWb2x1
bWUodm9sdW1lKTsgfQotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKEdTVFJFQU1FUikKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQogICAgIHZpcnR1YWwgZmxvYXQg
dm9sdW1lKCkgY29uc3QgeyByZXR1cm4gMTsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5l
CiAKIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewot
I2lmIFVTRShORVdfVEhFTUUpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBVU0UoTkVXX1RIRU1FKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBjb250ZXh0LmNsaXAoZHN0UmVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRv
ci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N0cmluZ1RydW5jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAg
c3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoYwogICAgIHVuc2lnbmVkIG9t
aXRFbmQgPSBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvbWl0U3RhcnQgKyAobGVuZ3Ro
IC0ga2VlcENvdW50KSAtIDEsIGxlbmd0aCk7CiAgICAgb21pdFN0YXJ0ID0gdGV4dEJyZWFrQXRP
clByZWNlZGluZyhpdCwgb21pdFN0YXJ0KTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGd1YXJkIHRoaXMgY29kZSBiZWhpbmQgYW4gZWRpdGluZyBiZWhhdmlv
ci4gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBndWFyZCB0aGlzIGNvZGUg
YmVoaW5kIGFuIGVkaXRpbmcgYmVoYXZpb3IuIFRoZW4gd2UgY2FuIHJlbW92ZSB0aGUgUExBVEZP
Uk0oSU9TX0ZBTUlMWSktZ3VhcmQuCiAgICAgLy8gT3IganVzdCB0dXJuIGl0IG9uIGZvciBhbGwg
cGxhdGZvcm1zLiBJdCBzZWVtcyBsaWtlIGdvb2QgYmVoYXZpb3IgZXZlcnl3aGVyZS4gTWlnaHQg
YmUgYmV0dGVyIHRvIGdlbmVyYWxpemUKICAgICAvLyBpdCB0byBoYW5kbGUgYWxsIHdoaXRlc3Bh
Y2UsIG5vdCBqdXN0ICJzcGFjZSIuCiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBzdGF0aWMgdW5zaWdu
ZWQgcmlnaHRUcnVuY2F0ZVRvQnVmZmVyKGNvCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBh
biBlZGl0aW5nIGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGd1YXJkIHRoaXMgY29kZSBiZWhpbmQgYW4gZWRpdGluZyBiZWhhdmlvci4gVGhlbiB3ZSBjYW4g
cmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAvLyBPciBqdXN0IHR1
cm4gaXQgb24gZm9yIGFsbCBwbGF0Zm9ybXMuIEl0IHNlZW1zIGxpa2UgZ29vZCBiZWhhdmlvciBl
dmVyeXdoZXJlLiBNaWdodCBiZSBiZXR0ZXIgdG8gZ2VuZXJhbGl6ZQogICAgIC8vIGl0IHRvIGhh
bmRsZSBhbGwgd2hpdGVzcGFjZSwgbm90IGp1c3QgInNwYWNlIi4KIApAQCAtMTUxLDggKzE1MSw4
IEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY28KICAgICB1bnNpZ25l
ZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50KTsKICAg
ICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBMZW5ndGgpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBndWFyZCB0aGlzIGNvZGUgYmVoaW5kIGFuIGVkaXRpbmcgYmVoYXZpb3Iu
IFRoZW4gd2UgY2FuIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJl
aGluZCBhbiBlZGl0aW5nIGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JN
KElPU19GQU1JTFkpLWd1YXJkLgogICAgIC8vIE9yIGp1c3QgdHVybiBpdCBvbiBmb3IgYWxsIHBs
YXRmb3Jtcy4gSXQgc2VlbXMgbGlrZSBnb29kIGJlaGF2aW9yIGV2ZXJ5d2hlcmUuIE1pZ2h0IGJl
IGJldHRlciB0byBnZW5lcmFsaXplCiAgICAgLy8gaXQgdG8gaGFuZGxlIGFsbCB3aGl0ZXNwYWNl
LCBub3QganVzdCAic3BhY2UiLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIEludFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVj
dCgpOyB9CiB9OwogCi0jaWYgIShQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpKQorI2lmICEoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVw
cmVzZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCIKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKERBVEFDVUVfVkFMVUUpICYmIChVU0UoQVZGT1VO
REFUSU9OKSB8fCBQTEFURk9STShJT1MpKQorI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKERB
VEFDVUVfVkFMVUUpICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KSkKIAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCkBAIC0xMDQsNCArMTA0LDQgQEAgdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY6OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQorI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8p
ICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogI2luY2x1
ZGUgIklTT1ZUVEN1ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCIKQEAgLTU4NCw0ICs1ODQsNCBAQCBib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJl
YWROYXRpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURF
TykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiAoVVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCiAjZGVm
aW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAo
VVNFKEFWRk9VTkRBVElPTikgfHwgUExBVEZPUk0oSU9TKSkKKyNpZiBFTkFCTEUoVklERU8pICYm
IChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogI2luY2x1ZGUg
IkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmgiCkBAIC0xMTQsNiArMTE0LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJ
T04pIHx8IFBMQVRGT1JNKElPUykpCisjZW5kaWYgLy8gIEVOQUJMRShWSURFTykgJiYgKFVTRShB
VkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQogCiAjZW5kaWYgLy8gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
YmFja1RhcmdldE1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oIgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaD4KQEAgLTg0LDQg
Kzg0LDQgQEAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1hYyogdG9NZWRpYVBsYQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NzAsNyArNDcwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN1
cAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAvLyBGSVhNRTogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBhc3N1bWVzIGEgUVRLaXQvUXVpY2tUaW1lIG1lZGlhIGVuZ2luZQotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjptZXQKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpyYXRlQ2hh
bmdlZCgpCiB7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiBQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygp
ICYmIHBsYXllckl0ZW1TdGF0dXMoKSA+PSBNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c1Bs
YXliYWNrQnVmZmVyRnVsbCkgewogICAgICAgICBkb3VibGUgcmF0ZSA9IHRoaXMtPnJhdGUoKTsK
ICAgICAgICAgaWYgKHJhdGUgIT0gcmVxdWVzdGVkUmF0ZSgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmgiCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTYsNCArNTYsNCBAQCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlck1hY19oCiAjZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWNfaAog
Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oIgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0YuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0ZfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZDRl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYmICFIQVZF
KEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VOREFU
SU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2luY2x1ZGUgPEFWRm91bmRh
dGlvbkNGL0FWQ0ZQbGF5ZXJJdGVtVHJhY2suaD4KQEAgLTY3LDYgKzY3LDYgQEAgcHJvdGVjdGVk
OgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYm
ICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhB
VkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0
aW9uLCBBCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0
KTsKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nLCBOU1N0cmluZyopCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZv
dW5kYXRpb24sIEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdCk7CiAjZW5kaWYKIApAQCAt
ODUsNyArODUsNyBAQCAtICh2b2lkKWNvbnRlbnRLZXlTZXNzaW9uOihBVkNvbnRlbnRLZXlTCiAg
ICAgICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qoa2V5UmVxdWVzdCk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQp
Y29udGVudEtleVNlc3Npb246KEFWQ29udGVudEtleVNlc3Npb24gKilzZXNzaW9uIGRpZFByb3Zp
ZGVQZXJzaXN0YWJsZUNvbnRlbnRLZXlSZXF1ZXN0OihBVlBlcnNpc3RhYmxlQ29udGVudEtleVJl
cXVlc3QgKilrZXlSZXF1ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb24pOwpAQCAtMTUx
LDcgKzE1MSw3IEBAIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMKIAog
Ym9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0
ZW50S2V5cygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIGdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZGT2JqQ19oCiAjZGVmaW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtNjgsNiArNjgsNiBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgJiYgIUhBVkUoQVZGT1VOREFUSU9OX0xF
R0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJM
RV9PVVRQVVRfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKSAmJiAhSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkgJiYg
IVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pICYm
ICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9i
akMuaCIKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWNfaAogI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTWFjX2gKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNYWMuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1QYXVz
ZSgpIG92ZXJyaWRlOwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc3VwcG9ydHNNdXRpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKICAgICB2b2lkIHNldE11
dGVkKGJvb2wpIG92ZXJyaWRlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0FycmF5ICp0aW1lZE1ldGFkYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBlcnJvckxvZygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzEwLDcgKzMxMCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChib29sKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5
ZXJMYXllci5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVi
cy5oIgogI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlE
ZXZpY2UuaD4KQEAgLTI4NCw3ICsyODQsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0
aW9uLCBBVk1ldGFkCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXRCb3VuZE5ldHdvcmtJbnRlcmZhY2VOYW1lLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZp
ZXJLZXksIE5TU3RyaW5nICopCkBAIC0zMDEsNyArMzAxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMKEFWRm91bmRhdGlvbgogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gp
CiBTT0ZUX0xJTktfT1BUSU9OQUwoTWVkaWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVo
YXZpb3IsIEJvb2xlYW4sICgpLCAoKSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaWYgSEFWRShDRUxFU1RJQUwpCiAKQEAgLTMxOSw3ICszMTksNyBA
QCBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSURl
dmljZSkKICNkZWZpbmUgVUlEZXZpY2UgZ2V0VUlEZXZpY2VDbGFzcygpCiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+c2V0VmlkZW9MYXllcihtX3ZpZGVvTGF5ZXIuZ2V0KCksIGRlZmF1bHRTaXplKTsKIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21f
dmlkZW9MYXllciBzZXRQSVBNb2RlRW5hYmxlZDoocGxheWVyKCktPmZ1bGxzY3JlZW5Nb2RlKCkg
JiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKICNl
bmRpZgpAQCAtODQxLDcgKzg0MSw3IEBAIHN0YXRpYyBOU1VSTCAqY2Fub25pY2FsVVJMKGNvbnN0
IFVSTCYgdXIKICAgICByZXR1cm4gW2Nhbm9uaWNhbFJlcXVlc3QgVVJMXTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TSFRUUENvb2tp
ZSogdG9OU0hUVFBDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7CiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldFVz
ZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKQogICAgICAgICBbb3B0aW9ucyBzZXRPYmpl
Y3Q6QFlFUyBmb3JLZXk6QVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseV07
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBp
ZiAoY2FuTG9hZEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkoKSkKICAgICAg
ICAgW29wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OkFWVVJMQXNzZXRSZXF1aXJlc0N1c3Rv
bVVSTExvYWRpbmdLZXldOwogICAgIC8vIEZJWE1FOiByZGFyOi8vcHJvYmxlbS8yMDM1NDY4OApA
QCAtOTM0LDEzICs5MzQsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgU3RyaW5nIG5ldHdvcmtJbnRlcmZhY2VOYW1lID0gcGxheWVyKCktPm1l
ZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKTsKICAgICBpZiAoIW5ldHdvcmtJbnRlcmZh
Y2VOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0Om5ldHdvcmtJbnRl
cmZhY2VOYW1lIGZvcktleTpBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZV07CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKHBsYXllcigpLT5nZXRSYXdDb29raWVz
KHVybCwgY29va2llcykpIHsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBuc0Nv
b2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
Y29va2llcy5zaXplKCldKTsKQEAgLTk2NSw3ICs5NjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJj
ZUxvYWRlciA9IG1fYXZBc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlcjsKICAgICBbcmVzb3VyY2VM
b2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXJEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxMb2Fk
ZXJEZWxlZ2F0ZVF1ZXVlKCldOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID4gMTAxMTAwCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTEwMAogICAgIGlmIChEZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCiAg
ICAgICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dFVSTFNlc3Npb246KV0KICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSldCkBAIC0xMDIyLDcgKzEwMjIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgW21fYXZQ
bGF5ZXIuZ2V0KCkgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazptX2FsbG93c1dpcmVsZXNzVmlk
ZW9QbGF5YmFja107CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQpIHsKICAgICAgICAgLy8gQ2xlYXIgbV9zaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dCBzbyBkb2Vzbid0IHJldHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgogICAgICAgICBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ID0gZmFsc2U7CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgfQogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSAmJiAhUExBVEZP
Uk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFN
SUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKElPU01BQykKICAgICBzZXRTaG91bGREaXNhYmxl
U2xlZXAocGxheWVyKCktPnNob3VsZERpc2FibGVTbGVlcCgpKTsKICNlbmRpZgogCkBAIC0xMjIw
LDcgKzEyMjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotI2lmIFBM
QVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKICAgICAgICAgW21fdmlk
ZW9MYXllciBzZXRQSVBNb2RlRW5hYmxlZDoobW9kZSAmIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSldOwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBs
YXliYWNrKCk7CkBAIC0xMjI5LDcgKzEyMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogTlNBcnJheSAqTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dGltZWRNZXRhZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fY3VycmVudE1ldGFEYXRh
KQpAQCAtMTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZv
bHVtZShmbG9hdCB2b2x1bWUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHZvbHVtZSk7CiAgICAgcmV0dXJuOwogI2Vsc2UK
QEAgLTE0MTcsNyArMTQxNyw3IEBAIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmoKIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNlZWth
YmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAogewotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgcmV0dXJuIFttX2F2UGxheWVySXRlbSBzZWVr
YWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lXTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBA
IC0xNDI2LDcgKzE0MjYsNyBAQCBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqCiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsaXZlVXBk
YXRlSW50ZXJ2YWwoKSBjb25zdAogewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiAgICAgcmV0dXJuIFttX2F2UGxheWVySXRlbSBsaXZlVXBkYXRlSW50ZXJ2YWxdOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTE4NTAsNyArMTg1MCw3IEBAIE1lZGlhVGltZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24KIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdAog
ewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEwCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwCiAgICAgcmV0dXJuIDA7CiAjZWxzZQogICAgIHJldHVybiA1OwpA
QCAtMjIwMyw3ICsyMjAzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZFBhc3ND
T1JTQWNjZXNzQ2hlY2soKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTEwMAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDAKICAgICBBVkFzc2V0
UmVzb3VyY2VMb2FkZXIgKnJlc291cmNlTG9hZGVyID0gbV9hdkFzc2V0LmdldCgpLnJlc291cmNl
TG9hZGVyOwogICAgIGlmICghRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlv
bk5TVVJMU2Vzc2lvbkVuYWJsZWQoKQogICAgICAgICB8fCAhW3Jlc291cmNlTG9hZGVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbildKQpAQCAtMjIxOCw3ICsyMjE4LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiBzdGQ6Om9wdGlv
bmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4g
MTAxMTAwCiAgICAgQVZBc3NldFJlc291cmNlTG9hZGVyICpyZXNvdXJjZUxvYWRlciA9IG1fYXZB
c3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlcjsKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5nczo6aXNBVkZvdW5kYXRpb25OU1VSTFNlc3Npb25FbmFibGVkKCkKICAgICAgICAgfHwgIVty
ZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb24pXSkK
QEAgLTI3NjgsNyArMjc2OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzoKIHsKICAgICBib29sIHdpcmVsZXNzVGFyZ2V0ID0gZmFsc2U7CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFy
Z2V0KSB7CiAgICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVk
aWFQbGF5YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKQogICAgICAgICAgICAgd2lyZWxlc3NUYXJn
ZXQgPSBtX2F2UGxheWVyICYmIG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZTsKQEAgLTI3ODksNyArMjc4OSw3IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0VHlwZSAKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6VGFyZ2V0VHlwZU5vbmU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoIUFWRm91bmRhdGlvbkxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKIApAQCAtMjgxMCw3ICsyODEwLDcgQEAgTWVk
aWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIAogI2VuZGlmCiB9CiAgICAgCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJp
bmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllclR5cGUgKnBsYXll
cikKIHsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTI4OTMsNyArMjg5Myw3IEBAIFN0cmluZyBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmoKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBTdHJpbmcgd2lyZWxlc3NUYXJnZXROYW1lOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQp
CiAgICAgICAgIHdpcmVsZXNzVGFyZ2V0TmFtZSA9IG1fcGxheWJhY2tUYXJnZXQtPmRldmljZU5h
bWUoKTsKICNlbHNlCkBAIC0yOTI2LDcgKzI5MjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKQEAgLTI5ODEsMTEgKzI5ODEs
MTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIHNldERl
bGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6dXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9hdlBsYXll
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjQ5LDcgKzMyNDksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZmxhZykKIHsKLSNpZiBQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oSU9T
TUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikgJiYgIVBMQVRGT1JNKElPU01BQykKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgIFttX2F2UGxheWVyIF9zZXRQcmV2ZW50c1NsZWVwRHVyaW5nVmlk
ZW9QbGF5YmFjazpmbGFnXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtODg3LDcg
Kzg4Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIAogYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzUGljdHVyZUlu
UGljdHVyZSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja01hcC52YWx1
ZXMoKSkgewogICAgICAgICBpZiAodHJhY2stPnN0cmVhbVRyYWNrKCkuaXNDYXB0dXJlVHJhY2so
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGX2gKICNkZWZp
bmUgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYm
IChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKSAmJiBFTkFCTEUoQVZGX0NBUFRJ
T05TKQorI2lmIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JN
KElPU19GQU1JTFkpKSAmJiBFTkFCTEUoQVZGX0NBUFRJT05TKQogCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTeXN0
ZW1NZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKQEAgLTgwLDcg
KzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIHRocmVzaG9sZCB3aWR0aCBvciBo
ZWlnaHQgYWJvdmUgd2hpY2ggYSB0aWxlZCBsYXllciB3aWxsIGJlIHVzZWQuIFRoaXMgc2hvdWxk
IGJlCiAvLyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgdGlsZWQgbGF5ZXJzIGZvciBtb3N0IEdyYXBo
aWNzTGF5ZXJzLCBidXQgbGVzcyB0aGFuIHRoZSBPcGVuR0wKIC8vIHRleHR1cmUgc2l6ZSBsaW1p
dCBvbiBhbGwgc3VwcG9ydGVkIGhhcmR3YXJlLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogc3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAx
MjgwOwogc3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgPSAxMDI0
Owogc3RhdGljIGNvbnN0IGludCBjTWVtb3J5TGV2ZWxUb1VzZVNtYWxsZXJQaXhlbERpbWVuc2lv
biA9IDM1OwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9QbGF0ZgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRm
b3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVy
Rm9yTWVkaWEoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09
IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNZWRpYSA/IG1fY29udGVudHNMYXllci0+cGxhdGZvcm1M
YXllcigpIDogbnVsbHB0cjsKQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpmbHVzaENvbXBvc2l0aW5nU3QKICAgICBjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5n
ZXMgPSB2aXNpYmxlUmVjdCAhPSBtX3ByZXZpb3VzQ29tbWl0dGVkVmlzaWJsZVJlY3Q7CiAgICAg
bV9wcmV2aW91c0NvbW1pdHRlZFZpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBJbiBXSzEsIFVJS2l0
IG1heSBiZSBjaGFuZ2luZyBsYXllciBib3VuZHMgYmVoaW5kIG91ciBiYWNrIGluIG92ZXJmbG93
LXNjcm9sbCBsYXllcnMsIHNvIGRpc2FibGUgdGhlIG9wdGltaXphdGlvbi4KICAgICAvLyBTZWUg
dGhlIHNpbWlsYXIgdGVzdCBpbiBjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCgpLgogICAg
IGlmIChtX2xheWVyLT5pc1BsYXRmb3JtQ0FMYXllckNvY29hKCkpCkBAIC0xMzU5LDcgKzEzNTks
NyBAQCBHcmFwaGljc0xheWVyQ0E6OlZpc2libGVBbmRDb3ZlcmFnZVJlY3RzCiAgICAgYm9vbCBt
YXBXYXNDbGFtcGVkOwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdEZvckNoaWxkcmVuID0gc3RhdGUu
bWFwcGVkUXVhZCgmbWFwV2FzQ2xhbXBlZCkuYm91bmRpbmdCb3goKTsKICAgICBGbG9hdFBvaW50
IGJvdW5kc09yaWdpbiA9IG1fYm91bmRzT3JpZ2luOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEluIFdLMSwgVUlLaXQgbWF5IGJlIGNoYW5naW5n
IGxheWVyIGJvdW5kcyBiZWhpbmQgb3VyIGJhY2sgaW4gb3ZlcmZsb3ctc2Nyb2xsIGxheWVycywg
c28gdXNlIHRoZSBsYXllcidzIG9yaWdpbi4KICAgICBpZiAobV9sYXllci0+aXNQbGF0Zm9ybUNB
TGF5ZXJDb2NvYSgpKQogICAgICAgICBib3VuZHNPcmlnaW4gPSBtX2xheWVyLT5ib3VuZHMoKS5s
b2NhdGlvbigpOwpAQCAtMzc0OCw3ICszNzQ4LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJl
cXVpcmVzVGlsZWRMYXllcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRTog
Y2F0Y2ggemVyby1zaXplIGhlaWdodCBvciB3aWR0aCBoZXJlIChvciBlYXJsaWVyKT8KLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpbnQgbWF4UGl4ZWxE
aW1lbnNpb24gPSBzeXN0ZW1NZW1vcnlMZXZlbCgpIDwgY01lbW9yeUxldmVsVG9Vc2VTbWFsbGVy
UGl4ZWxEaW1lbnNpb24gPyBjTWF4UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgOiBjTWF4UGl4ZWxE
aW1lbnNpb247CiAgICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpICogcGFnZVNjYWxlRmFjdG9yID4g
bWF4UGl4ZWxEaW1lbnNpb24gfHwgbV9zaXplLmhlaWdodCgpICogcGFnZVNjYWxlRmFjdG9yID4g
bWF4UGl4ZWxEaW1lbnNpb247CiAjZWxzZQpAQCAtMzgyNyw3ICszODI3LDcgQEAgR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiB7CiAgICAg
Ly8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0xh
eWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllcios
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyBsYXllclRyZWVBc1N0cmluZygpIGNvbnN0ID0gMDsKICNlbmRpZiAv
LyBQTEFURk9STShXSU4pCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBib29sIGlzV2ViTGF5ZXIoKTsKICAgICB2b2lkIHNldEJvdW5kc09uTWFpblRo
cmVhZChDR1JlY3QpOwogICAgIHZvaWQgc2V0UG9zaXRpb25Pbk1haW5UaHJlYWQoQ0dQb2ludCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgiCiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oPgogI2VuZGlmCkBAIC03NSw3ICs3NSw3IEBAIFRpbGVDb250cm9sbGVyOjp+VGlsZUNv
bnRyb2xsZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0aWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXIoKS5yZW1vdmVUaWxlQ29udHJvbGxlcih0aGlzKTsKICNlbmRpZgogfQpAQCAtMzU5
LDcgKzM1OSw3IEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OmJvdW5kc0F0TGFzdFJldmEKICAg
ICByZXR1cm4gYm91bmRzV2l0aG91dE1hcmdpbjsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAvLyBSZXR1cm4gJ3JlY3QnIHBhZGRlZCBldmVubHkg
b24gYWxsIHNpZGVzIHRvIGFjaGlldmUgJ25ld1NpemUnLCBidXQgbWFrZSB0aGUgcGFkZGluZyB1
bmV2ZW4gdG8gY29udGFpbiB3aXRoaW4gY29uc3RyYWluaW5nUmVjdC4KIHN0YXRpYyBGbG9hdFJl
Y3QgZXhwYW5kUmVjdFdpdGhpblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFNpemUmIG5ld1NpemUsIGNvbnN0IEZsb2F0UmVjdCYgY29uc3RyYWluaW5nUmVjdCkKIHsKQEAg
LTM5Myw3ICszOTMsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VS
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhlIGlPUyBhbmQgTWFjIGNvZGUu
CiAgICAgVU5VU0VEX1BBUkFNKHByZXZpb3VzVmlzaWJsZVJlY3QpOwogICAgIApAQCAtNzU5LDcg
Kzc1OSw3IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gVGlsZUNvbnQKICAgICBy
ZXR1cm4gbGF5ZXJMaXN0OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiB1bnNpZ25lZCBUaWxlQ29udHJvbGxlcjo6bnVtYmVyT2ZVbnBhcmVudGVkVGls
ZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGNvdW50ID0gdGlsZUdyaWQoKS5udW1iZXJPZlVu
cGFyZW50ZWRUaWxlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBibGFua1BpeGVs
Q291bnQoKSBjb25zdDsKICAgICBzdGF0aWMgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50Rm9yVGls
ZXMoY29uc3QgUGxhdGZvcm1MYXllckxpc3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRQ
b2ludCYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdDsKICAgICB2b2lkIHJl
bW92ZVVucGFyZW50ZWRUaWxlc05vdygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmgiCiAjZW5kaWYKIApAQCAtNTA1LDcgKzUwNSw3IEBAIFRpbGVHcmlkOjpU
aWxlQ29ob3J0IFRpbGVHcmlkOjpuZXh0VGlsZUMKIHZvaWQgVGlsZUdyaWQ6OnN0YXJ0ZWROZXdD
b2hvcnQoVGlsZUNvaG9ydCBjb2hvcnQpCiB7CiAgICAgbV9jb2hvcnRMaXN0LmFwcGVuZChUaWxl
Q29ob3J0SW5mbyhjb2hvcnQsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFtX2NvbnRyb2xsZXIuaXNJ
bldpbmRvdygpKQogICAgICAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKS50aWxlQ29u
dHJvbGxlckdhaW5lZFVucGFyZW50ZWRUaWxlcygmbV9jb250cm9sbGVyKTsKICNlbmRpZgpAQCAt
NzE0LDcgKzcxNCw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb24K
IAogdm9pZCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNB
TGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXllclBhaW50QmVoYXZpb3Ip
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKQEAg
LTc4OSw3ICs3ODksNyBAQCBpbnQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJl
CiAgICAgcmV0dXJuIHJlcGFpbnRDb3VudDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVz
Tm93KCkKIHsKICAgICB3aGlsZSAoIW1fY29ob3J0TGlzdC5pc0VtcHR5KCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
cmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiwgQ0dSZWN0IGxheWVyQm91bmRzKSBjb25z
dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NvaG9ydExpc3Quc2l6ZSgpOyB9CiAgICAgdm9pZCByZW1vdmVVbnBhcmVudGVkVGlsZXNOb3co
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oPgpAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEEg
cmFjZSBjb25kaXRpb24gZHVyaW5nIFdlYlZpZXcgZGVhbGxvY2F0aW9uIGNhbiBsZWFkIHRvIGEg
Y3Jhc2ggaWYgdGhlIGxheWVyIHN5bmMgcnVuIGxvb3AKICAgICAvLyBvYnNlcnZlciBpcyBhZGRl
ZCB0byB0aGUgbWFpbiBydW4gbG9vcCA8cmRhcjovL3Byb2JsZW0vOTc5ODU1MD4uIEhvd2V2ZXIs
IGZvciByZXNwb25zaXZlbmVzcywKICAgICAvLyB3ZSBzdGlsbCBhbGxvdyB0aGlzLCBzZWUgPHJk
YXI6Ly9wcm9ibGVtLzc0MDMzMjg+LiBTaW5jZSB0aGUgcmFjZSBjb25kaXRpb24gYW5kIHN1YnNl
cXVlbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgog
I2ltcG9ydCAiV0tHcmFwaGljcy5oIgpAQCAtMTE0LDcgKzExNCw3IEBAIC0gKHZvaWQpc2V0T3du
ZXI6KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXkKIC0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENB
QW5pbWF0aW9uICopYW5pbWF0aW9uCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFk
TG9jaygpOwogI2VuZGlmCiAgICAgaWYgKCFtX293bmVyKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIC0g
KHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICoKIC0gKHZvaWQpYW5pbWF0aW9u
RGlkU3RvcDooQ0FBbmltYXRpb24gKilhbmltYXRpb24gZmluaXNoZWQ6KEJPT0wpZmluaXNoZWQK
IHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBV
TlVTRURfUEFSQU0oZmluaXNoZWQpOwpAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzU2MKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKICAgICBbbV9sYXllciBzZXRDb250ZW50c1NjYWxlOnZhbHVlXTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9sYXllciBzZXRSYXN0ZXJp
emF0aW9uU2NhbGU6dmFsdWVdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6dXBkYXRl
Q3VzdG9tQQogCiBzdGF0aWMgTlNTdHJpbmcgKmxheWVyQ29udGVudHNGb3JtYXQoYm9vbCBhY2Nl
bGVyYXRlc0RyYXdpbmcsIGJvb2wgd2FudHNEZWVwQ29sb3IsIGJvb2wgc3VwcG9ydHNTdWJwaXhl
bEFudGlhbGlhc2VkRm9udHMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKHdhbnRzRGVlcENvbG9yKQogICAgICAgICByZXR1cm4ga0NBQ29u
dGVudHNGb3JtYXRSR0JBMTBYUjsKICNlbHNlCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBUaWxlZEJh
Y2tpbmcqIFBsYXRmb3JtQ0FMYXllckNvY29hOjp0aWxlCiAgICAgcmV0dXJuIFt0aWxlZEJhY2tp
bmdMYXllciB0aWxlZEJhY2tpbmddOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiBib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNXZWJMYXllcigpCiB7CiAg
ICAgQk9PTCByZXN1bHQgPSBOTzsKQEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWEKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogICAgIH0pOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBQbGF0
Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQogewpAQCAtMTEzOSw3ICsxMTM5LDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKAogICAgIGlmICghbGF5ZXJD
b250ZW50cy0+cGxhdGZvcm1DQUxheWVyUmVwYWludENvdW50KHBsYXRmb3JtQ0FMYXllcikpCiAg
ICAgICAgIGxheWVyUGFpbnRCZWhhdmlvciB8PSBHcmFwaGljc0xheWVyUGFpbnRGaXJzdFRpbGVQ
YWludDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFdLU2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKICNlbmRpZgogICAgIApAQCAt
MTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRz
KAogICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246
OkJvdHRvbVVwIG9uIE1hYy4KICAgICBBU1NFUlQobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxh
eWVyQ29udGVudHNPcmllbnRhdGlvbigpID09IEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bik7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIg
Zm9udEFudGlhbGlhc2luZ1N0YXRlKGNvbnRleHQsIFtwbGF0Zm9ybUNBTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKSBpc09wYXF1ZV0pOwogICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5zZXR1cChbV0FL
V2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CiAjZWxzZQpAQCAtMTE4NSw3ICsxMTg1
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKAogICAgICAgICAg
ICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNB
TGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAgICAg
ICAgfQogICAgICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgZm9udEFudGlhbGlhc2luZ1N0YXRlLnJlc3RvcmUoKTsKICNlbHNlCiAgICAg
ICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChGbG9hdFJlY3QoKSk7CkBAIC0xMjM5
LDcgKzEyMzksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0CiAK
IHVuc2lnbmVkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNraW5nU3RvcmVCeXRlc1BlclBpeGVs
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAod2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoKSkKICAgICAgICAgcmV0dXJuIGlz
T3BhcXVlKCkgPyA0IDogNTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250
ZXh0UmVmIHBsYXRmbwogICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxh
dGZvcm1Db250ZXh0KTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBDb25pY0RhdGEm
IGRhdGEpIHsKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogICAgICAgICAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNs
YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkp
OwogICAgICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxv
YXQpLU1fUElfMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2RlZmluZSBV
U0VfRFJBV19QQVRIX0RJUkVDVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkpCisjZGVmaW5lIFVTRV9E
UkFXX1BBVEhfRElSRUNUIChQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkpCiAKIC8vIEZJWE1F
OiBUaGUgZm9sbG93aW5nIHVzaW5nIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBpbiA8d3RmL0hhc2hG
dW5jdGlvbnMuaD4uCiB1c2luZyBXVEY6OnBhaXJJbnRIYXNoOwpAQCAtMTI5LDcgKzEyOSw3IEBA
IENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKICAgICBzdGF0aWMgQ0dD
b2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExB
VEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID4gMTAxMTAwKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDExMDApCiAgICAgICAg
IGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlRGlzcGxheVAzKTsKICNlbHNlCiAgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBz
UkdCQ29sb3JTcGFjZVJlZigpOwpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICBpZiAoIXNob3VsZFVzZVN1YmltYWdlICYmIGN1
cnJIZWlnaHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0SGVpZ2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0IC8gaW1hZ2VT
aXplLmhlaWdodCgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBDR0NvbnRleHRHZXRTaG91bGRBbnRpYWxp
YXMoY29udGV4dCk7CiAgICAgLy8gQW50aS1hbGlhc2luZyBpcyBvbiBieSBkZWZhdWx0IG9uIHRo
ZSBpUGhvbmUuIE5lZWQgdG8gdHVybiBpdCBvZmYgd2hlbiBkcmF3aW5nIGltYWdlcy4KICAgICBD
R0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgZmFsc2UpOwpAQCAtMzg2LDcgKzM4
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICAKICAg
ICBpZiAoIXN0YXRlU2F2ZXIuZGlkU2F2ZSgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldENUTShj
b250ZXh0LCB0cmFuc2Zvcm0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgd2Fz
QW50aWFsaWFzZWQpOwogI2VuZGlmCiAgICAgfQpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyB2
b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW4KIHsKICAgICBDR0ltYWdlUmVmIGltYWdl
ID0gKENHSW1hZ2VSZWYpaW5mbzsKICAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0oY29udGV4dCwgMCwgLWhlaWdodCk7CiAjZW5kaWYKQEAgLTQ0Myw3ICs0NDMsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAgICAgZmxvYXQgaCA9
IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBzdWJJbWFnZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uub3JpZ2luYWxTaXplKCk7CiAj
ZWxzZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CkBAIC00NzEsNyAr
NDcxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAgICAg
ICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRyaXgsIENHQ29udGV4dEdldENU
TShjb250ZXh0KSk7CiAgICAgICAgIC8vIFRoZSB0b3Agb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBp
bWFnZSBpcyBkcmF3biBhdCB0aGUgYm90dG9tIG9mIHRoZSB0aWxlLiBNYXAgaXQgdG8gdGhlIHRv
cC4KICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobWF0cml4LCAw
LCBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgLSBoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2Fs
ZShtYXRyaXgsIDEsIC0xKTsKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFu
c2xhdGUobWF0cml4LCAwLCAtaCk7CiAjZW5kaWYKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgRmxvCiAgICAgYXV0byBwMiA9IGNlbnRlcmVk
UG9pbnRzWzFdOwogCiAgICAgaWYgKHNob3VsZEFudGlhbGlhcygpKSB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIEZvcmNlIGFudGlhbGlh
c2luZyBvbiBmb3IgbGluZSBwYXR0ZXJucyBhcyB0aGV5IGRvbid0IGxvb2sgZ29vZCB3aXRoIGl0
IHR1cm5lZCBvZmYgKDxyZGFyOi8vcHJvYmxlbS81NDU5NzcyPikuCiAgICAgICAgIENHQ29udGV4
dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdHJva2VTdHlsZSA9PSBEb3R0ZWRTdHJva2Ug
fHwgc3Ryb2tlU3R5bGUgPT0gRGFzaGVkU3Ryb2tlKTsKICNlbHNlCkBAIC0xMTgyLDcgKzExODIs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNUcmFuc3BhcmVuCiAKIHN0YXRpYyB2
b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CkBAIC0xNjQzLDcg
KzE2NDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjCiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBACiAjZW5kaWYKIAogLy8gQ0EgdXNlcyBBUkdCMzIgZm9yIHRleHR1cmVz
IGFuZCBBUkdCMzIgLT4gQVJHQjMyIHJlc2FtcGxpbmcgaXMgb3B0aW1pemVkLgotI2RlZmluZSBV
U0VfQVJHQjMyIFBMQVRGT1JNKElPUykKKyNkZWZpbmUgVVNFX0FSR0IzMiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWluCiAKIHN0YXRpYyBpbmxpbmUgQ0ZT
dHJpbmdSZWYganBlZ1VUSSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXSU4p
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAgIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlSlBFRyA9IENGU1RSKCJwdWJsaWMuanBlZyIpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIGtVVFR5cGVKUEVHOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjZW5k
aWYKIAogLy8gQ0EgdXNlcyBBUkdCMzIgZm9yIHRleHR1cmVzIGFuZCBBUkdCMzIgLT4gQVJHQjMy
IHJlc2FtcGxpbmcgaXMgb3B0aW1pemVkLgotI2RlZmluZSBVU0VfQVJHQjMyIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgVVNFX0FSR0IzMiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNH
OjpjcmVhdGVGcmEKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJ
bWFnZUF0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRleCwgb3B0aW9ucy5nZXQoKSkp
OwogICAgIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4gLSBDb3JlR3JhcGhpY3MgY2hhbmdl
ZCB0aGUgZGVmYXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBpT1MgNC4wIHRvIGtDR0ltYWdlQ2Fj
aGluZ1RyYW5zaWVudAogICAgIC8vIHdoaWNoIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Np
b24gZm9yIHVzIHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJlIHJlc2FtcGxlZC9yZWNyZWF0ZWQg
ZXZlcnkgdGltZSB3ZSBjYWxsZWQKICAgICAvLyBDR0NvbnRleHREcmF3SW1hZ2UuIFdlIG5vdyB0
ZWxsIENHIHRvIGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxl
bS8xNDM2Njc1NT4gLQpAQCAtNDI2LDcgKzQyNiw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmEKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1hZ2UuZ2V0KCksIGtDR0ltYWdlQ2FjaGlu
Z1RlbXBvcmFyeSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
CiAgICAgU3RyaW5nIHV0aSA9IHRoaXMtPnV0aSgpOwogICAgIGlmICh1dGkuaXNFbXB0eSgpIHx8
IHV0aSAhPSAicHVibGljLnhiaXRtYXAtaW1hZ2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaWYgVVNFKENHKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2lu
Y2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ29sb3I7CiBOU0Nv
bG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogVUlDb2xvciAqcGxhdGZvcm1Db2xvcihj
b25zdCBDb2xvciYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0ICJDb2xvck1hYy5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxw
YWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+
CiAjZW5kaWYKQEAgLTQ0LDcgKzQ0LDcgQEAgTlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBD
b2xvciYgY29sbwogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNkZWZpbmUgSEFTX0NP
UkVfVEVYVF9XSURUSF9BVFRSSUJVVEUgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQotI2RlZmluZSBDQU5fRElTQUxM
T1dfVVNFUl9JTlNUQUxMRURfRk9OVFMgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApKQorI2RlZmluZSBIQVNfQ09SRV9U
RVhUX1dJRFRIX0FUVFJJQlVURSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2RlZmluZSBDQU5fRElT
QUxMT1dfVVNFUl9JTlNUQUxMRURfRk9OVFMgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSkKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02NzEsNyArNjcxLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNo
ZTo6c2ltaWxhckZvbnQoY29ucwogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIFN1YnN0aXR1dGUgdGhlIGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgZm9yIHdl
bGwta25vd24gbW9ub3NwYWNlIGZvbnRzLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShmYW1pbHksICJtb25hY28iKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShmYW1pbHksICJtZW5sbyIpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGNvdXJpZXIoImNvdXJpZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKQEAgLTc2OSw3ICs3NjksNyBAQCBzdGF0aWMgQ1RGb250U3ltYm9saWNUcmFpdHMg
Y29tcHV0ZVRyYWl0CiAKIFN5bnRoZXNpc1BhaXIgY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhD
VEZvbnRSZWYgZm9udCwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJv
b2wgaXNQbGF0Zm9ybUZvbnQpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKENURm9udElzQXBwbGVDb2xvckVtb2ppKGZvbnQpKQogICAgICAg
ICByZXR1cm4gU3ludGhlc2lzUGFpcihmYWxzZSwgZmFsc2UpOwogI2VuZGlmCkBAIC05MjQsNyAr
OTI0LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBhdXRvJiBmb2xkZWQgPSBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uOjpmb2xkZWRGYW1pbHlOYW1lKHBvc3RTY3JpcHROYW1lKTsKICAgICAgICAg
cmV0dXJuIG1fcG9zdFNjcmlwdE5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbnN1cmUoZm9sZGVkLCBb
Jl0gewogICAgICAgICAgICAgYXV0byBwb3N0U2NyaXB0TmFtZVN0cmluZyA9IGZvbGRlZC5jcmVh
dGVDRlN0cmluZygpOwotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAg
ICAgICAgICAgICBDRlN0cmluZ1JlZiBuYW1lQXR0cmlidXRlID0ga0NURm9udFBvc3RTY3JpcHRO
YW1lQXR0cmlidXRlOwogI2Vsc2UKICAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVBdHRyaWJ1
dGUgPSBrQ1RGb250TmFtZUF0dHJpYnV0ZTsKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHN0YXRpYyBW
YXJpYXRpb25DYXBhYmlsaXRpZXMgdmFyaWF0aW9uQ2EKICAgICB9CiAKICAgICBib29sIG9wdE91
dEZyb21HWE5vcm1hbGl6YXRpb24gPSBmYWxzZTsKLSNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKSkKICAgICBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gQ1RGb250
RGVzY3JpcHRvcklzU3lzdGVtVUlGb250KGZvbnREZXNjcmlwdG9yKTsKICNlbmRpZgogCkBAIC0x
MzA1LDcgKzEzMDUsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9u
CiAgICAgICAgIGZhbGxiYWNrRGVkdXBTZXQoKS5yZW1vdmUoZm9udCk7CiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0FyYWJpY0NoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA+PSAweDA2MDAgJiYgY2hhcmFjdGVyIDw9IDB4MDZGRjsKQEAgLTEzMTcsNyArMTMxNyw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxsYmEKICAgICBBU1NFUlQobGVu
Z3RoID4gMCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsZVN0cmluZzsKLSNp
ZiAoUExBVEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYg
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRGT1JNKE1BQykK
ICAgICBpZiAoIWxvY2FsZS5pc051bGwoKSkKICAgICAgICAgbG9jYWxlU3RyaW5nID0gbG9jYWxl
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAjZWxzZQpAQCAtMTMyNiwxMyArMTMyNiwxMyBA
QCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gbG9va3VwRmFsbGJhCiAKICAgICBDRkluZGV4
IGNvdmVyZWRMZW5ndGggPSAwOwogICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHJlc3VsdDsKLSNp
ZiAhVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUICYmIChQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShJT1MpICYmIFRBUkdFVF9PU19JT1MpKQorI2lmICFVU0VfUExBVEZPUk1fU1lT
VEVNX0ZBTExCQUNLX0xJU1QgJiYgKFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIFRBUkdFVF9PU19JT1MpKQogICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRl
UGh5c2ljYWxGb250Rm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShmb250LCBjaGFyYWN0ZXJzLCBs
ZW5ndGgsIGxvY2FsZVN0cmluZy5nZXQoKSwgJmNvdmVyZWRMZW5ndGgpKTsKICNlbHNlCiAgICAg
cmVzdWx0ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVGb3JDaGFyYWN0ZXJzV2l0aExhbmd1YWdlKGZv
bnQsIGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlU3RyaW5nLmdldCgpLCAmY292ZXJlZExlbmd0
aCkpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBDYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gd29uJ3QgaW5jbHVkZSBtdWx0aXBs
ZSBjb2RlIHBvaW50cy4gIkxlbmd0aCIgaXMgdG8ga25vdyBob3cgbWFueSBjb2RlIHVuaXRzCiAg
ICAgLy8gYXJlIGluIHRoZSBjb2RlIHBvaW50LgogICAgIFVDaGFyIGZpcnN0Q2hhcmFjdGVyID0g
Y2hhcmFjdGVyc1swXTsKQEAgLTEzNTYsNyArMTM1Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RG
b250UmVmPiBsb29rdXBGYWxsYmEKIAogUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFs
bGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNv
bnN0IEZvbnQqIG9yaWdpbmFsRm9udERhdGEsIGJvb2wgaXNQbGF0Zm9ybUZvbnQsIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGxlbmd0aCAmJiByZXF1aXJlc0N1c3Rv
bUZhbGxiYWNrRm9udCgqY2hhcmFjdGVycykpIHsKICAgICAgICAgYXV0byogZmFsbGJhY2sgPSBn
ZXRDdXN0b21GYWxsYmFja0ZvbnQoKmNoYXJhY3RlcnMsIGRlc2NyaXB0aW9uKTsKICAgICAgICAg
aWYgKCFmYWxsYmFjaykKQEAgLTE1MTEsNyArMTUxMSw3IEBAIFJlZjxGb250PiBGb250Q2FjaGU6
Omxhc3RSZXNvcnRGYWxsYmFja0YKICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAKICAgICAvLyBM
YXN0UmVzb3J0IGlzIGd1YXJhbnRlZWQgdG8gYmUgbm9uLW51bGwuCi0jaWYgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkK
KyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRD
RihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpKTsKICAgICBhdXRvIGZvbnQgPSBh
ZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQo
KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2Fk
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29uCiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgIH0K
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9v
bCBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBmYWxzZTsKICAgICBpZiAoY2hhbmdl
Rm9udFNtb290aGluZykgewogICAgICAgICBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcg
PSBDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cyhjZ0NvbnRleHQpOwpAQCAtMjk2LDcgKzI5
Niw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICBpZiAo
aGFzU2ltcGxlU2hhZG93KQogICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNoYW5nZUZvbnRTbW9vdGhpbmcpCiAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNnQ29udGV4dCwgb3JpZ2luYWxTaG91bGRV
c2VGb250U21vb3RoaW5nKTsKICNlbmRpZgpAQCAtNTExLDcgKzUxMSw3IEBAIGNvbnN0IEZvbnQq
IEZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW4KICAgICAgICAgY29uc3QgRm9udCogZm9udCA9
IGZhbGxiYWNrUmFuZ2VzQXQoaSkuZm9udEZvckNoYXJhY3RlcihiYXNlQ2hhcmFjdGVyKTsKICAg
ICAgICAgaWYgKCFmb250KQogICAgICAgICAgICAgY29udGludWU7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChiYXNlQ2hhcmFjdGVyID49
IDB4MDYwMCAmJiBiYXNlQ2hhcmFjdGVyIDw9IDB4MDZmZiAmJiBmb250LT5zaG91bGROb3RCZVVz
ZWRGb3JBcmFiaWMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IGJvb2wgZm9udEhhc1ZlcnRpY2FsR2x5cGhzKENURm9udAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBmb250
RmFtaWx5U2hvdWxkTm90QmVVc2VkRm9yQXJhYmljKENGU3RyaW5nUmVmIGZvbnRGYW1pbHlOYW1l
KQogewogICAgIGlmICghZm9udEZhbWlseU5hbWUpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGlj
IGJvb2wgbmVlZHNBc2NlbnRBZGp1c3RtZW50KENGU3RyaQogCiB2b2lkIEZvbnQ6OnBsYXRmb3Jt
SW5pdCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgbV9zeW50aGV0aWNCb2xkT2Zmc2V0ID0gbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgp
ID8gY2VpbGYobV9wbGF0Zm9ybURhdGEuc2l6ZSgpIC8gMjQuMGYpIDogMC5mOwogI2Vsc2UKICAg
ICBtX3N5bnRoZXRpY0JvbGRPZmZzZXQgPSBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCkg
PyAxLjBmIDogMC5mOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0
KCkKICAgICBpZiAocGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBGb250T3JpZW50YXRp
b246OlZlcnRpY2FsICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkpCiAgICAgICAgIG1f
aGFzVmVydGljYWxHbHlwaHMgPSBmb250SGFzVmVydGljYWxHbHlwaHMobV9wbGF0Zm9ybURhdGEu
Y3RGb250KCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQ0dGbG9hdCBhZGp1c3RtZW50ID0gc2hvdWxkVXNlQWRqdXN0bWVudChtX3BsYXRmb3Jt
RGF0YS5mb250KCkpID8gY2VpbCgoYXNjZW50ICsgZGVzY2VudCkgKiBrTGluZUhlaWdodEFkanVz
dG1lbnQpIDogMDsKIAogICAgIGxpbmVHYXAgPSBjZWlsZihsaW5lR2FwKTsKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIEZvbnQ6OnBsYXRmb3JtRGVzdHJveSgpCiAKIGJvb2wgRm9udDo6dmFyaWFu
dENhcHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMgZm9udFZh
cmlhbnRDYXBzLCBVQ2hhcjMyIGNoYXJhY3RlcikgY29uc3QKIHsKLSNpZiAoUExBVEZPUk0oSU9T
KSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRGT1JNKE1BQykKICAgICBHbHlwaCBnbHlw
aCA9IGdseXBoRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CiAgICAgaWYgKCFnbHlwaCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGJvb2wgRm9udDo6dmFyaWFudENh
cHNTdXBwb3J0c0NoYXJhY3RlckYKICNlbmRpZgogfQogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYg
VEFSR0VUX09TX0lPUykgfHwgUExBVEZPUk0oTUFDKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCiBzdGF0aWMgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gc21hbGxDYXBzT3BlblR5cGVEaWN0aW9uYXJ5KENGU3RyaW5nUmVmIGtl
eSwgaW50IHJhd1ZhbHVlKQogewogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdmFsdWUgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5
cGUsICZyYXdWYWx1ZSkpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgRm9udDo6ZGV0ZXJtaW5l
UGl0Y2goKQogCiAgICAgaW50IGZpeGVkUGl0Y2ggPSBleHRyYWN0TnVtYmVyKGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENURm9udENvcHlBdHRyaWJ1dGUobV9wbGF0Zm9ybURhdGEu
Zm9udCgpLCBrQ1RGb250Rml4ZWRBZHZhbmNlQXR0cmlidXRlKSkpLmdldCgpKTsKICAgICBtX3Ry
ZWF0QXNGaXhlZFBpdGNoID0gKENURm9udEdldFN5bWJvbGljVHJhaXRzKGN0Rm9udCkgJiBrQ1RG
b250TW9ub1NwYWNlVHJhaXQpIHx8IGZpeGVkUGl0Y2ggfHwgKGNhc2VJbnNlbnNpdGl2ZUNvbXBh
cmUoZnVsbE5hbWUuZ2V0KCksIENGU1RSKCJPc2FrYS1Nb25vIikpIHx8IGNhc2VJbnNlbnNpdGl2
ZUNvbXBhcmUoZnVsbE5hbWUuZ2V0KCksIENGU1RSKCJNUy1QR290aGljIikpIHx8IGNhc2VJbnNl
bnNpdGl2ZUNvbXBhcmUoZnVsbE5hbWUuZ2V0KCksIENGU1RSKCJNb25vdHlwZUNvcnNpdmEiKSkp
OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChm
YW1pbHlOYW1lICYmIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoZmFtaWx5TmFtZS5nZXQoKSwgQ0ZT
VFIoIkNvdXJpZXIgTmV3IikpKSB7CiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBDb3VyaWVyIE5l
dyB0byBub3QgYmUgdHJlYXRlZCBhcyBmaXhlZCBwaXRjaCwgYXMgdGhpcyB3aWxsIG1ha2UgdXNl
IG9mIGEgaGFja2VkIHNwYWNlIHdpZHRoIHdoaWNoIGlzIHVuZGVzaXJlYWJsZSBmb3IgaVBob25l
IChzZWUgcmRhcjovLzYyNjk3ODMpLgogICAgICAgICBtX3RyZWF0QXNGaXhlZFBpdGNoID0gZmFs
c2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVz
Y3JpcHRpb25Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRp
b25Db2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU3lzdGVtRm9udFN0cmluZyhjbwogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJzeXN0ZW0tdWkiKTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCBzdGQ6OnNpemVfdCBzaXplLCBzdGQ6OnNpemVfdC4uLiBpbmRpY2VzPiBzdGQ6OmFy
cmF5PFQsIHNpemU+IGNvbnZlcnRBcnJheShVICgmYXJyYXkpW3NpemVdLCBzdGQ6OmluZGV4X3Nl
cXVlbmNlPGluZGljZXMuLi4+KQogewpAQCAtOTQsNyArOTQsNyBAQCB1bnNpZ25lZCBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uOjplZmZlY3RpCiAgICAgICAgIGNvbnN0IGF1dG8mIGNzc0ZhbWlseSA9
IGZhbWlseUF0KGkpOwogICAgICAgICBpZiAoaXNTeXN0ZW1Gb250U3RyaW5nKGNzc0ZhbWlseSkp
CiAgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NG
YW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2U6OkZvclN5c3RlbVVJ
LCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250
VGV4dFN0eWxlKGNzc0ZhbWlseSkpCiAgICAgICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENh
c2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpD
bGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSku
c2l6ZSgpOwogI2VuZGlmCkBAIC0xMjEsNyArMTIxLDcgQEAgRm9udEZhbWlseVNwZWNpZmljYXRp
b24gRm9udENhc2NhZGVEZXNjcgogICAgICAgICAgICAgICAgIHJldHVybiBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbihjYXNjYWRlTGlzdFtpbmRleF0uZ2V0KCkpOwogICAgICAgICAgICAgaW5kZXgg
LT0gY2FzY2FkZUxpc3Quc2l6ZSgpOwogICAgICAgICB9Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxl
KGNzc0ZhbWlseSkpIHsKICAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250
Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygp
KTsKICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9D
b3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPENvcmVUZXh0L0Nv
cmVUZXh0Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2VuZGlm
CkBAIC00OCw3ICs0OCw3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RG
b24KICAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFy
eVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRl
KSkpOwogICAgIG1faGFzVmFyaWF0aW9ucyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0
Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBtX2lzRW1vamkgPSBDVEZvbnRJc0FwcGxlQ29sb3JFbW9qaSht
X2ZvbnQuZ2V0KCkpOwogI2VuZGlmCiB9CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIENGRGlj
dGlvbmFyeVJlZiBjYXNjYWRlVG9MYXN0UmVzbwogc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPiBjYXNjYWRlVG9MYXN0UmVzb3J0QW5kVmFyaWF0aW9uc0ZvbnREZXNjcmlwdG9y
KENURm9udFJlZiBvcmlnaW5hbEZvbnQpCiB7CiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiA8
cmRhcjovL3Byb2JsZW0vMjg0NDk0NDE+IGlzIGZpeGVkLgotI2RlZmluZSBXT1JLQVJPVU5EX0NP
UkVURVhUX1ZBUklBVElPTlNfV0lUSF9GQUxMQkFDS19MSVNUX0JVRyAoRU5BQkxFKFZBUklBVElP
Tl9GT05UUykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKSkpCisjZGVmaW5lIFdPUktBUk9VTkRfQ09SRVRFWFRfVkFS
SUFUSU9OU19XSVRIX0ZBTExCQUNLX0xJU1RfQlVHIChFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKSAm
JiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTEwMDAwKSkpCiAKICAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyA9
IGNhc2NhZGVUb0xhc3RSZXNvcnRBdHRyaWJ1dGVzRGljdGlvbmFyeSgpOwogI2lmIFdPUktBUk9V
TkRfQ09SRVRFWFRfVkFSSUFUSU9OU19XSVRIX0ZBTExCQUNLX0xJU1RfQlVHCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09O
VEVYVF8zRCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dDNE
SU9TLmgiCiAjZW5kaWYKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmEKICAgICA6IG1fYXR0cnMoYXR0cnMpCiAgICAgLCBtX3ByaXZh
dGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2F0
dHJzLmlzV2ViR0wyKQogICAgICAgICBtX2NvbXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hf
RVNTTF9PVVRQVVQsIFNIX1dFQkdMMl9TUEVDKTsKICAgICBlbHNlCkBAIC01NjUsNyArNTY1LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2VJT1N1cmZhYwogewogI2lmIFVTRShP
UEVOR0wpCiAgICAgcmV0dXJuIGtDR0xOb0Vycm9yID09IENHTFRleEltYWdlSU9TdXJmYWNlMkQo
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpLCB0YXJnZXQsIGludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN1cmZhY2UsIHBsYW5lKTsKLSNlbGlmIFVTRShPUEVO
R0xfRVMpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2VsaWYgVVNFKE9QRU5HTF9FUykg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgIHJldHVybiBbcGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpIHRleEltYWdlSU9TdXJmYWNlOnN1cmZhY2UgdGFyZ2V0OnRhcmdl
dCBpbnRlcm5hbEZvcm1hdDppbnRlcm5hbEZvcm1hdCB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0
IGZvcm1hdDpmb3JtYXQgdHlwZTp0eXBlIHBsYW5lOnBsYW5lXTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiV0tHcmFw
aGljcy5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zRm9yQmlw
bGFuYXJTCiAgICAgICAgIChpZClrSU9TdXJmYWNlSGVpZ2h0OiBAKGhlaWdodCksCiAgICAgICAg
IChpZClrSU9TdXJmYWNlUGl4ZWxGb3JtYXQ6IEAocGl4ZWxGb3JtYXQpLAogICAgICAgICAoaWQp
a0lPU3VyZmFjZUFsbG9jU2l6ZTogQCh0b3RhbEJ5dGVzKSwKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgKGlkKWtJT1N1cmZhY2VDYWNoZU1vZGU6
IEAoa0lPTWFwV3JpdGVDb21iaW5lQ2FjaGUpLAogI2VuZGlmCiAgICAgICAgIChpZClrSU9TdXJm
YWNlUGxhbmVJbmZvOiBwbGFuZUluZm8sCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVz
UGVyRWxlbWVudDogQChieXRlc1BlckVsZW1lbnQpLAogICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5
dGVzUGVyUm93OiBAKGJ5dGVzUGVyUm93KSwKICAgICAgICAgKGlkKWtJT1N1cmZhY2VBbGxvY1Np
emU6IEAodG90YWxCeXRlcyksCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIChpZClrSU9TdXJmYWNlQ2FjaGVNb2RlOiBAKGtJT01hcFdyaXRlQ29t
YmluZUNhY2hlKSwKICNlbmRpZgogICAgICAgICAoaWQpa0lPU3VyZmFjZUVsZW1lbnRIZWlnaHQ6
IEAoMSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBJbnRTaXplIElPU3VyZmFjZTo6bWF4aW11bVNpemUo
KQogICAgIC8vIFByb3RlY3QgYWdhaW5zdCBtYXhTaXplIGJlaW5nIHsgMCwgMCB9LgogICAgIGNv
bnN0IGludCBpT1NNYXhTdXJmYWNlRGltZW5zaW9uTG93ZXJCb3VuZCA9IDEwMjQ7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBNYXRjaCBsaW1p
dHMgaW1wb3NlZCBieSBDb3JlIEFuaW1hdGlvbi4gRklYTUU6IHNob3VsZCBoYXZlIEFQSSBmb3Ig
dGhpcyA8cmRhcjovL3Byb2JsZW0vMjU0NTQxNDg+CiAgICAgY29uc3QgaW50IGlPU01heFN1cmZh
Y2VEaW1lbnNpb24gPSA4ICogMTAyNDsKICNlbHNlCkBAIC0zNzcsNyArMzc3LDcgQEAgSU9TdXJm
YWNlOjpGb3JtYXQgSU9TdXJmYWNlOjpmb3JtYXQoKSBjbwogCiBJT1N1cmZhY2VJRCBJT1N1cmZh
Y2U6OnN1cmZhY2VJRCgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiAoIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspIHx8IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICghVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykgfHwgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCiAgICAgcmV0
dXJuIDA7CiAjZWxzZQogICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX3N1cmZhY2UuZ2V0KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlw
dGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWVJT1MuaCIKICNlbmRpZgogCkBAIC01OSw3ICs1OSw3IEBAIFZl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFMKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBVc2UgYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcigpIGluIGJvdGgg
Y2FzZXMgb25jZSA8cmRhcjovL3Byb2JsZW0vMzMwNDYwNDE+IGlzIGZpeGVkLgogICAgICAgICAg
ICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3Ioc3lz
dGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBhcmFtZXRlcnMuaXRhbGljLCBwYXJh
bWV0ZXJzLnNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgICAg
ICB9IGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAgICAgQVNTRVJUKGNsaWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7
CiAgICAgICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlV2l0aFRleHRTdHlsZShwYXJhbWV0ZXJzLmZvbnROYW1lLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIFJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6ZUNhdGVnb3J5KCks
IG51bGxwdHIpKTsKICAgICAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChw
YXJhbWV0ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQgPyBrQ1RGb250VHJhaXRC
b2xkIDogMCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hX2gKICNkZWZpbmUgVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYV9oCiAKLSNpZiAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKSkgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKSkgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQUxheWVyLmg+CkBAIC01Nyw2ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlm
IC8vIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjZW5kaWYgLy8gKFBMQVRG
T1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjUsMTQgKzI1LDE0IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYgKFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2VuZGlmCkBAIC04NSw3ICs4NSw3IEBA
IC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcKIHsKICAgICBVTlVTRURf
UEFSQU0oY2hhbmdlKTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAg
ICAgIGlmIChfcGFyZW50ICYmIFtrZXlQYXRoIGlzRXF1YWw6QCJib3VuZHMiXSAmJiBvYmplY3Qg
PT0gX3BhcmVudC0+cGxhdGZvcm1MYXllcigpKQogICAgICAgICAgICAgX3BhcmVudC0+Y2xpZW50
KCkudGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKF9wYXJlbnQtPmJvdW5kcygp
KTsKQEAgLTE0Miw0ICsxNDIsNCBAQCBJbnRSZWN0IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2E6OmJvCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KFttX2xheWVyLmdl
dCgpIGJvdW5kc10pKTsKIH0KIAotI2VuZGlmIC8vIChQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spCisjZW5kaWYgLy8gKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpKSAmJiBFTkFCTEUoVklERU9f
VFJBQ0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJN
ZXRhbExheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTWV0YWxMYXllci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR1BVRGV2aWNl
OwogfQogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFlfU0lNVUxBVE9SKQogQGludGVyZmFjZSBXZWJNZXRhbExheWVyIDogQ0FNZXRhbExheWVy
IHsKICNlbHNlCiBAaW50ZXJmYWNlIFdlYk1ldGFsTGF5ZXIgOiBDQUxheWVyIHsgLy8gRklYTUU6
IFdlYk1ldGFsIC0gRGlzYWJsZSBXZWJNZXRhbCBvbiBpT1Mgc2ltdWxhdG9yPwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKIHN0YXRpYyBp
bmxpbmUgQ0ZTdHJpbmdSZWYgY3ZQaXhlbEZvcm1hdE9wZW5HTEtleSgpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShJT1NNQUMpCiAgICAgcmV0dXJuIGtDVlBpeGVsRm9ybWF0T3BlbkdMRVNDb21w
YXRpYmlsaXR5OwogI2Vsc2UKICAgICByZXR1cm4ga0NWUGl4ZWxCdWZmZXJPcGVuR0xDb21wYXRp
YmlsaXR5S2V5OwpAQCAtNzEsNyArNzEsNyBAQCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpJbWFn
ZVRyYW5zZmVyU2VzCiAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQogICAgICAg
ICBSRUxFQVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OkltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6IFZUU2Vzc2lvblNldFByb3BlcnR5KGtWVFBpeGVsVHJhbnNmZXJQcm9wZXJ0
eUtleV9SZWFsVGltZSkgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0
YXR1cykpOwogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NNQUMpCiAgICAgc3RhdHVzID0gVlRT
ZXNzaW9uU2V0UHJvcGVydHkodHJhbnNmZXJTZXNzaW9uLCBrVlRQaXhlbFRyYW5zZmVyUHJvcGVy
dHlLZXlfRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFRyYW5zZmVyLCBAKFlFUykpOwogICAgIGlm
IChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEs
ICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOiBWVFNlc3Np
b25TZXRQcm9wZXJ0eShrVlRQaXhlbFRyYW5zZmVyUHJvcGVydHlLZXlfRW5hYmxlSGFyZHdhcmVB
Y2NlbGVyYXRlZFRyYW5zZmVyKSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIHN0YXRpY19jYXN0PGlu
dD4oc3RhdHVzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9W
aWRlb1RleHR1cmVDb3BpZXJDVi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFZpZGVv
VGV4dHVyZUNvcGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVvVGV4dHVyZUNv
cGllckNWKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB0eXBlZGVmIENWT3BlbkdMRVNUZXh0dXJlUmVmIFRleHR1cmVUeXBlOwogI2Vsc2UKICAg
ICB0eXBlZGVmIENWT3BlbkdMVGV4dHVyZVJlZiBUZXh0dXJlVHlwZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNp
ZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTMsNCArNTMsNCBAQCBwcml2YXRlOgogCiB9CiAK
LSNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAm
JiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCIKIAotI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBRGlzcGxh
eUxpbmsuaD4KQEAgLTExNyw0ICsxMTcsNCBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uzo6ZGlzcGxheUxpCiAKIH0KIAotI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRBbnRpYWxp
YXNpbmdTdGF0ZVNhdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250QW50aWFsaWFz
aW5nU3RhdGVTYXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IEZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyX2gKICNkZWZpbmUgRm9udEFudGlhbGlhc2luZ1N0
YXRlU2F2ZXJfaAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAKQEAgLTM1LDEyICsz
NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250QW50aWFsaWFzaW5nU3RhdGVT
YXZlciB7CiBwdWJsaWM6CiAgICAgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIGJvb2wgdXNlT3JpZW50YXRpb25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5n
KQotI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAgICAgLCBtX3Vz
ZU9yaWVudGF0aW9uRGVwZW5kZW50Rm9udEFudGlhbGlhc2luZyh1c2VPcmllbnRhdGlvbkRlcGVu
ZGVudEZvbnRBbnRpYWxpYXNpbmcpCiAjZW5kaWYKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TX1NJ
TVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwogICAgICAgICBVTlVTRURfUEFSQU0odXNlT3JpZW50YXRpb25E
ZXBlbmRlbnRGb250QW50aWFsaWFzaW5nKTsKICNlbmRpZgpAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldHVwKGJvb2wgaXNMYW5kc2NhcGVPcmllbnRhdGlvbikKICAgICB7
Ci0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlf
U0lNVUxBVE9SKQogICAgIG1fb2xkQW50aWFsaWFzaW5nU3R5bGUgPSBDR0NvbnRleHRHZXRGb250
QW50aWFsaWFzaW5nU3R5bGUobV9jb250ZXh0KTsKIAogICAgIGlmIChtX3VzZU9yaWVudGF0aW9u
RGVwZW5kZW50Rm9udEFudGlhbGlhc2luZykKQEAgLTYwLDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlc3RvcmUoKQogICAgIHsKLSNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgICAgIGlmIChtX3VzZU9y
aWVudGF0aW9uRGVwZW5kZW50Rm9udEFudGlhbGlhc2luZykKICAgICAgICAgICAgIENHQ29udGV4
dFNldEZvbnRBbnRpYWxpYXNpbmdTdHlsZShtX2NvbnRleHQsIG1fb2xkQW50aWFsaWFzaW5nU3R5
bGUpOwogI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgotI2lmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICBDR0NvbnRleHRS
ZWYgbV9jb250ZXh0OwogICAgIGJvb2wgbV91c2VPcmllbnRhdGlvbkRlcGVuZGVudEZvbnRBbnRp
YWxpYXNpbmc7CiAgICAgQ0dGb250QW50aWFsaWFzaW5nU3R5bGUgbV9vbGRBbnRpYWxpYXNpbmdT
dHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2Fj
aGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0ZvbnRDYWNoZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb250Q2FjaGUuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
ICJGb250Q2FzY2FkZS5oIgogI2ltcG9ydCAiUmVuZGVyVGhlbWVJT1MuaCIKQEAgLTE2Nyw0ICsx
NjcsNCBAQCBSZXRhaW5QdHI8Q1RGb250UmVmPiBwbGF0Zm9ybUZvbnRXaXRoRmFtCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ljb25JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ljb25JT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkljb24uaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJCaXRt
YXBJbWFnZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC03Myw0ICs3Myw0IEBA
IHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsCiAgICAgaWYgKCFtX21heVVzZU5h
dHVyYWxXcml0aW5nRGlyZWN0aW9uIHx8IG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkgewog
ICAgICAgICBjb25zdCBzaG9ydCBsdHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlID0gMDsKICAg
ICAgICAgY29uc3Qgc2hvcnQgcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSA9IDE7Ci0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDE0
MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEyMDAwMCkKICAgICAgICAgc3RhdGljIGNvbnN0
IHZvaWQqIG9wdGlvbktleXNbXSA9IHsga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGlu
Z0xldmVsLCBrQ1RUeXBlc2V0dGVyT3B0aW9uQWxsb3dVbmJvdW5kZWRMYXlvdXQgfTsKICAgICAg
ICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3JjZWRFbWJl
ZGRpbmdMZXZlbFZhbHVlKSwga0NGQm9vbGVhblRydWUgfTsKICAgICAgICAgc3RhdGljIGNvbnN0
IHZvaWQqIHJ0bE9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZydGxGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVl
KSwga0NGQm9vbGVhblRydWUgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFBvaW50TWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNCArNDYsNCBAQCBG
bG9hdFBvaW50OjpvcGVyYXRvciBOU1BvaW50KCkgY29uc3QKIAogfQogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0UmVjdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9U
WVBFUwogCiBGbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBOU1JlY3QmIHIpIDogbV9sb2NhdGlv
bihyLm9yaWdpbiksIG1fc2l6ZShyLnNpemUpCkBAIC00Miw2ICs0Miw2IEBAIEZsb2F0UmVjdDo6
b3BlcmF0b3IgTlNSZWN0KCkgY29uc3QKIH0KIAogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRmxvYXRTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZ
UEVTCiAKIEZsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0IE5TU2l6ZSYgcykgOiBtX3dpZHRoKHMu
d2lkdGgpLCBtX2hlaWdodChzLmhlaWdodCkKQEAgLTQyLDYgKzQyLDYgQEAgRmxvYXRTaXplOjpv
cGVyYXRvciBOU1NpemUoKSBjb25zdAogfQogCiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIu
Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3I7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAg
ICBhdXRvIGFycmF5ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3Jz
RnJvbURhdGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxJbWFnZUlP
L0ltYWdlSU8uaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vydmlj
ZXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2lu
dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW50UG9pbnRNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVf
QVNfQ0dHRU9NRVRSWV9UWVBFUwogCiBJbnRQb2ludDo6SW50UG9pbnQoY29uc3QgTlNQb2ludCYg
cCkgOiBtX3goc3RhdGljX2Nhc3Q8aW50PihwLngpKSwgbV95KHN0YXRpY19jYXN0PGludD4ocC55
KSkKQEAgLTQxLDYgKzQxLDYgQEAgSW50UG9pbnQ6Om9wZXJhdG9yIE5TUG9pbnQoKSBjb25zdAog
fQogCiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW50UmVjdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJlY3RNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZm5kZWYgTlNHRU9NRVRSWV9U
WVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAogSW50UmVjdDo6b3BlcmF0b3IgTlNSZWN0
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRT
aXplTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbnRTaXplTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50U2l6ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVf
QVNfQ0dHRU9NRVRSWV9UWVBFUwogCiBJbnRTaXplOjpJbnRTaXplKGNvbnN0IE5TU2l6ZSYgcykg
OiBtX3dpZHRoKHN0YXRpY19jYXN0PGludD4ocy53aWR0aCkpLCBtX2hlaWdodChzdGF0aWNfY2Fz
dDxpbnQ+KHMuaGVpZ2h0KSkKQEAgLTQxLDYgKzQxLDYgQEAgSW50U2l6ZTo6b3BlcmF0b3IgTlNT
aXplKCkgY29uc3QKIH0KIAogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5o
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJ
bWFnZUV4dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IldlYktpdE5TSW1hZ2VFeHRyYXMuaCIKIApAQCAtNDUsNCArNDUsNCBAQCAtICh2b2lkKV93ZWJf
bG9ja0ZvY3VzV2l0aERldmljZVNjYWxlRmFjCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldLR3JhcGhp
Y3MuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgpA
QCAtNDEsNyArNDEsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJMYXllcihQ
cml2YXRlKQogLSAodm9pZClkcmF3U2NhbGVkQ29udGVudHNJbkNvbnRleHQ6KENHQ29udGV4dFJl
Ziljb250ZXh0OwogQGVuZApAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKHZvaWQpc2V0TmVlZHNEaXNw
bGF5SW5SZWN0OihDR1JlY3QpZGkKIAogLSAodm9pZClkaXNwbGF5CiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgp
KQogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKQEAgLTEyMiw3ICsxMjIsNyBAQCAt
ICh2b2lkKWRpc3BsYXkKIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29u
dGV4dAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDxPcGVuR0wv
Z2wuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJT1MuaCIKICNlbmRpZgogCkBAIC0xNTcs
NyArMTU3LDcgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogICAg
IGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKICAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQi
KTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSIpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CkBAIC0xNjksNyAr
MTY5LDcgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogICAgIH0K
IAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9zUkdCIik7CiAjZWxzZQogICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikp
OwpAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0c0V4
dGVuc2kKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAj
aWYgKFBMQVRGT1JNKEdUSykpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Ci0jZWxpZiBQTEFURk9STShJ
T1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogI2Vs
c2UKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQ
TEVfdmVydGV4X2FycmF5X29iamVjdCIpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgRXh0ZW5z
aW9uczNET3BlbkdMOjpzdXBwb3J0c0V4dGVuc2kKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7
CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKICNlbGlmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oR1RLKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfZHJhd19idWZmZXJzIik7CkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBFeHRlbnNp
b25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogI2VuZGlmCiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRElPUy5oIgogI2Vu
ZGlmCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZiBF
TkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RJT1MuaCIKICNlbmRpZgogCkBAIC01NTEsNyArNTUxLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShHQwogICAgIDo6Z2xCdWZmZXJT
dWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXUEUpCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShXUEUpCiB2b2lkKiBHcmFwaGljc0Nv
bnRleHQzRDo6bWFwQnVmZmVyUmFuZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNl
dCwgR0MzRHNpemVpcHRyIGxlbmd0aCwgR0MzRGJpdGZpZWxkIGFjY2VzcykKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xFUy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
R1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoR1JBUEhJ
Q1NfQ09OVEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogCkBAIC00MDQsNCArNDA0LDQgQEAgUGxhdGZvcm1MYXllciogR3Jh
cGhpY3NDb250ZXh0M0Q6OnBsYXRmbwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF8zRCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTYsNyArMTIxNiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHIKICAgICAgICAgOiBbbGVmdE1hdHJpeF0iK3IiKGxlZnRN
YXRyaXgpLCBbcmlnaHRNYXRyaXhdIityIihyaWdodE1hdHJpeCkKICAgICAgICAgOgogICAgICAg
ICA6ICJtZW1vcnkiLCAicjMiLCAiZDAiLCAiZDEiLCAiZDIiLCAiZDMiLCAiZDQiLCAiZDUiLCAi
ZDYiLCAiZDciLCAiZDE2IiwgImQxNyIsICJkMTgiLCAiZDE5IiwgImQyMCIsICJkMjEiLCAiZDIy
IiwgImQyMyIsICJkMjQiLCAiZDI1IiwgImQyNiIsICJkMjciLCAiZDI4IiwgImQyOSIsICJkMzAi
LCAiZDMxIik7Ci0jZWxpZiBDUFUoQVJNX1ZGUCkgJiYgUExBVEZPUk0oSU9TKQorI2VsaWYgQ1BV
KEFSTV9WRlApICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNkZWZpbmUgTUFUUklYX01VTFRJ
UExZX09ORV9MSU5FIFwKICAgICAidmxkbWlhLjY0ICAlW3JpZ2h0TWF0cml4XSEsIHsgZDAtZDN9
XG5cdCIgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKIAotI2lmIChQTEFURk9STShJT1MpICYmIENQVShBUk1fVEhVTUIyKSkgfHwg
ZGVmaW5lZChUUkFOU0ZPUk1BVElPTl9NQVRSSVhfVVNFX1g4Nl82NF9TU0UyKQorI2lmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBDUFUoQVJNX1RIVU1CMikpIHx8IGRlZmluZWQoVFJBTlNGT1JN
QVRJT05fTUFUUklYX1VTRV9YODZfNjRfU1NFMikKICNpZiBDT01QSUxFUihNU1ZDKQogICAgIF9f
ZGVjbHNwZWMoYWxpZ24oMTYpKSB0eXBlZGVmIGRvdWJsZSBNYXRyaXg0WzRdWzRdOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkN1cnNvci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMjYwLDQgKzI2
MCw0IEBAIEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqLCBjb25zdCAKIAogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZXZp
Y2UuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtNzIsNCArNzIsNCBAQCBib29sIGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RGV2aWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Rldmlj
ZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2
aWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgRGV2aWNlX2gK
ICNkZWZpbmUgRGV2aWNlX2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2lv
cy9Nb2JpbGVHZXN0YWx0U1BJLmg+CkBAIC00MSw2ICs0MSw2IEBAIGJvb2wgZGV2aWNlSGFzSVBh
ZENhcGFiaWxpdHkoKTsKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBEZXZpY2VfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1v
dGlvbkNsaWVudElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CiAKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rp
b25Db250cm9sbGVyLmgiCkBAIC01Nyw0ICs1Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Rldmlj
ZU1vdGlvbkNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVNb3Rpb25NYW5hZ2Vy
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRGV2aWNlTW90aW9u
Q2xpZW50SU9TOjptb3Rpb25DaGFuZ2UKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWV9TSU1VTEFUT1IpCiAgICAgVU5VU0VEX1BBUkFNKHhBY2NlbGVyYXRpb24pOwogICAgIFVO
VVNFRF9QQVJBTSh5QWNjZWxlcmF0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oekFjY2VsZXJhdGlv
bik7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6Om1vdGlv
bkNoYW5nZQogICAgICAgICBhY2NlbGVyYXRpb24gPSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb246OmNyZWF0ZSh4QWNjZWxlcmF0aW9uLCB5QWNjZWxlcmF0aW9uLCB6QWNjZWxlcmF0aW9u
KTsKICAgICAgICAgcm90YXRpb25SYXRlID0gRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRl
OjpjcmVhdGUoeFJvdGF0aW9uUmF0ZSwgeVJvdGF0aW9uUmF0ZSwgelJvdGF0aW9uUmF0ZSk7CiAg
ICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAKICAgICBtX2N1cnJlbnREZXZpY2VNb3Rpb25EYXRh
ID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKFdURk1vdmUoYWNjZWxlcmF0aW9uKSwgV1RGTW92
ZShhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KSwgV1RGTW92ZShyb3RhdGlvblJhdGUpLCBr
TW90aW9uVXBkYXRlSW50ZXJ2YWwpOwogICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNl
TW90aW9uKG1fY3VycmVudERldmljZU1vdGlvbkRhdGEuZ2V0KCkpOwpAQCAtMTEzLDQgKzExMyw0
IEBAIHZvaWQgRGV2aWNlTW90aW9uQ2xpZW50SU9TOjptb3Rpb25DaGFuZ2UKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
SU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAogI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLmgiCkBAIC01Nyw0ICs1Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYkNv
cmVNb3Rpb25NYW5hZ2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M6Om9yaWVudGEKICAgICBpZiAoIW1fdXBkYXRp
bmcpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgVU5VU0VEX1BBUkFNKGFscGhhKTsK
ICAgICBVTlVTRURfUEFSQU0oYmV0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGdhbW1hKTsKQEAgLTk4
LDQgKzk4LDQgQEAgdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUzo6b3JpZW50YQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJM
RShERVZJQ0VfT1JJRU5UQVRJT04pCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJEb2N1
bWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgpAQCAtMzAwLDQgKzMwMCw0IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmEKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRXZlbnRMb29wSU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9FdmVudExvb3BJT1MubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9FdmVudExv
b3BJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29w
Lmg+CiAKQEAgLTQwLDQgKzQwLDQgQEAgdm9pZCBFdmVudExvb3A6OmN5Y2xlKCkKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5
RXZlbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvS2V5RXZlbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiS2V5
RXZlbnRDb2NvYS5oIgogI2ltcG9ydCAiS2V5RXZlbnRDb2Rlc0lPUy5oIgpAQCAtMzI5LDQgKzMy
OSw0IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW8KIAogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgTGVnYWN5
VGlsZUNhY2hlX2gKICNkZWZpbmUgTGVnYWN5VGlsZUNhY2hlX2gKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKQEAgLTIyMSw2ICsyMjEsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFRpbGVDYWNoZV9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJMZWdhY3lUaWxlQ2FjaGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIu
aCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgpAQCAtODIzLDQgKzgyMyw0IEBAIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpkdW1wVGlsZXMoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUdyaWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBMZWdhY3lU
aWxlR3JpZF9oCiAjZGVmaW5lIExlZ2FjeVRpbGVHcmlkX2gKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJJbnRQb2ludEhhc2guaCIKQEAgLTEzMiw1ICsxMzIsNSBAQCBzdGF0aWMgaW5saW5lIElu
dFBvaW50IGJvdHRvbVJpZ2h0KGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2Vu
ZGlmIC8vIFRpbGVHcmlkX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUg
IkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVMYXllci5oIgpAQCAt
NTYzLDQgKzU2Myw0IEBAIHZvaWQgTGVnYWN5VGlsZUdyaWQ6OmR1bXBUaWxlcygpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVHcmlkVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIExlZ2FjeVRpbGVHcmlkVGlsZV9oCiAjZGVmaW5lIExl
Z2FjeVRpbGVHcmlkVGlsZV9oCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtNjQsNSArNjQsNSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNlbmRpZiAvLyBMZWdhY3lUaWxlR3JpZFRpbGVfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGVn
YWN5VGlsZUNhY2hlLmgiCkBAIC0xMzEsNCArMTMxLDQgQEAgdm9pZCBMZWdhY3lUaWxlR3JpZFRp
bGU6OnNob3dCb3JkZXIoYm9vbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8UXVh
cnR6Q29yZS9DQUxheWVyLmg+CiAKQEAgLTQ5LDUgKzQ5LDUgQEAgY2xhc3MgTGVnYWN5VGlsZUdy
aWQ7CiAtIChpZClpbml0V2l0aFRpbGVHcmlkOihXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCopdGls
ZUdyaWQ7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUxheWVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUxheWVyLmgi
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIkxlZ2FjeVRpbGVDYWNoZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkLmgiCkBAIC0x
MjUsNCArMTI1LDQgQEAgLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKgog
CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5
ZXJQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVMYXllclBvb2wuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkludFNpemVI
YXNoLmgiCkBAIC04NSw0ICs4NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUxheWVyUG9v
bC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bmNsdWRlICJMZWdhY3lUaWxlTGF5ZXIuaCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgpA
QCAtMTY5LDQgKzE2OSw0IEBAIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6ZHJhaW4oKQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Mb3dQb3dlck1vZGVOb3RpZmllcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTG93UG93ZXJNb2RlTm90aWZpZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb3dQb3dlck1vZGVOb3RpZmllcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJMb3dQb3dlck1vZGVOb3RpZmllci5oIgogCkBAIC0xMDIsNCArMTAyLDQgQEAgdm9pZCBu
b3RpZnlMb3dQb3dlck1vZGVDaGFuZ2VkKExvd1Bvd2VyTQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKICNpbXBvcnQg
IkltYWdlLmgiCkBAIC00NDksNCArNDQ5LDQgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6
cmVhZEZpbGVQYXRocwogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCkBAIC01
Niw0ICs1Niw0IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2UKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJJbnRQb2ludC5oIgogI2lt
cG9ydCAiS2V5RXZlbnRDb2NvYS5oIgpAQCAtNTI2LDQgKzUyNiw0IEBAIFBsYXRmb3JtVG91Y2hF
dmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgi
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiQ29sb3IuaCIKICNpbXBvcnQgIkltYWdlLmgiCkBAIC00Niw3ICs0Niw3IEBACiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAot
I2RlZmluZSBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTIChQTEFURk9STShJT1Mp
ICYmICEoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikpKQorI2RlZmluZSBQ
QVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJTIChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhKFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKSkKICNkZWZpbmUgTlNV
UkxfU1VQUE9SVFNfVElUTEUgKCFQTEFURk9STShJT1NNQUMpKQogCiBTT0ZUX0xJTktfRlJBTUVX
T1JLKFVJS2l0KQpAQCAtNjk0LDQgKzY5NCw0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1
cGRhdGVTdXBwb3J0ZWQKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TY3JlZW5JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1T
Y3JlZW4uaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgIkRldmljZS5o
IgpAQCAtMTYwLDQgKzE2MCw0IEBAIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICpz
Y3JlZW4KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklP
Uy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5oIgogCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbXBvcnQgIlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKQEAgLTI3OSw0ICsyNzksNCBAQCB2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAmJiBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtMjE0LDQgKzIxNCw0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmludmEKIH0KIAogI2VuZGlmIC8vIEhBVkUoQVZLSVQpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBIQVZF
KE1FRElBX1BMQVlFUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKE1FRElBX1BM
QVlFUikKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtNTYsNCArNTYsNCBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykgJiYgSEFWRShNRURJQV9QTEFZRVIpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgSEFWRShNRURJQV9QTEFZRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpICYmIEhBVkUoTUVESUFfUExBWUVSKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEhBVkUoTUVESUFfUExBWUVSKQogCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUFJlbW90ZUNv
bW1hbmQuaD4KICNpbXBvcnQgPE1lZGlhUGxheWVyL01QUmVtb3RlQ29tbWFuZENlbnRlci5oPgpA
QCAtMTUxLDQgKzE1MSw0IEBAIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1cGRhdGVT
dXAKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBIQVZFKE1FRElBX1BMQVlFUikK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKE1FRElBX1BMQVlFUikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJT1MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TU0xLZXlHZW5lcmF0b3JJ
T1MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U1NMS2V5R2VuZXJhdG9ySU9TLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDIsNCArNDIsNCBAQCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJTY3JvbGxB
bmltYXRvci5oIgogCkBAIC03MCw0ICs3MCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1h
dG9ySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3Jv
bGxBbmltYXRvcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbEFuaW1hdG9ySU9TLmgi
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiRnJhbWUuaCIKICNpbXBvcnQgIlJlbmRlckxheWVyLmgiCkBAIC0xODgsNCArMTg4LDQgQEAg
dm9pZCBTY3JvbGxBbmltYXRvcklPUzo6ZGV0ZXJtaW5lU2Nyb2xsYQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxW
aWV3SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvU2Nyb2xsVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCiAj
aW1wb3J0ICJJbnRSZWN0LmgiCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpw
bGF0Zm9ybVNldENvbnRlbnRzU2l6ZQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBpbnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2NvbnRl
bnRzU2l6ZS5oZWlnaHQoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50
VmlldygpLCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFzc10gY2xhc3NOYW1lXSwgdywgaCk7ICAg
ICAgICAgICAgCiAjZWxzZQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIs
IGRvY3VtZW50VmlldygpLCBOU1N0cmluZ0Zyb21DbGFzcyhbZG9jdW1lbnRWaWV3KCkgY2xhc3Nd
KSwgdywgaCk7CkBAIC0zMTgsNCArMzE4LDQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNl
dFNjcm9sbE9yaWdpbgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxiYXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aCIKIApAQCAtNjYsNCArNjYsNCBAQCBwdWJsaWM6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgpAQCAtMTIwLDQgKzEyMCw0IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVJ
T1M6OnBhaW50KFNjcm9sbGJhciYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU3lzdGVtTWVtb3J5SU9TLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU3lzdGVtTWVtb3J5SU9TLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9y
eUlPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTeXN0ZW1NZW1vcnkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaW50IHN5c3RlbU1lbW9yeUxldmVsKCkKIHsKLSNpZiBQTEFURk9STShJT1NfU0lNVUxB
VE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgIHJldHVybiAzNTsK
ICNlbHNlCiAgICAgc3RhdGljIGludCBtZW1vcnlGcmVlTGV2ZWwgPSAtMTsKQEAgLTU2LDQgKzU2
LDQgQEAgaW50IHN5c3RlbU1lbW9yeUxldmVsKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIlRoZW1lQ29jb2EuaCIK
IApAQCAtMzgsNCArMzgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJU
aGVtZUlPUy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CkBAIC01MSw0ICs1MSw0IEBAIGJvb2wgVGhlbWVJT1M6OnVzZXJQcmVmZXJzUmVkdWNl
ZE1vdGlvbigKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlcklPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg+CkBAIC04OCw0ICs4OCw0IEBAIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciYg
dGlsZUNvbnRyb2wKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpAQCAtNTQsNCArNTQsNCBAQCBwcml2YXRlOgogV0VCQ09SRV9FWFBPUlQgVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKTsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlVzZXJBZ2VudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiU3lzdGVtVmVy
c2lvbi5oIgpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW5saW5lIE5TU3RyaW5nICpkZXZpY2VO
YW1lRm9yVXNlCiAgICAgfQogCiAgICAgTlNTdHJpbmcgKm5hbWUgPSBkZXZpY2VOYW1lKCk7Ci0j
aWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVM
QVRPUikKICAgICBOU1VJbnRlZ2VyIGxvY2F0aW9uID0gW25hbWUgcmFuZ2VPZlN0cmluZzpAIiBT
aW11bGF0b3IiIG9wdGlvbnM6TlNCYWNrd2FyZHNTZWFyY2hdLmxvY2F0aW9uOwogICAgIGlmIChs
b2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGxvY2F0aW9uID4gMCkKICAgICAgICAgcmV0dXJuIFtu
YW1lIHN1YnN0cmluZ1RvSW5kZXg6bG9jYXRpb25dOwpAQCAtOTksNCArOTksNCBAQCBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUuCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WYWxpZGF0
aW9uQnViYmxlSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJWYWxpZGF0aW9uQnViYmxlLmgiCiAKQEAg
LTE3Nyw0ICsxNzcsNCBAQCB2b2lkIFZhbGlkYXRpb25CdWJibGU6OnNldEFuY2hvclJlY3QoY29u
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudEVudW1zLmgiCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAg
Ym9vbCBoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNb2RlLmhhc01vZGUobW9kZSk7IH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlld0NvbnRy
b2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwogICAgIFVJVmlld0NvbnRyb2xsZXIg
KmZ1bGxzY3JlZW5WaWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0NvbnRyb2xs
ZXIuZ2V0KCk7IH0KICAgICBXZWJBVlBsYXllckxheWVyVmlldyogcGxheWVyTGF5ZXJWaWV3KCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF5ZXJMYXllclZpZXcuZ2V0KCk7IH0KQEAgLTIxOSw1ICsyMTks
NSBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAK
ICNpZiBIQVZFKEFWS0lUKQpAQCAtMTQ1MCwxMSArMTQ1MCwxMSBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojppc1BsCiAKIGJvb2wgV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpICYmICFQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpICYm
ICFQTEFURk9STShXQVRDSE9TKQogICAgIHJldHVybiBbZ2V0QVZQaWN0dXJlSW5QaWN0dXJlQ29u
dHJvbGxlckNsYXNzKCkgaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkXTsKICNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJD
b250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxl
ci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
IlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCkBAIC02MzcsNSArNjM3LDUgQEAgLSAo
dm9pZClkZWFsbG9jCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxl
ciA6IE5TT2JqZWN0CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJCYWNr
Z3JvdW5kVGFza0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJv
bGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVM
b2NhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAKLSNpZiBQTEFURk9S
TShJT1MpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIAogI2ltcG9ydCA8Q29yZU1vdGlv
bi9Db3JlTW90aW9uLmg+CiAKQEAgLTU2LDQgKzU2LDQgQEAgY29uc3QgZmxvYXQga01vdGlvblVw
ZGF0ZUludGVydmFsID0gMS4wZgogLSAoQk9PTCloZWFkaW5nQXZhaWxhYmxlOwogQGVuZAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZU1vdGlvbk1hbmFnZXIu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCiAj
aW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5o
IgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50LmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZpbGUgdG8gV2ViRXZlbnRJT1MubW0g
YWZ0ZXIgd2UgdXBzdHJlYW0gdGhlIGlPUyBwb3J0IGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElP
UyktZ3VhcmQuCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0byBXZWJFdmVudElPUy5tbSBh
ZnRlciB3ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9T
X0ZBTUlMWSktZ3VhcmQuCiAjaWZuZGVmIFdlYkV2ZW50SU9TX2gKICNkZWZpbmUgV2ViRXZlbnRJ
T1NfaAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0vLyBGSVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0byBXZWJFdmVu
dElPUy5tbSBhZnRlciB3ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQgYW5kIHJlbW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZC4KKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRvIFdlYkV2ZW50
SU9TLm1tIGFmdGVyIHdlIHVwc3RyZWFtIHRoZSBpT1MgcG9ydCBhbmQgcmVtb3ZlIHRoZSBQTEFU
Rk9STShJT1NfRkFNSUxZKS1ndWFyZC4KIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJFdmVudC5oIgpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJLZXlFdmVudENvZGVzSU9TLmgiCiAjaW1wb3J0
ICJXQUtBcHBLaXRTdHVicy5oIgpAQCAtNTAzLDQgKzUwMyw0IEBAIC0gKGZsb2F0KWdlc3R1cmVS
b3RhdGlvbgogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8cGFs
L0h5c3RlcmVzaXNBY3Rpdml0eS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTEzOSw0ICsxMzksNCBAQCArICh2b2lkKWVuZEJhY2tn
cm91bmRUYXNrCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJj
b25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCIKIApAQCAtMjIz
LDcgKzIyMyw3IEBAICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQKIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFVwZGF0ZUlubGlu
ZVJlY3QoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAgICBJbnRSZWN0
IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsK
QEAgLTIzOCw3ICsyMzgsNyBAQCAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SW5saW5lUmVj
dChjCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RWaWRl
b0NvbnRlbnRMYXllcigpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
PSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwpAQCAtMjU1LDcgKzI1NSw3IEBA
ICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SGFzVmlkZW8KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVv
RnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxz
Y3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xv
cjo6dHJhbnNwYXJlbnQpXTsKQEAgLTI3Myw3ICsyNzMsNyBAQCAgICAgICAgICAgICAgICAgbV9p
bnRlcmZhY2UtPnNldEhhc1ZpZGVvCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVu
KCk7CiAgICAgfSk7CkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6dwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZGlkRXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsK
ICAgICB9KTsKQEAgLTEwNDksNCArMTA0OSw0IEBAIC0gKHZvaWQpZGlkRmluaXNoRnVsbHNjcmVl
bjooVmlkZW9GdWxsc2MKIAogI2VuZGlmIC8vICFIQVZFKEFWS0lUKQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAi
Q3Vyc29yLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgpAQCAtMjc2LDQgKzI3Niw0IEBAIHZvaWQg
V2lkZ2V0OjpzZXRQbGF0Zm9ybVdpZGdldChOU1ZpZXcgKncKIAogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBGbG9hdGluZ1BvaW50
RQogICAgIHJldHVybiBmbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpICYmIChDUFUoQVJNKSB8fCBDUFUoQVJNNjQpKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIChDUFUoQVJNKSB8fCBDUFUoQVJNNjQpKQogCiBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFs
c2UpCkBAIC03MSw2ICs3MSw2IEBAIHZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpwcm9w
YWdhdGUKICAgICBmZXNldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOwogfQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgKENQVShBUk0pIHx8IENQVShBUk02
NCkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgKENQVShBUk0pIHx8IENQVShBUk02NCkp
CiAKIGNsYXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCB7CiBwdWJsaWM6CkBAIC00OCw3ICs0
OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiB9OwogCi0jZWxzZSAv
LyBub3QgUExBVEZPUk0oSU9TKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKKyNlbHNlIC8v
IG5vdCBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSkKIAog
Y2xhc3MgRmxvYXRpbmdQb2ludEVudmlyb25tZW50IHsKIHB1YmxpYzoKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQmIHNpbmdsZXRvbigpOwogfTsKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgKENQ
VShBUk0pIHx8IENQVShBUk02NCkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
KENQVShBUk0pIHx8IENQVShBUk02NCkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtBcHBLaXRTdHVicy5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLQXBwS2l0U3R1YnMu
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
QUtBcHBLaXRTdHVicy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogaWQgTlNBcHAgPSBuaWw7CiAKQEAgLTM3
LDQgKzM3LDQgQEAgKyAodm9pZClzZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6KEJPT0wpZgogfQog
QGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS0NsaXBWaWV3
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtDbGlw
Vmlldy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS0NsaXBWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0FLQ2xpcFZpZXcuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwu
aCIKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC03MSw0ICs3MSw0IEBAIC0gKENHUmVj
dClkb2N1bWVudFZpc2libGVSZWN0IAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLUmVzcG9uZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtSZXNwb25kZXIubQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXQUtS
ZXNwb25kZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUu
aCIKQEAgLTE2OCw0ICsxNjgsNCBAQCAtIChCT09MKXRyeVRvUGVyZm9ybTooU0VMKWFuQWN0aW9u
IHdpdGg6CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
QUtTY3JvbGxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0FLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldBS1Njcm9sbFZpZXcu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJXQUtBcHBLaXRTdHVicy5oIgogI2ltcG9ydCAiV0FLQ2xpcFZpZXcuaCIKQEAgLTQzNiw0
ICs0MzYsNCBAQCAtICh2b2lkKV9hZGp1c3RTY3JvbGxlcnMKIAogQGVuZAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0FL
Vmlld0ludGVybmFsLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJXQUtDbGlwVmll
dy5oIgpAQCAtNzc5LDQgKzc3OSw0IEBAIC0gKHZvaWQpX2FwcGVuZERlc2NyaXB0aW9uVG9TdHJp
bmc6KE5TTXUKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dBS1dpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1dpbmRvdy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiTGVnYWN5VGls
ZUNhY2hlLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtNzI4LDQgKzcyOCw0IEBA
IC0gKE5TU3RyaW5nICopcmVjdXJzaXZlRGVzY3JpcHRpb24KIAogQGVuZAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2Vy
dmF0aW9uLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2luY2x1ZGUgIldL
Q29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZVRocmVhZC5oIgpAQCAtMTA4LDQgKzEwOCw0IEBAIHZvaWQgV2ViVGhyZWFkUmVt
b3ZlT2JzZXJ2ZWRDb250ZW50TW9kaWYKICAgICBXZWJUaHJlYWRHZXRPYnNlcnZlZENvbnRlbnRN
b2RpZmllcnMoKS0+cmVtb3ZlKGFDb250ZW50TW9kaWZpZXIpOwogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0dyYXBoaWNzLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV0tHcmFwaGljcy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTcxLDQgKzcxLDQgQEAgQ0dDb250ZXh0UmVm
IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVybiB0aHJlYWRDb250ZXh0LT5j
dXJyZW50Q0dDb250ZXh0OwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dLVXRpbGl0aWVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS1V0aWxpdGllcy5jCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVXRpbGl0aWVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVdGlsaXRpZXMuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogCkBAIC0xMjYsNCArMTI2LDQgQEAgV0tDbGFzc0luZm8gKldLR2V0
Q2xhc3NJbmZvIChXS09iamVjdFJlZgogICAgIHJldHVybiBvYmplY3QtPmNsYXNzSW5mbzsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIldLVmlld1ByaXZhdGUuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXQUtWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldB
S1dpbmRvdy5oIgpAQCAtNzQ1LDQgKzc0NSw0IEBAIHZvaWQgV0tWaWV3U2V0QXV0b3Jlc2l6aW5n
TWFzayAoV0tWaWV3UmUKICAgICB2aWV3LT5hdXRvcmVzaXppbmdNYXNrID0gbWFzazsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJDb21tb25WTS5oIgog
I2ltcG9ydCAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCkBAIC04OTAsNCArODkwLDQgQEAg
Ym9vbCBXZWJUaHJlYWROb3RDdXJyZW50KHZvaWQpCiAgICAgcmV0dXJuIHdlYlRocmVhZFN0YXJ0
ZWQgJiYgIXB0aHJlYWRfZXF1YWwod2ViVGhyZWFkLCBwdGhyZWFkX3NlbGYoKSk7CiB9CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkUnVuLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRSdW4uaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC0xODMsNCAr
MTgzLDQgQEAgdm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUoKQogCiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5o
IgogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRSdW4uaCIKQEAgLTUxLDQgKzUxLDQgQEAgdm9pZCBJ
bml0V2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZSh2bwogICAgIGRpZEluaXQgPSB0cnVlOwog
fQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxNb2JpbGVD
b3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApAQCAtNDUsNyArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJ0ZlBhc3Rl
Ym9hcmRUeXBlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICByZXR1cm4gU3RyaW5nKGtVVFR5cGVSVEYpOwogI2Vsc2UKICAgICByZXR1cm4gU3Ry
aW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpOwpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyBydGZQYXN0ZWJvYXJkVHlwZSgpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5n
IHJ0ZmRQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBlRmxhdFJURkQpOwogI2Vsc2UK
ICAgICByZXR1cm4gU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKTsKQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgcnRmZFBhc3RlYm9hcmRUeXBlKAogCiBzdGF0
aWMgaW5saW5lIFN0cmluZyBzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBl
VGV4dCk7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSk7CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1Bhc3Rl
Ym9hcmRUeXAKIAogc3RhdGljIGlubGluZSBTdHJpbmcgdXJsUGFzdGVib2FyZFR5cGUoKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBT
dHJpbmcoa1VUVHlwZVVSTCk7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5VVJMUGFz
dGVib2FyZFR5cGUoKSk7CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHVy
bFBhc3RlYm9hcmRUeXBlKCkKIAogc3RhdGljIGlubGluZSBTdHJpbmcgaHRtbFBhc3RlYm9hcmRU
eXBlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICByZXR1cm4gU3RyaW5nKGtVVFR5cGVIVE1MKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZyhs
ZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSk7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGh0bWxQYXN0ZWJvYXJkVHlwZSgKIAogc3RhdGljIGlubGluZSBTdHJpbmcgY29s
b3JQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyB7IFVJQ29sb3JQYm9hcmRUeXBlIH07CiAjZWxz
ZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpKTsKQEAgLTk5
LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY29sb3JQYXN0ZWJvYXJkVHlwZQogCiBz
dGF0aWMgaW5saW5lIFN0cmluZyBwZGZQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0cmluZyhrVVRUeXBl
UERGKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZyhsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgp
KTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBwZGZQYXN0ZWJvYXJk
VHlwZSgpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIFN0
cmluZyhrVVRUeXBlVElGRik7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcobGVnYWN5VElGRlBh
c3RlYm9hcmRUeXBlKCkpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zUHJvbWlzZSgpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0oZmlsZW5hbWVQ
b2xpY3kpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5h
bWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExp
bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJl
bW90ZVNvZnRMaW5rLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2
ICs1NCw2IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIAogI2Vu
ZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVk
aWFSZW1vdGUsIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMsIENGQXJyYXlSZWYsICgp
LCAoKSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJl
bW90ZVNvZnRMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L01lZGlhUmVtb3RlU29mdExpbmsuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAt
NzMsNyArNzMsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNCiAK
ICNlbmRpZiAvLyBVU0UoTUVESUFSRU1PVEUpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUs
IE1lZGlhUmVtb3RlLCBNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzLCBDRkFycmF5UmVm
LCAoKSwgKCkpCiAjZGVmaW5lIE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMgc29mdExp
bmtfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9u
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3Vk
ZGVuVGVybWluYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU3VkZGVuVGVybWluYXRpb24uaCIKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNCArMTA4LDQgQEAgLSAodm9pZClt
b3VzZURvd246KE5TRXZlbnQgKilldmVudAogCiBAZW5kCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZm5kZWYgV2ViQ29y
ZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCiAjZGVmaW5lIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXdfaApAQCAtNDMsNCArNDMsNCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlICBXZWJD
b3JlRnVsbFNjCiAKICNlbmRpZiAvLyBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gKIAot
I2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJu
aW5nVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIldlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCIKIApAQCAtMTA2LDQgKzEwNiw0IEBA
IC0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0aXRsZQogfQogQGVuZAogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvd19oCiAjZGVmaW5lIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93X2gKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRG
T1JNKElPUykKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
IDogTlNXaW5kb3cKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGVudW0gewogICAg
IE5TQXR0YWNobWVudENoYXJhY3RlciA9IDB4ZmZmYyAgICAvKiBUbyBkZW5vdGUgYXR0YWNobWVu
dHMuICovCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHBy
aXZhdGU6CiB9OwogCiBjbGFzcyBBdWRpb0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgOiBwdWJsaWMgU2luZ2xlU291cmNlRmFj
dG9yeQogI2VuZGlmCiB7CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIH07CiAKIGNsYXNz
IFZpZGVvQ2FwdHVyZUZhY3RvcnkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICA6IHB1YmxpYyBTaW5nbGVTb3VyY2VGYWN0b3J5CiAjZW5kaWYKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBSZWFsdGltZVZpZGVvU291cmNlOjpSZWFsdGltZVZp
ZGVvU291cmNlCiAKIFJlYWx0aW1lVmlkZW9Tb3VyY2U6On5SZWFsdGltZVZpZGVvU291cmNlKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZWFs
dGltZVZpZGVvU291cmNlOjpwcmVwYXJlVG9Qcm9kdQogewogICAgIEFTU0VSVChmcmFtZVJhdGUo
KSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS5zZXRB
Y3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDQgKzQ3LDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CiAK
QEAgLTQ5LDQgKzQ5LDQgQEAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlOjpBVkF1ZGlvU2Vz
cwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjMsNCArNjMsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2VJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
SU9TKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgiCiAKQEAgLTQ0LDQgKzQ0LDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWQXVkaW9TZXNzaW9uLmg+CkBAIC0xNDEsNCArMTQxLDQgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZUZhY3RvcnkmIENvcmVBdWRpbwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWFjcm9zLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNYWNyb3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBXRUJSVENfSU9TCiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5lIHN0YXRpYyBib29s
IGRldmljZUlzQXZhaWxhYmxlKEFWQwogICAgIGlmICghW2RldmljZSBpc0Nvbm5lY3RlZF0pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKFtkZXZpY2UgaXNTdXNwZW5kZWRdIHx8IFtkZXZpY2UgaXNJ
blVzZUJ5QW5vdGhlckFwcGxpY2F0aW9uXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVT
b3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYQogI2RlZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFW
TWVkaWFUeXBlTXV4ZWQoKQogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBl
VmlkZW8oKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBT
T0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25S
dW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlm
aWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0
cmluZyAqKQpAQCAtMTA0LDcgKzEwNCw3IEBAIC0odm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZl
cnM7CiAtKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOwogLSh2b2lkKWNhcHR1cmVP
dXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxl
QnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFW
Q2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uOwogLSh2b2lkKW9ic2VydmVWYWx1ZUZv
cktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5
KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0odm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlm
aWNhdGlvbiopbm90aWZpY2F0aW9uOwogLSh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihO
U05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwogLSh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRl
ZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKQEAgLTE0MCw3ICsxNDAsNyBAQCBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyCiAgICAgLCBtX29iamNPYnNlcnZl
cihhZG9wdE5TKFtbV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRXaXRoQ2FsbGJhY2s6dGhpc10pKQogICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFj
a2dyb3VuZCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9u
UmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9u
UmVhc29uOjpWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Np
b25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBh
cyBleHBlY3RlZCIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1
cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxl
Rm9yZWdyb3VuZEFwcHMsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lk
ZUJ5U2lkZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2
aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpW
aWRlb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZp
Y2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBp
cyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VC
eUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nCiAgICAgICAgIFttX3Nlc3Npb24gc3Rv
cFJ1bm5pbmddOwogCiAgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5v
bmU7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9z
ZXNzaW9uID0gbnVsbHB0cjsKICNlbmRpZgogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgQVZN
ZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW8KICAgICB9KTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBVk1lZGlhQ2FwdHVyZVNv
dXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9y
KQogewogICAgIGlmICghbV9pc1J1bm5pbmcgfHwgZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9y
TWVkaWFTZXJ2aWNlc1dlcmVSZXNldCkKQEAgLTM1NSw3ICszNTUsNyBAQCAtICh2b2lkKWRpc2Nv
bm5lY3QKIAogLSAodm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9jYWxsYmFjayk7
CiAKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdOwpAQCAtMzY5LDcgKzM2OSw3IEBAIC0gKHZvaWQpYWRkTm90aWZp
Y2F0aW9uT2JzZXJ2ZXJzCiAKIC0gKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCiB7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNl
bmRpZgogfQpAQCAtNDA3LDcgKzQwNyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG8KICAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdE
aWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5T
Tm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5vdGlm
aWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXldOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZVMKIAogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5
cGVWaWRlbywgTlNTdHJpbmcgKikKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uV2FzSW50
ZXJydXB0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJ
T05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlm
aWNhdGlvbiwgTlNTdHJpbmcgKikKQEAgLTEwNSw3ICsxMDUsNyBAQCAtKHZvaWQpYWRkTm90aWZp
Y2F0aW9uT2JzZXJ2ZXJzOwogLSh2b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyczsKIC0o
dm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRp
ZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21D
b25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29ubmVjdGlvbjsKIC0odm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6
KE5TRGljdGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtKHZvaWQpc2Vzc2lvblJ1bnRpbWVF
cnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCliZWdpblNlc3Npb25J
bnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKIC0odm9pZCllbmRTZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CkBAIC0xNzEsNyAr
MTcxLDcgQEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cgogICAgICwg
bV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2Vy
dmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKICAgICAsIG1fZGV2aWNlKGRldmlj
ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05v
dEFsbG93ZWRJbkJhY2tncm91bmQpID09IHN0YXRpY19jYXN0PGludD4oQVZDYXB0dXJlU2Vzc2lv
bkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kKSwg
IkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kIGlzIG5vdCBB
VkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJ
bkJhY2tncm91bmQgYXMgZXhwZWN0ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUpID09
IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJs
ZVdpdGhNdWx0aXBsZUZvcmVncm91bmRBcHBzLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05v
dEFsbG93ZWRJblNpZGVCeVNpZGUgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25S
ZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZVdpdGhNdWx0aXBsZUZvcmVncm91bmRBcHBzIGFz
IGV4cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVw
dGlvblJlYXNvbjo6VmlkZW9JblVzZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJl
YXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246
OlZpZGVvSW5Vc2UgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRl
b0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50IGFzIGV4cGVjdGVkIik7CkBAIC0xODEsNyArMTgx
LDcgQEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cgogCiBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7
CiAjZW5kaWYKICAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlzY29ubmVjdF07CkBAIC0yMTksNyArMjE5
LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZwogICAgICAgICBb
bV9zZXNzaW9uIHN0b3BSdW5uaW5nXTsKIAogICAgIG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0
aW9uUmVhc29uOjpOb25lOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAjZW5kaWYKIH0KQEAgLTI5OCw3ICsyOTgs
NyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBBCiAKIGJvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnByZWZlcnNQcmVzZXQoVmlkZW9QcmVzZXQmIHByZXNldCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4g
W3N0YXRpY19jYXN0PEFWVmlkZW9QcmVzZXQqPigmcHJlc2V0KS0+Zm9ybWF0LmdldCgpIGlzVmlk
ZW9CaW5uZWRdOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJlc2V0KTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5kRnJhCiAKIHN0YXRp
YyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uKEFWQ2FwdHVyZVZpZGVvT3JpZW50YXRpb24g
dmlkZW9PcmllbnRhdGlvbikKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzd2l0Y2ggKHZpZGVvT3JpZW50YXRpb24pIHsKICAgICBjYXNlIEFWQ2Fw
dHVyZVZpZGVvT3JpZW50YXRpb25Qb3J0cmFpdDoKICAgICAgICAgcmV0dXJuIDE4MDsKQEAgLTQz
Miw3ICs0MzIsNyBAQCBBVkZyYW1lUmF0ZVJhbmdlVHlwZSogQVZWaWRlb0NhcHR1cmVTb3VyCiAK
IGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZpZGVvRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJj
ZSgqdGhpcyk7CiAjZW5kaWYKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6bW9u
aXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImIG5vdGlmaWVyKQogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG5vdGlmaWVyLmFkZE9i
c2VydmVyKCp0aGlzKTsKICAgICBvcmllbnRhdGlvbkNoYW5nZWQobm90aWZpZXIub3JpZW50YXRp
b24oKSk7CiAjZWxzZQpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmdlbmVyYXRlUHJlc2UKICAgICBzZXRTdXBwb3J0ZWRQcmVzZXRzKFdURk1vdmUocHJlc2V0
cykpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2
b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRh
aW5QdHI8TlNFcnJvcj4gZXJyb3IpCiB7CiAgICAgaWYgKCFtX2lzUnVubmluZyB8fCBlcnJvci5n
ZXQoKS5jb2RlICE9IEFWRXJyb3JNZWRpYVNlcnZpY2VzV2VyZVJlc2V0KQpAQCAtNjU5LDcgKzY1
OSw3IEBAIC0gKHZvaWQpZGlzY29ubmVjdAogCiAtICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2Vy
dmVycwogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IEFTU0VSVChtX2NhbGxiYWNrKTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIg
PSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CkBAIC02NzMsNyArNjczLDcg
QEAgLSAodm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKIAogLSAodm9pZClyZW1vdmVOb3Rp
ZmljYXRpb25PYnNlcnZlcnMKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92
ZU9ic2VydmVyOnNlbGZdOwogI2VuZGlmCiB9CkBAIC03MTEsNyArNzExLDcgQEAgLSAodm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogICAgICAgICBtX2NhbGxiYWNrLT5jYXB0
dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2Vz
c2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewogICAgIE5T
RXJyb3IgKmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25FcnJv
cktleV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNl
IEF1ZGlvVHJhY2tQcml2YXRlCiAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSByZW1vdGVJT1Vu
aXQgeyBudWxscHRyIH07CiAKICAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGlvVW5pdERl
c2NyaXB0aW9uIHsga0F1ZGlvVW5pdFR5cGVfT3V0cHV0LCAwLCBrQXVkaW9Vbml0TWFudWZhY3R1
cmVyX0FwcGxlLCAwLCAwIH07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1Vu
aXRTdWJUeXBlX1JlbW90ZUlPOwogI2Vsc2UKICAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21wb25l
bnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKQEAgLTEyNSw3ICsx
MjUsNyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRlCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFVJbnQzMiBwYXJhbSA9IDE7CiAgICAgZXJyID0gQXVkaW9Vbml0
U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxl
SU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAg
ICAgaWYgKGVycikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyAr
MjgyLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpbwogICAgICAg
ICB9CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdWludDMyX3QgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5
KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRT
Y29wZV9JbnB1dCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAgaWYgKGVy
cikgewpAQCAtNzAyLDcgKzcwMiw3IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIENvcmVBdWRpb0Nh
cHR1cmVTb3UKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHRS
ZWYoKm5ldyBDb3JlQXVkaW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBTdHJpbmcg
eyBkZXZpY2UtPmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIGRldmljZS0+ZGV2aWNlSUQo
KSkpOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBhdXRvIGRldmljZSA9IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmds
ZXRvbigpLmF1ZGlvU2Vzc2lvbkRldmljZVdpdGhVSUQoV1RGTW92ZShkZXZpY2VJRCkpOwogICAg
IGlmICghZGV2aWNlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNzg3LDcgKzc4Nyw3IEBAIENv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OkNvcmVBdWRpb0NhcHR1cmUKIAogICAgIHVuaXQuYWRkQ2xp
ZW50KCp0aGlzKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFdlIGVuc3VyZSB0aGF0IHdlIHVuc3VzcGVuZCBvdXJzZWx2ZXMgb24gdGhlIGNv
bnN0cnVjdG9yIGFzIGEgY2FwdHVyZSBzb3VyY2UKICAgICAvLyBpcyBjcmVhdGVkIHdoZW4gZ2V0
VXNlck1lZGlhIGdyYW50cyBhY2Nlc3Mgd2hpY2ggb25seSBoYXBwZW5zIHdoZW4gdGhlIHByb2Nl
c3MgaXMgZm9yZWdyb3VuZGVkLgogICAgIGlmICh1bml0LmlzU3VzcGVuZGVkKCkpCkBAIC03OTcs
NyArNzk3LDcgQEAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZQogCiBD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjp+Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSgpCiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZUZhY3Rvcnk6OnNpbmdsZXRvbigpLnVuc2V0Q29yZUF1ZGlvQWN0aXZlU291cmNl
KCp0aGlzKTsKICNlbmRpZgogCkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpyZW1vdmVFY2hvQwogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OnNpbmdsZXRvbigp
LnNldENvcmVBdWRpb0FjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kSW50
ZXJydXB0aW9uKCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDb3Jl
QXVkaW9BY3RpdmVTb3VyY2UoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgc291cmNlKSB7IHNldEFj
dGl2ZVNvdXJjZShzb3VyY2UpOyB9CiAgICAgdm9pZCB1bnNldENvcmVBdWRpb0FjdGl2ZVNvdXJj
ZShDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBzb3VyY2UpIHsgdW5zZXRBY3RpdmVTb3VyY2Uoc291
cmNlKTsgfQogICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UqIGNvcmVBdWRpb0FjdGl2ZVNvdXJj
ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvcmVBdWRpb0NhcHR1cmVTb3VyY2UqPihhY3RpdmVT
b3VyY2UoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5Q2FwdHVyCiAK
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6On5EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIERp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzCiAKIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIENWUGl4ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5j
b21pbmdWaWQKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVy
SGVpZ2h0S2V5OiBAKGhlaWdodCksCiAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3JtYXQpLAog
ICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29t
cGF0aWJpbGl0eUtleTogQChOTyksCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEZvcm1h
dE9wZW5HTEVTQ29tcGF0aWJpbGl0eSA6IEAoWUVTKSwKICNlbHNlCiAgICAgICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlck9wZW5HTENvbXBhdGliaWxpdHlLZXkgOiBA
KFlFUyksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmNyZWF0ZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgV1RGTW92ZSho
YXNoU2FsdCksIGNvbnN0cmFpbnRzKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0NhcHR1cmVQ
YWdlU3RhdGUoYm9vbCBpbnRlcnJ1cHRlZCwgYm9vbCBwYWdlTXV0ZWQpCiAgICAgewpAQCAtNjks
NyArNjksNyBAQCBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluCiBwdWJs
aWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2Uo
Y29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykgZmluYWwKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwogICAgICAgICBVTlVTRURf
UEFSQU0oY29uc3RyYWludHMpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNr
VGFyZ2V0TW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIgogCi0jaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw0ICs2Myw0IEBAIGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9ja19oCiAjZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrX2gKIAotI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCIKQEAgLTYzLDYgKzYzLDYgQEAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2sqIHRvTWVkaWFQbAogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgiCiAKLSNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTIyLDQgKzEyMiw0IEBAIHZv
aWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFMKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9ja19oCiAjZGVmaW5lIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrX2gKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
aCIKQEAgLTYyLDYgKzYyLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpICYmICEoVVNFKEdTVFJFQU1FUikgJiYgVVNFKExJQldF
QlJUQykpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICEo
VVNFKEdTVFJFQU1FUikgJiYgVVNFKExJQldFQlJUQykpCiBDYXB0dXJlU291cmNlT3JFcnJvciBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3Ry
YWludHMpCiB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNzEsNyArNzEsNyBAQCBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkCiAKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLmF1ZGlvRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogfQpA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnNldHRpbmdz
RGkKIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0ZhY3RvcnkoKS5zZXRBY3Rp
dmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Y3JlYXRlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2Uu
bGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgY29uc3RyYWludHMpOwogICAgIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogcHJpdmF0ZToKICAgICB2
b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sIGludGVycnVwdGVkLCBib29sIHBhZ2VN
dXRlZCkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgIShVU0UoR1NUUkVBTUVS
KSAmJiBVU0UoTElCV0VCUlRDKSkKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgIShVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTElCV0VCUlRDKSkKIENhcHR1cmVT
b3VyY2VPckVycm9yIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2
aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykKIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJVUkwuaCIKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVU
aHJlYWQuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSAiVGltZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJOZXR3b3JrU3RhdGVPYnNlcnZlcjsKICNlbmRp
ZgogCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4+IG1fbGlzdGVuZXJzOwogICAgIFRpbWVyIG1fdXBkYXRlU3RhdGVUaW1lcjsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFp
blB0cjxXZWJOZXR3b3JrU3RhdGVPYnNlcnZlcj4gbV9vYnNlcnZlcjsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkRm9yY2VDb250ZW50U25pZmZpbmc7CiB0eXBlZGVmIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpbkNvbnN0cnVjdG9yPiBCdWlsdGluUmVz
b3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcDsKIHN0YXRpYyBCdWlsdGluUmVzb3VyY2VIYW5kbGVD
b25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsy
NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVn
YXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRT
bmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9y
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3Vs
ZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAq
Y29ubmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
PHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBA
IC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIHsgcmV0
dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiBkb3VibGUgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c19kZWZhdWx0VGltZW91dEludGVydmFsID0gSU5UX01BWDsKICNl
bHNlCiAvLyBXaWxsIHVzZSBOU1VSTFJlcXVlc3QgZGVmYXVsdCB0aW1lb3V0IHVubGVzcyBzZXQg
dG8gYSBub24temVybyB2YWx1ZSB3aXRoIHNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDcg
KzI3Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXEKIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBp
bml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3
b3JrLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Qcm94eVNlcnZlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKFdJ
TikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0
aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3NsUHJvcHMg
PSBhZG9wdENGKFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVx
dWVzdChmaXJzdFJlcXVlc3QoKSkpOwogI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpLnRvU3Ry
aW5nKCkpKSB7CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
Q0ZVUkxDb25uZWN0aQogICAgICAgICB3a1NldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0
aWVzKHNzbFByb3BzLmdldCgpLCAoY2xpZW50Q2VydC0+dmFsdWUpLmdldCgpKTsKICNlbmRpZgog
ICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJv
cGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUg
Ym9vbCBSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgV1RGX0RFQ0xBUkVfQ0ZfVFlQ
RV9UUkFJVChDRlVSTCk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBNYWtlIHRo
aXMgYSBOZXR3b3JraW5nQ29udGV4dCBwcm9wZXJ0eS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQaXBlbGlu
aW5nRW5hYmxlZCA9IHRydWU7CiAjZWxzZQogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBp
cGVsaW5pbmdFbmFibGVkID0gZmFsc2U7CkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIGlubGlu
ZSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeQogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwCiBzdGF0aWMgQ0ZVUkxSZWYgc2l0ZUZvckNvb2tpZXMoUmVzb3VyY2VSZXF1ZXN0OjpT
YW1lU2l0ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBDRlVSTFJlZiB1cmwpCiB7CiAgICAgc3dp
dGNoIChkaXNwb3NpdGlvbikgewpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKIAogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRs
ZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOwogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDAKICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3Qs
IENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0
ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKIAogICAgIGlu
dCBpc1RvcFNpdGUgPSBtX2lzVG9wU2l0ZTsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGll
c0VuYWJsZWQoKSkKICAgICAgICAgbV9wcmlvcml0eSA9IHRvUmVzb3VyY2VMb2FkUHJpb3JpdHko
Q0ZVUkxSZXF1ZXN0R2V0UmVxdWVzdFByaW9yaXR5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAKLSNp
ZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc2l0ZUZvckNvb2tp
ZXMgPSBhZG9wdENGKGNoZWNrZWRfY2ZfY2FzdDxDRlVSTFJlZj4oX0NGVVJMUmVxdWVzdENvcHlQ
cm90b2NvbFByb3BlcnR5Rm9yS2V5KG1fY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tDRkhUVFBD
b29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIikpKSk7CiAgICAgbV9zYW1lU2l0ZURp
c3Bvc2l0aW9uID0gIXNpdGVGb3JDb29raWVzID8gU2FtZVNpdGVEaXNwb3NpdGlvbjo6VW5zcGVj
aWZpZWQgOiAocmVnaXN0cmFibGVEb21haW5zQXJlRXF1YWwoc2l0ZUZvckNvb2tpZXMuZ2V0KCks
IG1fdXJsKSA/IFNhbWVTaXRlRGlzcG9zaXRpb246OlNhbWVTaXRlIDogU2FtZVNpdGVEaXNwb3Np
dGlvbjo6Q3Jvc3NTaXRlKTsKIApAQCAtNDIxLDcgKzQyMSw3IEBAIHVuc2lnbmVkIGluaXRpYWxp
emVNYXhpbXVtSFRUUENvbm5lY3Rpb24KICAgICByZXR1cm4gdW5saW1pdGVkUmVxdWVzdENvdW50
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lk
IGluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCkKIHsKICAgICAvLyBU
aGlzIG5lZWQgdG8gYmUgY2FsbGVkIGZyb20gV2ViS2l0SW5pdGlhbGl6ZSBzbyB0aGUgY2FsbHMg
aGFwcGVuIGVhcmx5IGVub3VnaCwgYmVmb3JlIGFueSByZXF1ZXN0cyBhcmUgbWFkZS4gPHJkYXI6
Ly9wcm9ibGVtLzk2OTE4NzE+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDExICs1MywxMSBAQAogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKIGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbjsKIGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJp
bmdSZWYgX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7CiAjZW5kaWYKQEAgLTc5LDcgKzc5LDcg
QEAgc3RhdGljIGlubGluZSBDRlJ1bkxvb3BSZWYgY2FsbGJhY2tzUnVuTAogewogI2lmIFBMQVRG
T1JNKFdJTikKICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwotI2VsaWYgUExBVEZPUk0oSU9T
KQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gV2ViVGhyZWFkUnVuTG9v
cCgpOwogI2Vsc2UKICAgICByZXR1cm4gQ0ZSdW5Mb29wR2V0TWFpbigpOwpAQCAtNDk2LDcgKzQ5
Niw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW0KICAgICB9KTsK
IH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgdm9pZCBzZXRSZXNwb25zZVByb3h5VVJMKENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZSwgQ0ZV
UkxSZWYgcHJveHlVUkwpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtNTE1LDcgKzUxNSw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gY29weUMKICAgICAvLyBUaGlzIGlz
IHNldCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseSBmb3Igbm9ybWFsIEhUVFAgcmVzcG9uc2VzLCBi
dXQgbm90IGZvciBwcm94aWVzLgogICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwobWVz
c2FnZS5nZXQoKSwgcmVzcG9uc2VVUkwpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBEaXR0byBmb3IgcHJveHkgVVJMLgogICAgIGF1dG8g
cHJveHlVUkxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdChrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBudWxscHRyLCBDRlNUUigiaHR0cHM6Ly8lQDolQCIpLCBwcm94eUhvc3Qs
IHByb3h5UG9ydCkpOwogICAgIGF1dG8gcHJveHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eVVSTFN0cmluZy5nZXQoKSwgbnVsbHB0
cikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0Nvb2tpZUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAvLyBGSVhNRTogUmVtb3ZlIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOL0VO
RCBhbmQgYWxsIF9OdWxsYWJsZSBhbm5vdGF0aW9ucyBvbmNlIHdlIHJlbW92ZSB0aGUgTlNIVFRQ
Q29va2llIGZvcndhcmQgZGVjbGFyYXRpb24gYmVsb3cuCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxNTAwKSB8
fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MjAwMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAwMCkKKyNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDE1MDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEzMDAwMCkKIHR5cGVkZWYg
TlNTdHJpbmcgKiBOU0hUVFBDb29raWVTdHJpbmdQb2xpY3k7CiBAaW50ZXJmYWNlIE5TSFRUUENv
b2tpZSAoU3RhZ2luZykKIEBwcm9wZXJ0eSAobnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU0hU
VFBDb29raWVTdHJpbmdQb2xpY3kgc2FtZVNpdGVQb2xpY3k7CkBAIC04NCw3ICs4NCw3IEBAIHN0
YXRpYyBkb3VibGUgY29va2llQ3JlYXRlZChOU0hUVFBDb29raWUKICAgICByZXR1cm4gMDsKIH0K
IAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiBzdGF0aWMgQ29va2ll
OjpTYW1lU2l0ZVBvbGljeSBjb3JlU2FtZVNpdGVQb2xpY3koTlNIVFRQQ29va2llU3RyaW5nUG9s
aWN5IF9OdWxsYWJsZSBwb2xpY3kpCiB7CiAgICAgaWYgKCFwb2xpY3kpCkBAIC0xMjgsNyArMTI4
LDcgQEAgQ29va2llOjpDb29raWUoTlNIVFRQQ29va2llICpjb29raWUpCiAgICAgLCBjb21tZW50
VVJMIHsgY29va2llLmNvbW1lbnRVUkwgfQogICAgICwgcG9ydHMgeyBwb3J0VmVjdG9yRnJvbUxp
c3QoY29va2llLnBvcnRMaXN0KSB9CiB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgaWYg
KFtjb29raWUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzYW1lU2l0ZVBvbGljeSldKQog
ICAgICAgICBzYW1lU2l0ZSA9IGNvcmVTYW1lU2l0ZVBvbGljeShjb29raWUuc2FtZVNpdGVQb2xp
Y3kpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIENvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICog
X051bGxhYmwKICAgICBpZiAobWF4QWdlID4gMCkKICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWYiLCBtYXhBZ2VdIGZvcktleTpOU0hU
VFBDb29raWVNYXhpbXVtQWdlXTsKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MjAwMDApCiAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOmNyZWF0ZWQgLyAxMDAwLjAgLSBOU1RpbWVJbnRlcnZhbFNpbmNlMTk3MF0gZm9yS2V5OkAi
Q3JlYXRlZCJdOwogI2VuZGlmCiAKQEAgLTE4Myw3ICsxODMsNyBAQCBDb29raWU6Om9wZXJhdG9y
IE5TSFRUUENvb2tpZSAqIF9OdWxsYWJsCiAgICAgaWYgKGh0dHBPbmx5KQogICAgICAgICBbcHJv
cGVydGllcyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICBpZiAoYXV0byogc2FtZVNpdGVQb2xp
Y3kgPSBuc1NhbWVTaXRlUG9saWN5KHNhbWVTaXRlKSkKICAgICAgICAgW3Byb3BlcnRpZXMgc2V0
T2JqZWN0OnNhbWVTaXRlUG9saWN5IGZvcktleTpAIlNhbWVTaXRlIl07CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBAaW50ZXJmYWNl
IE5TVVJMICgpCiAtIChDRlVSTFJlZilfY2Z1cmw7CiBAZW5kCiAKLSNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlIChT
dGFnaW5nKQogLSAodm9pZClfZ2V0Q29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3Vt
ZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwYXJ0aXRpb246KE5TU3RyaW5nICopcGFy
dGl0aW9uIHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSopcHJvcHMgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9z
ZXRDb29raWVzOihOU0FycmF5ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1
bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgcG9saWN5UHJvcGVydGllczooTlNEaWN0
aW9uYXJ5KikgcHJvcHM7CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgZGVsZXRlSFRU
UENvb2tpZShDRkhUVFBDb29raQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUo
Y29va2llU3RvcmFnZSwgW2Nvb2tpZSBfR2V0SW50ZXJuYWxDRkhUVFBDb29raWVdKTsKIH0KIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiBzdGF0aWMgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gcG9saWN5UHJvcGVydGllcyhjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgTlNVUkwgKnVybCkKIHsKICAgICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tO
U1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0
aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29rCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29v
a2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsKICAgICB9OwotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMjAwMDApCiAgICAgaWYgKFtzdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX2dldENvb2tpZXNGb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBhcnRpdGlvbjpw
b2xpY3lQcm9wZXJ0aWVzOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBbc3RvcmFnZSBf
Z2V0Q29va2llc0ZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwYXJ0
aXRpb246cGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6c2FtZVNpdGVJbmZvID8gcG9saWN5UHJv
cGVydGllcyhzYW1lU2l0ZUluZm8udmFsdWUoKSwgdXJsKS5nZXQoKSA6IG51bGxwdHIgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKQEAgLTIyMyw3ICsyMjMs
NyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiB7CiAgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0
YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5E
b2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQogICAgICAgICAgICAgW1tOU0hUVFBDb29r
aWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBfc2V0Q29va2llczpjb29raWVzIGZv
clVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVz
OnBvbGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLCB1cmwpLmdldCgpXTsKICAgICAgICAgZWxz
ZQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENG
SFRUUEMKICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1h
aW5Eb2N1bWVudFVSTF07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICBpZiAoW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5z
dGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRDb29raWVzOmZvclVSTDptYWlu
RG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkgewogICAgICAgICAvLyBGSVhNRTogU3Rv
cCBjcmVhdGluZyBhIG5ldyBOU0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBlYWNoIHRpbWUgd2Ug
d2FudCB0byBxdWVyeSB0aGUgY29va2llIGphci4KICAgICAgICAgLy8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZv
ciB1cy4KQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVS
TChDRkhUVFBDCiAjZW5kaWYKICAgICAgICAgYXV0byBjZkNvb2tpZXMgPSBhZG9wdENGKFtOU0hU
VFBDb29raWUgX25zMmNmQ29va2llczpjb29raWVzXSk7CiAgICAgICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VTZXRDb29raWVzKGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llcy5nZXQoKSwgW3VybCBfY2Z1
cmxdLCBbbWFpbkRvY3VtZW50VVJMIF9jZnVybF0pOwotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9T
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApCiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtZVNpdGVJ
bmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBbbV9uc1Jl
cXVlc3QuZ2V0KCkgdGltZW91dEludGVydmFsXTsKICAgICBtX2ZpcnN0UGFydHlGb3JDb29raWVz
ID0gW21fbnNSZXF1ZXN0LmdldCgpIG1haW5Eb2N1bWVudFVSTF07CiAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIFVSTCBzaXRlRm9yQ29va2llcyB7IFttX25z
UmVxdWVzdC5nZXQoKSBfcHJvcGVydHlGb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3Bl
cnR5U2l0ZUZvckNvb2tpZXMiXSB9OwogICAgIG1fc2FtZVNpdGVEaXNwb3NpdGlvbiA9IHNpdGVG
b3JDb29raWVzLmlzTnVsbCgpID8gU2FtZVNpdGVEaXNwb3NpdGlvbjo6VW5zcGVjaWZpZWQgOiAo
cmVnaXN0cmFibGVEb21haW5zQXJlRXF1YWwoc2l0ZUZvckNvb2tpZXMsIG1fdXJsKSA/IFNhbWVT
aXRlRGlzcG9zaXRpb246OlNhbWVTaXRlIDogU2FtZVNpdGVEaXNwb3NpdGlvbjo6Q3Jvc3NTaXRl
KTsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlSFQKICAgICB9CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwKQogc3RhdGljIE5TVVJMICpzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMICp1cmwpCiB7CiAgICAgc3dpdGNoIChk
aXNwb3NpdGlvbikgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtUmUKICAgICAgICAgW25zUmVxdWVzdCBzZXRIVFRQTWV0aG9kOmh0dHBN
ZXRob2QoKV07CiAgICAgW25zUmVxdWVzdCBzZXRIVFRQU2hvdWxkSGFuZGxlQ29va2llczphbGxv
d0Nvb2tpZXMoKV07CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQog
ICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNw
b3NpdGlvbiwgbnNSZXF1ZXN0LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9w
ZXJ0eVNpdGVGb3JDb29raWVzIl07CiAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVt
YmVyIG51bWJlcldpdGhCb29sOm1faXNUb3BTaXRlXSBmb3JLZXk6QCJfa0NGSFRUUENvb2tpZVBv
bGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29y
a1N0YXRlTm90aWZpZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCkBAIC05Miw0ICs5Miw0IEBAIHZvaWQgTmV0d29ya1N0
YXRlTm90aWZpZXI6OnN0YXJ0T2JzZXJ2aW4KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9u
c2VJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmZGVmIF9fT0JKQ19fCiAjaW5j
bHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCkBAIC02MSw0ICs2MSw0IEBAIGlubGluZSBib29s
IHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUXVpY2tMb29rLmgiCiAjaW1wb3J0ICJV
VElVdGlsaXRpZXMuaCIKQEAgLTc3LDQgKzc3LDQgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KENGVVJMUmVzcAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9s
b2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAvLyBUaGlzIHdvcmthcm91bmQgY29kZSBleGlzdHMgaGVyZSBi
ZWNhdXNlIHdlIGNhbid0IGNhbGwgdHJhbnNsYXRlVG9DRkVycm9yIGluIEZvdW5kYXRpb24uIE9u
Y2Ugd2UKIC8vIGhhdmUgdGhhdCwgd2UgY2FuIHJlbW92ZSB0aGlzIGNvZGUuIDxyZGFyOi8vcHJv
YmxlbS85ODM3NDE1PiBOZWVkIFNQSSBmb3IgdHJhbnNsYXRlQ0ZFcnJvcgpAQCAtODksNyArODks
NyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogI2ltcG9ydCA8d3Rm
L3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2VuZGlmCkBA
IC05NSw3ICs5NSw3IEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQogICAgIExP
RyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlc3Ryb3llZCIsIHRoaXMpOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBib29sIHN5bmNocm9u
b3VzV2lsbFNlbmRSZXF1ZXN0RW5hYmxlZCgpCiB7CkBAIC0xMzIsNyArMTMyLDcgQEAgTlNVUkxS
ZXF1ZXN0ICpSZXNvdXJjZUhhbmRsZTo6YXBwbHlTbmlmZgogCiAjZW5kaWYKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRF
bmNvZGluZ1NuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yKQogI2Vs
c2UKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0
ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBz
Y2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0
aQogCiAgICAgQVNTRVJUKFtOU1VSTENvbm5lY3Rpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0
b3I6QHNlbGVjdG9yKF9pbml0V2l0aFJlcXVlc3Q6ZGVsZWdhdGU6dXNlc0NhY2hlOm1heENvbnRl
bnRMZW5ndGg6c3RhcnRJbW1lZGlhdGVseTpjb25uZWN0aW9uUHJvcGVydGllczopXSk7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwIGluIHRoYXQgaGVyZSB3ZSByZXNwZWN0IHN0cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2Vy
ZSBwcmVzZW50IGluIGNsaWVudCBwcm9wZXJ0aWVzLgogICAgIE5TRGljdGlvbmFyeSAqc3RyZWFt
UHJvcGVydGllc0Zyb21DbGllbnQgPSBbY29ubmVjdGlvblByb3BlcnRpZXMgb2JqZWN0Rm9yS2V5
OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiXTsKICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0gc3RyZWFtUHJvcGVydGllc0Zyb21DbGll
bnQgPyBbW3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSBhdXRvcmVsZWFz
ZV0gOiBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKQEAgLTIwMiw3ICsyMDIsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3RpCiAgICAgaWYgKHNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXREYXRhKQogICAgICAgICBbc3RyZWFtUHJvcGVydGllcyBzZXRPYmpl
Y3Q6KF9fYnJpZGdlIE5TRGF0YSAqKXNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpIGZv
cktleTpAImtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGljYXRpb24iXTsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnByb3BlcnR5RGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoRGljdGlvbmFyeTpjb25uZWN0aW9uUHJvcGVydGllc107CiAgICAgW3Byb3BlcnR5RGljdGlv
bmFyeSBzZXRPYmplY3Q6c3RyZWFtUHJvcGVydGllcyBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcyJdOwogICAgIGNvbnN0IGJvb2wgdXNlc0NhY2hlID0gZmFs
c2U7CkBAIC0yNDQsNyArMjQ0LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogCiAg
ICAgU2NoZWR1bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciA9IGNsaWVudCgpICYmIGNs
aWVudCgpLT5sb2FkaW5nU3luY2hyb25vdXNYSFIoKSA/IFNjaGVkdWxpbmdCZWhhdmlvcjo6U3lu
Y2hyb25vdXMgOiBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91czsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY3JlYXRlTlNVUkxDb25u
ZWN0aW9uKAogICAgICAgICBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLCBudWxscHRyKSwKICAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ug
PSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNl
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaGFu
ZGxlLT5jcmVhdGVOU1VSTENvbm5lY3Rpb24oCiAgICAgICAgIGhhbmRsZS0+bWFrZURlbGVnYXRl
KHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCAmY2xpZW50Lm1lc3NhZ2VRdWV1ZSgpKSwKICAg
ICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCkBAIC00ODIsNyArNDgyLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIGlmICh0cnlIYW5kbGVQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gSWYg
dGhlIGNoYWxsZW5nZSBpcyBmb3IgYSBwcm94eSBwcm90ZWN0aW9uIHNwYWNlLCBsb29rIGZvciBk
ZWZhdWx0IGNyZWRlbnRpYWxzIGluCiAgICAgLy8gdGhlIGtleWNoYWluLiAgQ0ZOZXR3b3JrIHVz
ZWQgdG8gaGFuZGxlIHRoaXMgdW50aWwgV2ViQ29yZSB3YXMgY2hhbmdlZCB0byBhbHdheXMKICAg
ICAvLyByZXR1cm4gTk8gdG8gLWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTog
Zm9yIDxyZGFyOi8vcHJvYmxlbS83NzA0OTQzPi4KQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBjaGFsbGVu
Z2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgIGQtPm1fY3VycmVudFdlYkNo
YWxsZW5nZSA9IGNvcmUoZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8
d3RmL1RpbnlMUlVDYWNoZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmls
ZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3FsaXRl
Myogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IG1fb3Bl
bmluZ1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgIW1fZGIpOwogI2VuZGlmCiAgICAg
ICAgIHJldHVybiBtX2RiOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBACiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8c3Fs
aXRlMy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSA8cGFsL3NwaS9pb3MvU1FMaXRlM1NQSS5oPgogI2VuZGlmCiAKQEAgLTk1LDcgKzk1
LDcgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbAogICAgIHJldHVy
biAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMod2FsRmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHNobUZpbGVOYW1l
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9v
bCBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFz
ZSkKIHsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElU
RV9UUlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAvLyBmaWxlTmFtZSAtIFRo
ZSBmaWxlIG5hbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVsZXRlRGF0YWJh
c2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVHJ1bmNhdGVzIGEgZGF0YWJhc2UgZmlsZS4g
VXNlZCB3aGVuIE1vYmlsZVNhZmFyaVNldHRpbmdzIGRlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlLAog
ICAgIC8vIHNpbmNlIGRlbGV0aW5nIHRoZSBmaWxlIG51a2VzIHRoZSBQT1NJWCBmaWxlIGxvY2tz
IHdoaWNoIHdvdWxkIHBvdGVudGlhbGx5IGNhdXNlIFNhZmFyaQogICAgIC8vIHRvIGNvcnJ1cHQg
dGhlIG5ldyBkYiBpZiBpdCdzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgogCkBA
IC01OCw3ICs1OCw3IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAg
Ly8gYW55IHN0YXRlbWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxs
IGZhaWwuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9u
Lmh0bWwKICAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xv
Y2tpbmcKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3ND
b3VudCgpOwogI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWRPbmx5KQpAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIp
OwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
IW1faW5Qcm9ncmVzcykKICAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVt
ZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksNyBA
QCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogICAgICAgICBBU1NFUlQobV9kYi5t
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4
ZWN1dGVDb21tYW5kKCJDT01NSVQiKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzcyA9IG1faW5Qcm9ncmVzczsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCiAgICAgICAgICAgICBTUUxpdGVE
YXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAj
ZW5kaWYKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2so
KQogICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpOwogICAgICAgICBtX2lu
UHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IGZhbHNlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVz
c0NvdW50KCk7CiAjZW5kaWYKICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBTUUxpdGVU
cmFuc2FjdGlvbjo6c3RvcCgpCiAgICAgaWYgKG1faW5Qcm9ncmVzcykgewogICAgICAgICBtX2lu
UHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IGZhbHNlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVz
c0NvdW50KCk7CiAjZW5kaWYKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNiw3ICszMjYsNyBAQCBTdHJpbmcgTG9jYWxlOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51
bWJlCiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBTdHJpbmcgTG9jYWxlOjpmb3Jt
YXREYXRlVGltZShjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSwgRm9ybWF0VHlwZSBmb3JtYXRU
eXBlKQogewogICAgIGlmIChkYXRlLnR5cGUoKSA9PSBEYXRlQ29tcG9uZW50czo6SW52YWxpZCkK
QEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgTG9jYWxlOjpmb3JtYXREYXRlVGltZShjb25zdCBE
YXRlCiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9Ci0jZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxl
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxh
dGZvcm1Mb2NhbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIGNsYXNzIEZvbnRDYXNjYWRlOwogI2VuZGlmCiAKQEAgLTExNiwxMSArMTE2LDExIEBAIHB1
YmxpYzoKICAgICAvLyBkaXNwbGF5IHRvIHRoZSB1c2VyLiBJZiBhbiBpbXBsZW1lbnRhdGlvbiBk
b2Vzbid0IHN1cHBvcnQKICAgICAvLyBsb2NhbGl6ZWQgZGF0ZXMgdGhlIGZ1bmN0aW9uIHNob3Vs
ZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZvcm1hdFR5cGUgY2FuIGJlIHVzZWQg
dG8gc3BlY2lmeSBpZiB5b3Ugd2FudCB0aGUgc2hvcnQgZm9ybWF0LiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFN0cmluZyBmb3JtYXREYXRlVGlt
ZShjb25zdCBEYXRlQ29tcG9uZW50cyYsIEZvcm1hdFR5cGUgPSBGb3JtYXRUeXBlVW5zcGVjaWZp
ZWQpOwogI2Vsc2UKICAgICB2aXJ0dWFsIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBEYXRl
Q29tcG9uZW50cyYsIEZvcm1hdFR5cGUgPSBGb3JtYXRUeXBlVW5zcGVjaWZpZWQpID0gMDsKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIH5Mb2NhbGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWRE
YXRlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRvIExvY2FsaXplZERhdGFDYWNoZUlPUy5o
IGFuZCByZW1vdmUgdGhpcyBndWFyZC4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRm9u
dENhc2NhZGUuaCIKQEAgLTcyLDQgKzcyLDQgQEAgTG9jYWxpemVkRGF0ZUNhY2hlJiBsb2NhbGl6
ZWREYXRlQ2FjaGUoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9z
L0xvY2FsaXplZERhdGVDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
I2ltcG9ydCAiTG9jYWxpemVkRGF0ZUNhY2hlLmgiCiAKIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBm
aWxlIHRvIExvY2FsaXplZERhdGFDYWNoZUlPUy5tbSBhbmQgY29uc2lkZXIgcmVtb3ZpbmcgdGhp
cyBndWFyZC4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGTm90aWZp
Y2F0aW9uQ2VudGVyLmg+CkBAIC0xODUsNCArMTg1LDQgQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNh
Y2hlOjpjYWxjdWxhdGVNYXhpbQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL1RleHRFbmNvZGluZ1JlZ2lzdHJ5SU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2lvcy9UZXh0RW5jb2RpbmdSZWdpc3RyeUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXh0RW5j
b2RpbmdSZWdpc3RyeS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNCArNjgsNCBAQCBDRlN0cmlu
Z0VuY29kaW5nIHdlYkRlZmF1bHRDRlN0cmluZ0VuY29kCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFj
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L0xvY2FsZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2NhbGUqKTsKICAgICB+TG9jYWxlTWFjKCk7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlw
ZVVuc3BlY2lmaWVkKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgPHd0Zi9MYW5ndWFnZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW1wb3J0ICJMb2NhbGl6ZWREYXRlQ2FjaGUuaCIKICNlbmRpZgogCkBAIC0xMDMs
NyArMTAzLDcgQEAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlTWFjOjpzaAogICAg
IHJldHVybiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihtX2xvY2FsZS5nZXQoKSwgbV9ncmVnb3Jp
YW5DYWxlbmRhci5nZXQoKSwgTlNEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZSwgTlNEYXRlRm9ybWF0
dGVyTm9TdHlsZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIFN0cmluZyBMb2NhbGVNYWM6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25l
bnRzJiBkYXRlQ29tcG9uZW50cywgRm9ybWF0VHlwZSkKIHsKICAgICBkb3VibGUgbXNlYyA9IGRh
dGVDb21wb25lbnRzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBQbHVnaW5WaWV3QmFzZSA6IHB1YmxpYyBX
aWRnZXQgewogcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFByb3ZpZGVQbHVnaW5MYXllcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFBsdWdpbkxheWVy
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFBsdWdpbkxheWVyKCkgeyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwOCw5ICs3MDgsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxh
dGZvcm1Eb2N1bWVuCiAgICAgICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6
OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQ7CiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOgogICAgICAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlczoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBSZW5hbWUgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OlRleHRDaGVja2luZ0RpY3Rh
dGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZB
TUlMWSktZ3VhcmQuCiAgICAgICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6
OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKICAg
ICAgICAgZGVmYXVsdDoKQEAgLTc2Miw4ICs3NjIsOCBAQCBhdXRvIElubGluZVRleHRCb3g6OnJl
c29sdmVTdHlsZUZvck1hcmtlCiAgICAgc3dpdGNoIChtYXJrZWRUZXh0LnR5cGUpIHsKICAgICBj
YXNlIE1hcmtlZFRleHQ6OkNvcnJlY3Rpb246CiAgICAgY2FzZSBNYXJrZWRUZXh0OjpEaWN0YXRp
b25BbHRlcm5hdGl2ZXM6Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3Vh
cmQuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8v
cHJvYmxlbS84OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1n
dWFyZC4KICAgICBjYXNlIE1hcmtlZFRleHQ6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXM6CiAjZW5kaWYKICAgICBjYXNlIE1hcmtlZFRleHQ6OkdyYW1tYXJFcnJvcjoKQEAgLTg3OSw3
ICs4NzksNyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjCiAgICAg
ICAgICAgICByZXR1cm4gTWFya2VkVGV4dDo6VGV4dE1hdGNoOwogICAgICAgICBjYXNlIERvY3Vt
ZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CiAgICAgICAgICAgICByZXR1cm4gTWFy
a2VkVGV4dDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgICAgICAgICAgcmV0dXJuIE1hcmtlZFRleHQ6
OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKQEAgLTkwMSw4ICs5MDEs
OCBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjCiAgICAgICAgIGNh
c2UgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3I6CiAgICAgICAgIGNhc2UgRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXM6Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1
YXJkLgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0
ZXJuYXRpdmVzOgogI2VuZGlmCiAgICAgICAgICAgICBpZiAocGhhc2UgIT0gVGV4dFBhaW50UGhh
c2U6OkRlY29yYXRpb24pCkBAIC05NDMsOCArOTQzLDggQEAgVmVjdG9yPE1hcmtlZFRleHQ+IElu
bGluZVRleHRCb3g6OmNvbGxlYwogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpDb3JyZWN0
aW9uSW5kaWNhdG9yOgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRl
cm5hdGl2ZXM6CiAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI6Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUy
Pi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+
LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgogICAgICAgICBj
YXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogI2Vu
ZGlmCiAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaDoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCAr
NDAsOCBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgICAgIFNwZWxsaW5nRXJyb3IsCiAgICAg
ICAgIFRleHRNYXRjaCwKICAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzLAotI2lmIFBMQVRG
T1JNKElPUykKLSAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4u
IEFsc28sIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4g
QWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KICAgICAgICAgRGlj
dGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKICNlbmRpZgogICAgICAgICBTZWxlY3Rpb24s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnQKICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93Qm94
KTsKICAgICAgICAgb3ZlcmZsb3dCb3gubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwogICAg
ICAgICBpZiAoIW92ZXJmbG93Qm94LmludGVyc2VjdHMocGFpbnRJbmZvLnJlY3QpCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBtYXkgYmUgYXBwbGljYWJsZSB0byBub24taU9TIHBvcnRzLgogICAgICAgICAgICAg
JiYgKCFoYXNMYXllcigpIHx8ICFsYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWluCiAgICAgcGFpbnRSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgYWRqdXN0Qm9y
ZGVyQm94UmVjdEZvclBhaW50aW5nKHBhaW50UmVjdCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3By
b2JsZW0vNjIwOTc2Mz4uIEZvcmNlIHRoZSBwYWludGluZyBib3VuZHMgb2YgY2hlY2tib3hlcyBh
bmQgcmFkaW8gY29udHJvbHMgdG8gYmUgc3F1YXJlLgogICAgIGlmIChzdHlsZSgpLmFwcGVhcmFu
Y2UoKSA9PSBDaGVja2JveFBhcnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gUmFkaW9QYXJ0
KSB7CiAgICAgICAgIGludCB3aWR0aCA9IHN0ZDo6bWluKHBhaW50UmVjdC53aWR0aCgpLCBwYWlu
dFJlY3QuaGVpZ2h0KCkpOwpAQCAtMzAyMCw3ICszMDIwLDcgQEAgc3RhdGljIGJvb2wgYWxsb3dN
aW5NYXhQZXJjZW50YWdlc0luQXV0bwogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4g
TWFjQXBwbGljYXRpb246OmlzSUJvb2tzKCk7Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3Mo
KTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5o
PgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCkBAIC0zNjMs
NyArMzYzLDcgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZAogICAg
IH0KIAogICAgIC8vIExhcmdlIGltYWdlIGNhc2UuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lCb29rc1N0b3J5
dGltZSgpKQogICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0
ZWREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlJlbmRlclRoZW1l
SU9TLmgiCiAjZW5kaWYKIApAQCAtMTQzLDcgKzE0Myw3IEBAIExheW91dFJlY3QgUmVuZGVyQnV0
dG9uOjpjb250cm9sQ2xpcFJlY3QKICAgICByZXR1cm4gTGF5b3V0UmVjdChhZGRpdGlvbmFsT2Zm
c2V0LngoKSArIGJvcmRlckxlZnQoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgKyBib3JkZXJUb3Ao
KSwgd2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCksIGhlaWdodCgpIC0gYm9y
ZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgUmVuZGVyQnV0dG9uOjpsYXlvdXQoKQogewogICAg
IFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCdXR0b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQnV0dG9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB0ZXh0
KCkgY29uc3Q7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0
eWwKICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAgICAgZG9jdW1lbnQo
KS5zZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJ
T1MpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAg
ICAgICAgICAgZG9jdW1lbnQoKS5zZXRUb3VjaEV2ZW50UmVnaW9uc05lZWRVcGRhdGUoKTsKICNl
bmRpZgpAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hh
bmdlKFN0eWwKICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnVwZGF0ZUV4dGVuZEJhY2tncm91
bmRJZk5lY2Vzc2FyeSgpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIHN0YXRpYyBib29sIGFyZU5vbklkZW50aWNhbEN1cnNvckxpc3RzRXF1YWwo
Y29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKQogewogICAgIEFTU0VS
VChhLT5jdXJzb3JzKCkgIT0gYi0+Y3Vyc29ycygpKTsKQEAgLTgzMSw3ICs4MzEsNyBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlCiAgICAgLy8gRG9uJ3QgY2hlY2sg
Zm9yIHJlcGFpbnQgaGVyZTsgd2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBsYXllciBoYXMgYmVl
bgogICAgIC8vIHVwZGF0ZWQgYnkgc3ViY2xhc3NlcyBiZWZvcmUgd2Uga25vdyBpZiB3ZSBoYXZl
IHRvIHJlcGFpbnQgKGluIHNldFN0eWxlKCkpLgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAob2xkU3R5bGUgJiYgIWFyZUN1cnNvcnNFcXVh
bChvbGRTdHlsZSwgJnN0eWxlKCkpKQogICAgICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNj
aGVkdWxlQ3Vyc29yVXBkYXRlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnJlcXVpcmVzTGF5ZXIKIAogYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6YWxsb3dzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhlIHRpbWluZyBvZiBsYXllciBjcmVhdGlvbiBpcyBk
aWZmZXJlbnQgb24gdGhlIHBob25lLCBzaW5jZSB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIG1hbmlw
dWxhdGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIHJldHVybiBpczxQbHVnaW5WaWV3QmFz
ZT4od2lkZ2V0KCkpICYmIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpLndpbGxQ
cm92aWRlUGx1Z2luTGF5ZXIoKTsKICNlbHNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6YWxsb3dzQWNjZWxlcgogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIFN0cmluZyB1bmF2YWls
YWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dChSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7CiAgICAgc3dp
dGNoIChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0
YXRpYyBib29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2EKIAogdm9pZCBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uKTsKICNlbHNlCiAgICAgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb25XaXRoRGVzY3JpcHRpb24ocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIHVuYXZhaWxh
YmxlUGx1Z2luUmVwbGFjZW1lbnRUZXh0KHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSk7CkBA
IC0xODEsNyArMTgxLDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0UGx1Z2luVW5h
dgogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbldpdGhEZXNjcmlwdGlvbihQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0ocGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pOwogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdGlvbik7
CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wpOwogCiBjb25zdCBpbnQgYWZ0
ZXJCdXR0b25TcGFjaW5nID0gNDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogY29uc3QgaW50IGljb25IZWlnaHQgPSAxNjsKIGNvbnN0IGludCBpY29uV2lk
dGggPSAxNjsKIGNvbnN0IGludCBpY29uRmlsZW5hbWVTcGFjaW5nID0gMjsKQEAgLTk2LDcgKzk2
LDcgQEAgc3RhdGljIGludCBub2RlV2lkdGgoTm9kZSogbm9kZSkKICAgICByZXR1cm4gKG5vZGUg
JiYgbm9kZS0+cmVuZGVyQm94KCkpID8gcm91bmRUb0ludChub2RlLT5yZW5kZXJCb3goKS0+c2l6
ZSgpLndpZHRoKCkpIDogMDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIGludCBub2RlSGVpZ2h0KE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0
dXJuIChub2RlICYmIG5vZGUtPnJlbmRlckJveCgpKSA/IHJvdW5kVG9JbnQobm9kZS0+cmVuZGVy
Qm94KCktPnNpemUoKS5oZWlnaHQoKSkgOiAwOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBp
bnQgbm9kZUhlaWdodChOb2RlKiBub2RlKQogCiBpbnQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6
Om1heEZpbGVuYW1lV2lkdGgoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGludCBpY29uV2lkdGggPSBub2RlSGVpZ2h0KHVwbG9hZEJ1
dHRvbigpKTsKICNlbmRpZgogICAgIHJldHVybiBzdGQ6Om1heCgwLCBzbmFwcGVkSW50UmVjdChj
b250ZW50Qm94UmVjdCgpKS53aWR0aCgpIC0gbm9kZVdpZHRoKHVwbG9hZEJ1dHRvbigpKSAtIGFm
dGVyQnV0dG9uU3BhY2luZwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBhaW50T2JqZWMKICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBz
dHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVj
dFRleHRSdW4oZGlzcGxheWVkRmlsZW5hbWUsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNp
b24sIFJlc3BlY3REaXJlY3Rpb24gfCBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJpZGUpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGludCBpY29u
SGVpZ2h0ID0gbm9kZUhlaWdodCh1cGxvYWRCdXR0b24oKSk7CiAgICAgICAgIGludCBpY29uV2lk
dGggPSBpY29uSGVpZ2h0OwogI2VuZGlmCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplYwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGljb25YID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRvbldpZHRo
IC0gYWZ0ZXJCdXR0b25TcGFjaW5nIC0gaWNvbldpZHRoOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBpZiAoUmVuZGVyQnV0dG9uKiBi
dXR0b25SZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJ1dHRvbj4oYnV0dG9uLT5yZW5kZXJlcigp
KSkgewogICAgICAgICAgICAgICAgIC8vIERyYXcgdGhlIGZpbGUgaWNvbiBhbmQgZGVjb3JhdGlv
bnMuCiAgICAgICAgICAgICAgICAgSW50UmVjdCBpY29uUmVjdChpY29uWCwgaWNvblksIGljb25X
aWR0aCwgaWNvbkhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNiw3ICs1MTYsNyBA
QCB2b2lkIFJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lcygpCiAgICAgICAgICAgICBpZiAo
d2lkdGggIT0gY2hpbGQtPndpZHRoKCkgfHwgaGVpZ2h0ICE9IGNoaWxkLT5oZWlnaHQoKSkgewog
ICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgICAgICAgICAg
Y2hpbGQtPnNldEhlaWdodChoZWlnaHQpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGlPUy1zcGVj
aWZpYz8KICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlz
KTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
aXNSZW5kZXJJRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogRG8g
d2Ugc3RpbGwgbmVlZCB0aGlzIHdvcmthcm91bmQgdG8gYXZvaWQgYnJlYWtpbmcgbGF5b3V0IHRl
c3RzPwogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyUGFydE9iamVjdCI7IH0KICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFj
a1N0YXRzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0aW9uUmVjdC5oIgogI2VuZGlmCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckltYWdlKTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IFRoaXMgZG9l
c24ndCBiZWhhdmUgY29ycmVjdGx5IGZvciBmbG9hdGluZyBvciBwb3NpdGlvbmVkIGltYWdlcywg
YnV0IFdlYkNvcmUgZG9lc24ndCBoYW5kbGUgdGhvc2Ugd2VsbAogLy8gZHVyaW5nIHNlbGVjdGlv
biBjcmVhdGlvbiB5ZXQgYW55d2F5LgogLy8gRklYTUU6IFdlIGNhbid0IHRlbGwgd2hldGhlciBv
ciBub3Qgd2UgY29udGFpbiB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSBzZWxlY3RlZCBSYW5nZSB1
c2luZyBvbmx5IHRoZSBvZmZzZXRzCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRB
cmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwogICAgIFVOVVNFRF9QQVJBTShw
YWludE9mZnNldCk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBI
VE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKICAgICB2b2lkIGFyZWFFbGVtZW50Rm9j
dXNDaGFuZ2VkKEhUTUxBcmVhRWxlbWVudCopOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZl
Y3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OmFic29sdXRlUXVhZHMoVmVjdG9yPAogICAgICAgICBjb250aW51YXRpb24tPmFic29sdXRlUXVh
ZHMocXVhZHMsIHdhc0ZpeGVkKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUXVhZHNGb3JTZWxlY3Rp
b24oVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogewogICAgIEFic29sdXRlUXVhZHNH
ZW5lcmF0b3JDb250ZXh0IGNvbnRleHQodGhpcywgcXVhZHMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHB1YmxpYzoKICAgICBJbmxpbmVCb3gqIGZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxp
bmcoKSBjb25zdCB7IHJldHVybiBhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSA/IGZpcnN0TGluZUJv
eCgpIDogY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCk7IH0KICAgICBJbmxpbmVCb3gqIGxhc3RM
aW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVC
b3hlcygpID8gbGFzdExpbmVCb3goKSA6IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCk7IH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWJz
b2x1dGVRdWFkc0ZvclNlbGVjdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDEwICsyOTMsMTAgQEAgUmVuZGVy
TGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZQogICAgICwgbV9oYXMzRFRyYW5zZm9y
bWVkQW5jZXN0b3IoZmFsc2UpCiAgICAgLCBtX2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246Ok5vbmUpKQogICAg
ICwgbV92aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihOb05vdENvbXBvc2l0
ZWRSZWFzb24pCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLCBtX2FkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhmYWxzZSkKICNlbmRpZgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQogICAgICwgbV9yZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXJGb3JT
Y3JvbGxpbmcoZmFsc2UpCiAjZW5kaWYKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgYm9vbCBj
YW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uCiAgICAgICAgIHx8IHJlbmRlcmVyLmlzUG9zaXRp
b25lZCgpIC8vIE5vdGUgdGhhdCB0aGlzIG9ubHkgY3JlYXRlcyBzdGFja2luZyBjb250ZXh0IGlu
IGNvbmp1bmN0aW9uIHdpdGggZXhwbGljaXQgei1pbmRleC4KICAgICAgICAgfHwgcmVuZGVyZXIu
aGFzUmVmbGVjdGlvbigpCiAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxlKCkuaGFzSXNvbGF0aW9u
KCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
fHwgbGF5ZXIuY2FuVXNlQWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpCiAjZW5kaWYKICAgICAg
ICAgfHwgKHJlbmRlcmVyLnN0eWxlKCkud2lsbENoYW5nZSgpICYmIHJlbmRlcmVyLnN0eWxlKCku
d2lsbENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKSk7CkBAIC0xOTUzLDcgKzE5
NTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgfQog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJl
bmRlckxheWVyOjp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIGlmIChSZW5kZXJMYXllckJhY2tp
bmcqIGxheWVyQmFja2luZyA9IGJhY2tpbmcoKSkKQEAgLTIxMjQsNyArMjEyNCw3IEBAIExheW91
dFNpemUgUmVuZGVyTGF5ZXI6Om9mZnNldEZyb21BbmNlc3QKIAogYm9vbCBSZW5kZXJMYXllcjo6
Y2FuVXNlQWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0o
SU9TKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
CiAgICAgcmV0dXJuIHNjcm9sbHNPdmVyZmxvdygpICYmIChyZW5kZXJlcigpLnN0eWxlKCkudXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIHx8IHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hbHdheXNV
c2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsKCkpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMzA1LDcgKzIzMDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhjb25zdCBT
Y3JvbGxQCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaW1lbnNpb25zIHdpbGwgYmUgY29t
cHV0ZWQgaWYgdGhleSBuZWVkIHRvIGJlIChmb3Igb3ZlcmZsb3c6aGlkZGVuIGJsb2NrcykuCiAg
ICAgICAgIGlmIChtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSkKICAgICAgICAgICAgIGNvbXB1dGVT
Y3JvbGxEaW1lbnNpb25zKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIGlmIChhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhpcyBjb2RlIGlzIHRy
eWluZyB0byBkby4gQmVoYXZpb3Igc2VlbXMgcmVhc29uYWJsZSB3aXRoIGl0IHJlbW92ZWQuCiAg
ICAgICAgICAgICBpbnQgbWF4T2Zmc2V0ID0gc2Nyb2xsV2lkdGgoKSAtIHJvdW5kVG9JbnQoYm94
LT5jbGllbnRXaWR0aCgpKTsKQEAgLTIzMjUsNyArMjMyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKGNvbnN0IFNjcm9sbFAKICAgICB9CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsUG9z
aXRpb24gPT0gbmV3UG9zaXRpb24pIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1fcmVxdWlyZXNTY3JvbGxCb3VuZHNPcmlnaW5VcGRh
dGUpCiAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CiAj
ZW5kaWYKQEAgLTIzNTUsNyArMjM1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGNv
bnN0IFNjcm9sbFAKICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3Jv
bGwoKTsKICAgICAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAg
ICAgICAgIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXRUb3VjaEV2ZW50UmVnaW9uc05lZWRVcGRh
dGUoKTsKICNlbmRpZgogICAgICAgICBEZWJ1Z1BhZ2VPdmVybGF5czo6ZGlkTGF5b3V0KHJlbmRl
cmVyKCkuZnJhbWUoKSk7CkBAIC0yNDkzLDcgKzI0OTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpz
Y3JvbGxSZWN0VG9WaXNpYmxlKGNvCiAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2Rl
ID09IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWUgJiYgZnJhbWVWaWV3
LmZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgTGF5
b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKTsKICNlbHNl
CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRD
b250ZW50UmVjdCgpOwpAQCAtMjkyMCw3ICsyOTIwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hv
dWxkU3VzcGVuZFNjcm9sbEFuaQogICAgIHJldHVybiByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZp
ZXcoKS5zaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbmRlckxheWVyOjpkaWRTdGFy
dFNjcm9sbCgpCiB7CiAgICAgcGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLmRpZFN0YXJ0T3ZlcmZs
b3dTY3JvbGwoKTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZVNjcm9sbEluZm9BZnRlckwKICAgICAgICAgLy8gTGF5b3V0IG1heSBjYXVzZSB1cyB0byBiZSBh
dCBhbiBpbnZhbGlkIHNjcm9sbCBwb3NpdGlvbi4gSW4gdGhpcyBjYXNlIHdlIG5lZWQKICAgICAg
ICAgLy8gdG8gcHVsbCBvdXIgc2Nyb2xsIG9mZnNldHMgYmFjayB0byB0aGUgbWF4IChvciBwdXNo
IHRoZW0gdXAgdG8gdGhlIG1pbikuCiAgICAgICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xs
T2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkpOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBGSVhNRTogVGhpcyBs
b29rcyB3cm9uZy4gVGhlIGNhcmV0IGFkanVzdCBtb2RlIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQg
b24gZWRpdGluZyByZWxhdGVkIGVudHJ5IHBvaW50cy4KICAgICAgICAgLy8gVGhpcyBjb2RlIHdh
cyBhZGRlZCB0byBmaXggYW4gaXNzdWUgd2hlcmUgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHdv
dWxkIGFsd2F5cyBiZSBkcmF3biBvbiB0aGUgcmlnaHQgZWRnZQogICAgICAgICAvLyBvZiBhIHRl
eHQgZmllbGQgd2hvc2UgY29udGVudCBvdmVyZmxvd2VkIGl0cyBib3VuZHMuIFNlZSA8cmRhcjov
L3Byb2JsZW0vMTU1Nzk3OTc+IGZvciBtb3JlIGRldGFpbHMuCkBAIC0zNTA3LDcgKzM1MDcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMCiAgICAgICAgIGlmIChj
bGFtcGVkU2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpKQogICAgICAgICAgICAgc2Nyb2xs
VG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9mZnNldCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgc2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Ny
b2xsaW5nKGZhbHNlKTsKICNlbmRpZgogICAgIH0KQEAgLTM1NDYsNyArMzU0Niw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6Om92ZXJmbG93Q29udHJvbHNJbnRlcnMKIAogYm9vbCBSZW5kZXJMYXllcjo6
c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBEb24ndCByZW5kZXIgKGN1c3RvbSkgc2Nyb2xs
YmFycyBpZiB3ZSBoYXZlIGFjY2VsZXJhdGVkIHNjcm9sbGluZy4KICAgICBpZiAoY2FuVXNlQWNj
ZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzU3
LDcgKzUzNTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uCiAg
ICAgICAgIGNsaXBSZWN0cy5zZXRPdmVyZmxvd0NsaXBSZWN0KGNsaXBSZWN0cy5wb3NDbGlwUmVj
dCgpKTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIGNsaXAgcmVjdHMgdGhhdCB3aWxsIGJlIHBh
c3NlZCB0byBjaGlsZCBsYXllcnMuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKHJlbmRlcmVyKCkuaGFzQ2xpcE9yT3ZlcmZsb3dDbGlwKCkgJiYg
KGNsaXBSZWN0c0NvbnRleHQucmVzcGVjdE92ZXJmbG93Q2xpcCA9PSBSZXNwZWN0T3ZlcmZsb3dD
bGlwIHx8IHRoaXMgIT0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXIpKSB7CiAjZWxzZQogICAg
IGlmICgocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiAoY2xpcFJlY3RzQ29udGV4dC5y
ZXNwZWN0T3ZlcmZsb3dDbGlwID09IFJlc3BlY3RPdmVyZmxvd0NsaXAgfHwgdGhpcyAhPSBjbGlw
UmVjdHNDb250ZXh0LnJvb3RMYXllcikpIHx8IHJlbmRlcmVyKCkuaGFzQ2xpcCgpKSB7CkBAIC02
MzE1LDcgKzYzMTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZm
CiAKICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2U6OlJl
Y29tcG9zaXRlTGF5ZXIgfHwgZGlmZiA+PSBTdHlsZURpZmZlcmVuY2U6OkxheW91dFBvc2l0aW9u
ZWRNb3ZlbWVudE9ubHkpCiAgICAgICAgIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXRUb3VjaEV2
ZW50UmVnaW9uc05lZWRVcGRhdGUoKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYp
OwogICAgIHZpcnR1YWwgflJlbmRlckxheWVyKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBDYWxsZWQgYmVmb3JlIHRoZSByZW5kZXJlcidz
IHdpZGdldCAoaWYgYW55KSBoYXMgYmVlbiBudWxsZWQgb3V0LgogICAgIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7CiAjZW5kaWYKQEAgLTMyNyw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
cGRhdGVTbmFwT2Zmc2V0cygpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykK
ICAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jikgb3Zl
cnJpZGU7CiAjZW5kaWYKQEAgLTYxNSw3ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dGF0aWNJbmxpbmVQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0aW9uKSB7IG1fc3RhdGljSW5saW5l
UG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0U3RhdGljQmxvY2tQb3NpdGlvbihM
YXlvdXRVbml0IHBvc2l0aW9uKSB7IG1fc3RhdGljQmxvY2tQb3NpdGlvbiA9IHBvc2l0aW9uOyB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29s
IGFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0
Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nOyB9CiAgICAgdm9pZCBzZXRBZGp1c3RGb3JJT1NDYXJl
dFdoZW5TY3JvbGxpbmcoYm9vbCBhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcpIHsgbV9h
ZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcgPSBhZGp1c3RGb3JJT1NDYXJldFdoZW5TY3Jv
bGxpbmc7IH0KICNlbmRpZgpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24gOiAzOwogICAgIHVuc2lnbmVkIG1fdmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gOiAyOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FkanVzdEZvcklPU0Nh
cmV0V2hlblNjcm9sbGluZyA6IDE7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAg
Ym9vbCBtX3JlZ2lzdGVyZWRBc1RvdWNoRXZlbnRMaXN0ZW5lckZvclNjcm9sbGluZyA6IDE7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCkBAIC00MDQsNyArNDA0LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcgogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPmFkZENoaWxkKCptX2NoaWxkQ29udGFpbm1lbnRMYXllcik7CiAgICAgfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9pc01h
aW5GcmFtZVJlbmRlclZpZXdMYXllcikgewogICAgICAgICAvLyBQYWdlIHNjYWxlIGlzIGFwcGxp
ZWQgYWJvdmUgdGhlIFJlbmRlclZpZXcgb24gaU9TLgogICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzT3BhcXVlKCFjb21wb3NpdG9yKCkudmlld0hhc1RyYW5zcGFyZW50QmFja2dy
b3VuZCgpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3Jl
YXRlUHJpbWFyeUdyCiAgICAgdXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShyZW5kZXJlcigpLnN0eWxl
KCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQogewogICAgIGF1
dG8mIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKQEAgLTU2OSw3ICs1NjksNyBAQCBzdGF0
aWMgYm9vbCBsYXllck9yQW5jZXN0b3JJc1RyYW5zZm9ybWVkCiAKIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzaG91bGRDbGlwQ29tcG9zaXRlZEJvdW5kcygpIGNvbnN0CiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTY3JvbGxiYXIgbGF5
ZXJzIHVzZSB0aGlzIGxheWVyIGZvciByZWxhdGl2ZSBwb3NpdGlvbmluZywgc28gZG9uJ3QgY2xp
cC4KICAgICBpZiAobGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgbGF5ZXJGb3JWZXJ0
aWNhbFNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MzgsNyArNzM4LDcg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYQogCiAgICAgaWYgKGlz
PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKSAmJiBkb3duY2FzdDxSZW5kZXJFbWJl
ZGRlZE9iamVjdD4ocmVuZGVyZXIoKSkuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7
CiAgICAgICAgIGF1dG8qIHBsdWdpblZpZXdCYXNlID0gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+
KGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIoKSkud2lkZ2V0KCkpOwotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAocGx1Z2luVmll
d0Jhc2UgJiYgIW1fZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllckZvck1lZGlhKCkpIHsKICAg
ICAgICAgICAgIHBsdWdpblZpZXdCYXNlLT5kZXRhY2hQbHVnaW5MYXllcigpOwogICAgICAgICAg
ICAgcGx1Z2luVmlld0Jhc2UtPmF0dGFjaFBsdWdpbkxheWVyKCk7CkBAIC05MTUsNyArOTE1LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQYQogICAgICAgICBwYXJl
bnRHcmFwaGljc0xheWVyUmVjdCA9IHNuYXBwZWRHcmFwaGljc0xheWVyKGNsaXBwaW5nQm94T2Zm
c2V0LCBjbGlwcGluZ0JveC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yKCkpLm1fc25hcHBlZFJl
Y3Q7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKGNvbXBvc2l0ZWRBbmNlc3Rvci0+aGFzVG91Y2hTY3JvbGxhYmxlT3ZlcmZsb3co
KSkgewogICAgICAgICBMYXlvdXRSZWN0IGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcyA9IGFuY2Vz
dG9yQmFja2luZ0xheWVyLT5jb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIGF1dG8mIHJlbmRl
ckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oY29tcG9zaXRlZEFuY2VzdG9yLT5yZW5kZXJlcigp
KTsKQEAgLTExNTEsNyArMTE1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVH
ZW9tZXRyeSgKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2lu
dChwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBjb21wb3NpdGVkQm91bmRzKCkubG9jYXRpb24oKSkp
OwogCiAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFNpemUocm91bmRlZEludFNpemUoTGF5
b3V0U2l6ZShyZW5kZXJCb3guY2xpZW50V2lkdGgoKSwgcmVuZGVyQm94LmNsaWVudEhlaWdodCgp
KSkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBGbG9hdFNpemUgb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVyLT5v
ZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0T2Zmc2V0
RnJvbVJlbmRlcmVyKEZsb2F0UG9pbnQoKSAtIHBhZGRpbmdCb3gubG9jYXRpb24oKSk7CiAgICAg
ICAgIGJvb2wgcGFkZGluZ0JveE9mZnNldENoYW5nZWQgPSBvbGRTY3JvbGxpbmdMYXllck9mZnNl
dCAhPSBtX3Njcm9sbGluZ0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKQEAgLTIzNjMsNyAr
MjM2Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNJbnRvV2luZG8KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5
ZXIoKSkgewotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICAgICAgaWYgKGNvbXBvc2l0b3IoKS5pbkZvcmNlZENvbXBvc2l0aW5nTW9kZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDY2LDcgKzI0NjYsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkCiAgICAgaWYgKG1fc2Nyb2xsaW5nQ29u
dGVudHNMYXllciAmJiBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7
CiAgICAgICAgIEZsb2F0UmVjdCBsYXllckRpcnR5UmVjdCA9IHBpeGVsU25hcHBlZFJlY3RGb3JQ
YWludGluZzsKICAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgtbV9zY3JvbGxpbmdDb250ZW50
c0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKSAtIG1fc3VicGl4ZWxPZmZzZXRGcm9tUmVuZGVy
ZXIpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAvLyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
R2VvbWV0cnkoKSBiYWtlcyBzY3JvbGxPZmZzZXQgaW50byBvZmZzZXRGcm9tUmVuZGVyZXIgb24g
aU9TLAogICAgICAgICAvLyBidXQgdGhlIHJlcGFpbnQgcmVjdCBpcyBjb21wdXRlZCB3aXRob3V0
IHRha2luZyB0aGUgc2Nyb2xsIHBvc2l0aW9uIGludG8gYWNjb3VudCAoc2VlIHNob3VsZEFwcGx5
Q2xpcEFuZFNjcm9sbFBvc2l0aW9uRm9yUmVwYWludCgpKS4KICAgICAgICAgbGF5ZXJEaXJ0eVJl
Y3QubW92ZUJ5KC1tX293bmluZ0xheWVyLnNjcm9sbFBvc2l0aW9uKCkpOwpAQCAtMjQ4MCw3ICsy
NDgwLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogICAgIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRp
bmdQaGFzZSBwYWludGluZ1BoYXNlKQogewogICAgIGlmICgocGFpbnRzSW50b1dpbmRvdygpIHx8
IHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkgJiYgcGFpbnRpbmdQaGFzZSAhPSBHcmFw
aGljc0xheWVyUGFpbnRDaGlsZENsaXBwaW5nTWFzaykgewotI2lmICFQTEFURk9STShJT1MpICYm
ICFPUyhXSU5ET1dTKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhT1MoV0lORE9XUykK
ICAgICAgICAgLy8gRklYTUU6IExvb2tzIGxpa2UgdGhlIENBTGF5ZXIgdHJlZSBpcyBvdXQgb2Yg
c3luYyB3aXRoIHRoZSBHcmFwaGljc0xheWVyIGhlaXJhcmNoeQogICAgICAgICAvLyB3aGVuIHBh
Z2VzIGFyZSByZXN0b3JlZCBmcm9tIHRoZSBQYWdlQ2FjaGUuCiAgICAgICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS84NzEyNTg3PiBBU1NFUlQ6IFdoZW4gR29pbmcgQmFjayB0byBQYWdlIHdpdGggUGx1
Z2lucyBpbiBQYWdlQ2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVy
Jik7CiAgICAgflJlbmRlckxheWVyQmFja2luZygpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBsYXllcldpbGxCZURlc3Ryb3llZCgpOwog
I2VuZGlmCiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRTaXplIHN1
YnBpeGVsT2Zmc2V0RnJvbVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdWJwaXhlbE9mZnNl
dEZyb21SZW5kZXJlcjsgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCBuZWVkc0lPU0R1bXBSZW5kZXJUcmVlTWFpbkZyYW1lUmVuZGVyVmll
d0xheWVySXNBbHdheXNPcGFxdWVIYWNrKGNvbnN0IEdyYXBoaWNzTGF5ZXImKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUNhY2hlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjZW5kaWYKQEAgLTg0LDcgKzg0LDcgQEAKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgV2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKICNlbmRpZgogCi0j
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgVVNFX0NPTVBPU0lUSU5HX0ZPUl9TTUFM
TF9DQU5WQVNFUyAxCiAjZW5kaWYKIApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgY29uc3QgaW50IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3Np
dGluZyA9IDUwICogMTAwOwogI2VuZGlmCiAvLyBEdXJpbmcgcGFnZSBsb2FkaW5nIGRlbGF5IGxh
eWVyIGZsdXNoZXMgdXAgdG8gdGhpcyBtYW55IHNlY29uZHMgdG8gYWxsb3cgdGhlbSBjb2FsZXNj
ZSwgcmVkdWNpbmcgd29ya2xvYWQuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aHJvdHRsZWRMYXllckZsdXNoSW5pdGlh
bERlbGF5IHsgNTAwX21zIH07CiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aHJvdHRsZWRMYXllckZs
dXNoRGVsYXkgeyAxLjVfcyB9OwogI2Vsc2UKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVMYXllCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdAogewogICAgIGNvbnN0
IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBmcmFtZVZp
ZXcuZXhwb3NlZENvbnRlbnRSZWN0KCk7CiAjZWxzZQogICAgIC8vIEhhdmluZyBhIG1fY2xpcExh
eWVyIGluZGljYXRlcyB0aGF0IHdlJ3JlIGRvaW5nIHNjcm9sbGluZyB2aWEgR3JhcGhpY3NMYXll
cnMuCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNo
UGVuZGluZwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHJvb3RMYXllckF0dGFjaG1l
bnQoKSA9PSBSb290TGF5ZXJVbmF0dGFjaGVkKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHN0YXJ0TGF5ZXJGbHVzaFRpbWVySWZOZWVkZWQo
KTsKICNlbmRpZgogICAgICAgICBtX3Nob3VsZEZsdXNoT25SZWF0dGFjaCA9IHRydWU7CkBAIC00
OTYsNyArNDk2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZwog
CiAgICAgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNBZnRlckZsdXNoSW5jbHVkaW5nU3Vi
ZnJhbWVzKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoaXNGbHVzaFJvb3QpCiAgICAgICAgIHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKS5k
aWRGbHVzaENvbXBvc2l0aW5nTGF5ZXJzKCk7CiAjZW5kaWYKQEAgLTUzMCw3ICs1MzAsNyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsCiAgICAgICAgIHVwZGF0ZVNj
cm9sbENvb3JkaW5hdGVkU3RhdHVzKCpsYXllciwgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpM
YXllcik7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHN0YXRpYyBib29sIHNjcm9sbGJhckhhc0Rpc3BsYXlOb25lKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQogewogICAgIGlmICghc2Nyb2xsYmFyIHx8ICFzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFy
KCkpCkBAIC01NTUsNyArNTU1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlU2Nyb2xsaW5nTGF5ZXJX
aXRoQ2xpZQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ3VzdG9tTGF5ZXJz
QWZ0ZXJGbHVzaCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKCk7CiAKICAgICBp
ZiAoIW1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5pc0VtcHR5KCkpIHsKQEAgLTU3Miw3
ICs1NzIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkRmx1c2hDaGFuCiAgICAg
aWYgKG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMuY29udGFpbnMoJmxheWVyKSkKICAgICAgICAg
bV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUuYWRkKCZsYXllcik7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9zY3Jv
bGxpbmdMYXllcnMuY29udGFpbnMoJmxheWVyKSkKICAgICAgICAgbV9zY3JvbGxpbmdMYXllcnNO
ZWVkaW5nVXBkYXRlLmFkZCgmbGF5ZXIpOwogI2VuZGlmCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvCiAgICAgLy8gaWYgdGhlcmUg
YXJlIGNvbXBvc2l0ZWQgbGF5ZXJzIHRoYXQgd2UgZGlkbid0IGhpdCBpbiBvdXIgdHJhdmVyc2Fs
IChlLmcuIGJlY2F1c2Ugb2YgdmlzaWJpbGl0eTpoaWRkZW4pLgogICAgIGlmIChsYXllci5pc1Jl
bmRlclZpZXdMYXllcigpICYmICFjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nICYmICFy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIpICYmICFtX2ZvcmNlQ29tcG9zaXRpbmdNb2Rl
ICYmICFoYXNBbnlBZGRpdGlvbmFsQ29tcG9zaXRlZExheWVycyhsYXllcikpIHsKICAgICAgICAg
Ly8gRG9uJ3QgZHJvcCBvdXQgb2YgY29tcG9zaXRpbmcgb24gaU9TLCBiZWNhdXNlIHdlIG1heSBm
bGFzaC4gU2VlIDxyZGFyOi8vcHJvYmxlbS84MzQ4MzM3Pi4KLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBlbmFibGVDb21wb3NpdGluZ01vZGUo
ZmFsc2UpOwogICAgICAgICB3aWxsQmVDb21wb3NpdGVkID0gZmFsc2U7CiAjZW5kaWYKQEAgLTE5
MjcsNyArMTkyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRJc0luV2luZG8K
IAogICAgICAgICBSb290TGF5ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQgPSBpc01haW5GcmFtZUNv
bXBvc2l0b3IoKSA/IFJvb3RMYXllckF0dGFjaGVkVmlhQ2hyb21lQ2xpZW50IDogUm9vdExheWVy
QXR0YWNoZWRWaWFFbmNsb3NpbmdGcmFtZTsKICAgICAgICAgYXR0YWNoUm9vdExheWVyKGF0dGFj
aG1lbnQpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICByZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKTsKICAgICAgICAgcmVn
aXN0ZXJBbGxTY3JvbGxpbmdMYXllcnMoKTsKICNlbmRpZgpAQCAtMTkzNiw3ICsxOTM2LDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldElzSW5XaW5kbwogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGRldGFjaFJvb3RMYXllcigpOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB1bnJlZ2lzdGVyQWxsVmlld3BvcnRDb25z
dHJhaW5lZExheWVycygpOwogICAgICAgICB1bnJlZ2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCk7
CiAjZW5kaWYKQEAgLTIzMjgsNyArMjMyOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXAKICAgICBpZiAoaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1fcmVuZGVy
Vmlldy5zZXR0aW5ncygpLmFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjU4Miw3ICsyNTgyLDcgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmlzQXN5bmNTY3JvbAogCiAgICAgYXV0byogZW5jbG9zaW5nT3ZlcmZsb3dM
YXllciA9IGxheWVyLmVuY2xvc2luZ092ZXJmbG93Q2xpcExheWVyKEV4Y2x1ZGVTZWxmKTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChlbmNs
b3NpbmdPdmVyZmxvd0xheWVyICYmIGVuY2xvc2luZ092ZXJmbG93TGF5ZXItPmhhc1RvdWNoU2Ny
b2xsYWJsZU92ZXJmbG93KCkpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ0FjY2VsZXJhdGVkT3Zl
cmZsb3dMYXllcikKICAgICAgICAgICAgICplbmNsb3NpbmdBY2NlbGVyYXRlZE92ZXJmbG93TGF5
ZXIgPSBlbmNsb3NpbmdPdmVyZmxvd0xheWVyOwpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzQXN5bmNTY3JvbAogICAgIGlmIChoYXNDb29yZGluYXRl
ZFNjcm9sbGluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIGlPUyBXSzEgaGFzIGZpeGVkL3N0aWNr
eSBzdXBwb3J0IGluIHRoZSBtYWluIGZyYW1lIHZpYSBXZWJGaXhlZFBvc2l0aW9uQ29udGVudC4K
ICAgICByZXR1cm4gaXNNYWluRnJhbWVDb21wb3NpdG9yKCk7CiAjZWxzZQpAQCAtMjcxMyw3ICsy
NzEzLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcAogCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Ny
b2xsaW5nKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWxheWVyLmNhblVzZUFjY2Vs
ZXJhdGVkVG91Y2hTY3JvbGxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yODU3
LDcgKzI4NTcsNyBAQCBmbG9hdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Onpvb21lZE91dFBhCiAK
IGZsb2F0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JO
ZXdUaWxlcyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBMZWdhY3lUaWxlQ2FjaGUqIHRpbGVDYWNo
ZSA9IG51bGxwdHI7CiAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IHBhZ2UoKS5tYWluRnJhbWUo
KS52aWV3KCkpCiAgICAgICAgIHRpbGVDYWNoZSA9IGZyYW1lVmlldy0+bGVnYWN5VGlsZUNhY2hl
KCk7CkBAIC0zMjc5LDcgKzMyNzksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5z
dXJlUm9vdExhCiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0U2l6ZShGbG9hdFNpemUo
b3ZlcmZsb3dSZWN0Lm1heFgoKSwgb3ZlcmZsb3dSZWN0Lm1heFkoKSkpOwogICAgICAgICBtX3Jv
b3RDb250ZW50TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gUGFnZSBzY2FsZSBp
cyBhcHBsaWVkIGFib3ZlIHRoaXMgb24gaU9TLCBzbyB3ZSdsbCBqdXN0IHNheSB0aGF0IG91ciBy
b290IGxheWVyIGFwcGxpZXMgaXQuCiAgICAgICAgIGF1dG8mIGZyYW1lID0gbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpLmZyYW1lKCk7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKQpA
QCAtMzYwNCw3ICszNjA0LDcgQEAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVu
ZGVyTAogU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoUmVuZGVyTGF5ZXImIGxheWVy
KSBjb25zdAogewogICAgIEFTU0VSVChsYXllci5pc0NvbXBvc2l0ZWQoKSk7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZSBzaG91bGQgbmV2
ZXIgZ2V0IGhlcmUgZm9yIHN0aWNraWVzIGNvbnN0cmFpbmVkIGJ5IGFuIGVuY2xvc2luZyBjbGlw
cGluZyBsYXllci4KICAgICAvLyBGSVhNRTogV2h5IGRvZXMgdGhpcyBhc3NlcnRpb24gZmFpbCBv
biBpT1M/CiAgICAgQVNTRVJUKCFsYXllci5lbmNsb3NpbmdPdmVyZmxvd0NsaXBMYXllcihFeGNs
dWRlU2VsZikpOwpAQCAtMzg1OSw3ICszODU5LDcgQEAgU2Nyb2xsYWJsZUFyZWEqIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cwogICAgIHJldHVybiBtX3Njcm9sbGluZ05vZGVUb0xheWVyTWFwLmdl
dChub2RlSUQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1MYXllciosIHN0ZDo6dW5pcXVlX3B0cjxWaWV3
cG9ydENvbnN0cmFpbnRzPj4gTGF5ZXJNYXA7CiB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1MYXll
ciosIFBsYXRmb3JtTGF5ZXIqPiBTdGlja3lDb250YWluZXJNYXA7CiAKQEAgLTM5MzcsNyArMzkz
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp3aWxsUmVtb3ZlU2MKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5yZW1vdmUoJmxheWVyKTsK
ICAgICBtX3Njcm9sbGluZ0xheWVycy5yZW1vdmUoJmxheWVyKTsKIApAQCAtMzk2MCw3ICszOTYw
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEFkZFNjcm9sbAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgQVNTRVJUKG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLnBhZ2VDYWNoZVN0YXRlKCkg
PT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKTsKICAgICBtX3Njcm9sbGluZ0xheWVycy5hZGQo
JmxheWVyKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGluZ0xheWVy
V2l0aEJhY2tpbmcoUmVuZGVyTGF5ZXImLCBSZW5kZXJMYXllckJhY2tpbmcmKTsKICAgICB2b2lk
IGRpZEFkZFNjcm9sbGluZ0xheWVyKFJlbmRlckxheWVyJik7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlZ2lzdGVyQWxsVmlld3BvcnRD
b25zdHJhaW5lZExheWVycygpOwogICAgIHZvaWQgdW5yZWdpc3RlckFsbFZpZXdwb3J0Q29uc3Ry
YWluZWRMYXllcnMoKTsKIApAQCAtNTE4LDcgKzUxOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEdyYXBoaWNzTGF5ZXI+IG1fY2xpcExheWVyOwogICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBt
X3Njcm9sbExheWVyOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fc2Nyb2xsaW5nTGF5ZXJzOwogICAgIEhh
c2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGU7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcg
KzIzOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGEKIGJvb2wg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJh
ck9uTGVmdCgpIGNvbnN0CiB7CiAvLyBSVEwgU2Nyb2xsYmFycyByZXF1aXJlIHNvbWUgc3lzdGVt
IHN1cHBvcnQsIGFuZCB0aGlzIHN5c3RlbSBzdXBwb3J0IGRvZXMgbm90IGV4aXN0IG9uIGNlcnRh
aW4gdmVyc2lvbnMgb2YgT1MgWC4gaU9TIHVzZXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20uCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGZhbHNl
OwogI2Vsc2UKICAgICBzd2l0Y2ggKHNldHRpbmdzKCkudXNlckludGVyZmFjZURpcmVjdGlvblBv
bGljeSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVk
ZSAiU2VsZWN0aW9uUmVjdC5oIgogI2VuZGlmCiAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFJl
bmRlckxpbmVCcmVhazo6dXBkYXRlRnJvbVN0eWxlKCkKICAgICBtX2NhY2hlZExpbmVIZWlnaHQg
PSBpbnZhbGlkTGluZUhlaWdodDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25SZWN0
cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCwgdW5zaWduZWQpCiB7CiAg
ICAgZW5zdXJlTGluZUJveGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
IG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
dm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBlbnN1cmVM
aW5lQm94ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQAogI2luY2x1
ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgogI2VuZGlmCiAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck1lbnVMaXN0KTsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHNp
emVfdCBzZWxlY3RlZE9wdGlvbkNvdW50KGNvbnN0IFJlbmRlck1lbnVMaXN0JiByZW5kZXJNZW51
TGlzdCkKIHsKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gcmVu
ZGVyTWVudUxpc3Quc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygpOwpAQCAtNzcsNyArNzcsNyBA
QCBSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjCiAgICAgOiBSZW5kZXJG
bGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNPcHRpb25z
V2lkdGhVcGRhdGUodHJ1ZSkKICAgICAsIG1fb3B0aW9uc1dpZHRoKDApCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fcG9wdXBJc1Zpc2libGUo
ZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTkwLDcgKzkwLDcgQEAgUmVuZGVyTWVudUxpc3Q6On5SZW5k
ZXJNZW51TGlzdCgpCiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OndpbGxCZURlc3Ryb3llZCgpCiB7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
bV9wb3B1cCkKICAgICAgICAgbV9wb3B1cC0+ZGlzY29ubmVjdENsaWVudCgpOwogICAgIG1fcG9w
dXAgPSBudWxscHRyOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFk
anVzdElubmVyU3R5bGUoKQogICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxp
Z25Nb2RlOjpMZWZ0KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0
b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkg
PT0gVV9SSUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246
OkxUUjsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgaWYgKGRv
Y3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVX
cml0aW5nRGlyZWN0aW9uKCkpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5
bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBUZXh0QWxpZ25Nb2RlOjpM
ZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQpOwogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5l
clN0eWxlKCkKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24obV9vcHRpb25TdHlsZS0+
ZGlyZWN0aW9uKCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldFVuaWNvZGVCaWRpKG1fb3B0aW9u
U3R5bGUtPnVuaWNvZGVCaWRpKCkpOwogICAgIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiBIVE1MU2VsZWN0RWxlbWVudCYg
UmVuZGVyTWVudUxpc3Q6OnNlbGVjdEVsZW1lbnQoKSBjb25zdApAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgbV9uZWVk
c09wdGlvbnNXaWR0aFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcG9wdXBJc1Zpc2libGUpCiAg
ICAgICAgIG1fcG9wdXAtPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgZWxzZQpAQCAtMjU2LDcg
KzI1Niw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKGkKICAgICAg
ICAgfQogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChtdWx0aXBsZSgpKSB7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IHNlbGVjdGVk
T3B0aW9uQ291bnQoKnRoaXMpOwogICAgICAgICBpZiAoY291bnQgIT0gMSkKQEAgLTM0NCw3ICsz
NDQsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRlUHJlZmVycmVkTG9nCiAgICAgc2V0
UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKIHZv
aWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiB7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6aGlk
ZVBvcHVwKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChtX3BvcHVwKQogICAgICAgICBtX3BvcHVwLT5oaWRlKCk7CiAjZW5kaWYKQEAg
LTYxMSw3ICs2MTEsNyBAQCBpbnQgUmVuZGVyTWVudUxpc3Q6OnNlbGVjdGVkSW5kZXgoKSBjb25z
CiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnBvcHVwRGlkSGlkZSgpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3BvcHVwSXNWaXNpYmxlID0g
ZmFsc2U7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHBvcHVw
SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cElzVmlzaWJsZTsgfQogI2VuZGlmCiAg
ICAgdm9pZCBzaG93UG9wdXAoKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX29wdGlvblN0eWxlOwogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWZQdHI8UG9wdXBNZW51
PiBtX3BvcHVwOwogICAgIGJvb2wgbV9wb3B1cElzVmlzaWJsZTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIK
ICNlbmRpZgogCkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVS
TFJlY3QoUGFpbnRJbgogCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC8vIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gUmVuZGVy
VGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlLCBidXQgcmV0dXJucyByZWN0YW5nbGVzCiAvLyB3
aGljaCBhcmUgYW5ub3RhdGVkIHdpdGggYWRkaXRpb25hbCBzdGF0ZSB3aGljaCBoZWxwcyBpT1Mg
ZHJhdyBzZWxlY3Rpb25zIGluIGl0cyB1bmlxdWUgd2F5LgogLy8gTm8gYW5ub3RhdGlvbnMgYXJl
IGFkZGVkIGluIHRoaXMgY2xhc3MuCkBAIC05NjQsNyArOTY0LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvdwogCiBib29sIFJlbmRlck9iamVjdDo6c2hvdWxkQXBw
bHlDb21wb3NpdGVkQ29udGFpbmVyU2Nyb2xsc0ZvclJlcGFpbnQoKQogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBmYWxzZTsKICNlbHNl
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6ZGVzdHJveSgpCiAKICAgICBtX2JpdGZpZWxkcy5zZXRCZWluZ0Rlc3Ryb3llZCh0cnVlKTsK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICho
YXNMYXllcigpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnRoaXMp
LmxheWVyKCktPndpbGxCZURlc3Ryb3llZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEzICs2
OSwxMyBAQCBjbGFzcyBTZWxlY3Rpb25SYW5nZURhdGE7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogY2xhc3MgU2VsZWN0aW9uUmVjdDsKICNlbmRpZgogCiBzdHJ1Y3QgUGFp
bnRJbmZvOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBj
b25zdCBpbnQgY2FyZXRXaWR0aCA9IDI7IC8vIFRoaXMgdmFsdWUgc2hvdWxkIGJlIGtlcHQgaW4g
c3luYyB3aXRoIFVJS2l0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE1NTgwNjAxPi4KICNlbHNlCiBj
b25zdCBpbnQgY2FyZXRXaWR0aCA9IDE7CkBAIC02MDcsNyArNjA3LDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBj
aGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUg
dHJhbnNmb3Jtcy4KICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihS
ZW5kZXJFbGVtZW50JikgY29uc3Q7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3Rv
cjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5k
T2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclNlbGVjdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMpIGNvbnN0IHsgYWJzb2x1dGVRdWFkcyhxdWFkcyk7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVs
ZDo6dmFsdWVDaGFuZ2VkKHVucwogCiBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGludCBzaXplID0gbGlzdFNpemUoKTsKICAgICBpZiAo
c2l6ZSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbGlzdEluZGV4KTsKQEAgLTIzOSw3ICsyMzks
NyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnCiAjZW5kaWYKICAg
ICBpZiAoaXRlbUlzU2VwYXJhdG9yKGxpc3RJbmRleCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KGxpc3RJbmRleCkgPT0gKHNpemUgLSAxKSkKICAgICAgICAgcmV0
dXJuIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZz
ZXRDYWNoZXMuaCIKQEAgLTMzOCw3ICszMzgsNyBAQCBWZWN0b3I8SW50UmVjdD4gUmVuZGVyVGV4
dDo6YWJzb2x1dGVSZWN0CiAgICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUmVjdHNGb3JS
YW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gYWRkTGluZUJveFJlY3RzLCBidXQgcmV0
dXJucyByZWN0YW5nbGVzCiAvLyB3aGljaCBhcmUgYW5ub3RhdGVkIHdpdGggYWRkaXRpb25hbCBz
dGF0ZSB3aGljaCBoZWxwcyB0aGUgaVBob25lIGRyYXcgc2VsZWN0aW9ucyBpbiBpdHMgdW5pcXVl
IHdheS4KIC8vIEZ1bGwgYW5ub3RhdGlvbnMgYXJlIGFkZGVkIGluIHRoaXMgY2xhc3MuCkBAIC0x
MTY2LDcgKzExNjYsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dChjb25zdCBT
CiAgICAgc3dpdGNoIChzdHlsZSgpLnRleHRTZWN1cml0eSgpKSB7CiAgICAgY2FzZSBUZXh0U2Vj
dXJpdHk6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNoYXJhY3RlcnMgaGVy
ZSBhcyBmb3IgbGlzdCBtYXJrZXJzLgogICAgIC8vIFNlZSB0aGUgbGlzdE1hcmtlclRleHQgZnVu
Y3Rpb24gaW4gUmVuZGVyTGlzdE1hcmtlci5jcHAuCiAgICAgY2FzZSBUZXh0U2VjdXJpdHk6OkNp
cmNsZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdCBmaW5hbDsKICAgICBWZWN0b3I8SW50UmVjdD4gYWJzb2x1dGVSZWN0c0ZvclJhbmdl
KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgs
IGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0
cikgY29uc3Q7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5z
aWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGZpbmFsOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6
OmxheW91dEV4Y2x1ZGVkQ2gKICAgICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgUmVuZGVyVGV4dENvbnRyb2w6OmNhblNjcm9sbCgpIGNv
bnN0CiB7CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRGb3JtQ29udHJvbEVsZW1lbnQo
KSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgY2FuU2Nyb2xsKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBsaW5lIGhl
aWdodCBvZiB0aGUgaW5uZXIgcmVuZGVyZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6bm9kZUF0UAogCiBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6Z2V0QXZlcmFnZUNoYXJXaWR0aCgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTaW5jZSBMdWNpZGEgR3JhbmRlIGlzIHRo
ZSBkZWZhdWx0IGZvbnQsIHdlIHdhbnQgdGhpcyB0byBtYXRjaCB0aGUgd2lkdGgKICAgICAvLyBv
ZiBDb3VyaWVyIE5ldywgdGhlIGRlZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIElFLCBGaXJl
Zm94IGFuZCBTYWZhcmkgV2luLgogICAgIC8vIDEyMjkgaXMgdGhlIGF2Z0NoYXJXaWR0aCB2YWx1
ZSBpbiB0aGUgT1MvMiB0YWJsZSBmb3IgQ291cmllciBOZXcuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0
YXRzLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bmNsdWRlICJSZW5kZXJUaGVtZUlPUy5oIgogI2VuZGlmCiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2
b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0CiAgICAgICAgICAgICBjb21w
dXRlT3ZlcmZsb3coY2xpZW50TG9naWNhbEJvdHRvbSgpKTsKICAgICB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBiZSBhZGp1c3Rpbmcgc3R5bGVzIGR1cmluZyBsYXlvdXQuIDxyZGFyOi8vcHJvYmxlbS83
Njc1NDkzPgogICAgIGlmIChpbnB1dEVsZW1lbnQoKS5pc1NlYXJjaEZpZWxkKCkpCiAgICAgICAg
IFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhtdXRhYmxlU3R5bGUoKSwg
KnRoaXMpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjoKIAogZmxvYXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpnZXRBdmVy
YWdlQ2hhcldpZHRoKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIFNpbmNlIEx1Y2lkYSBHcmFuZGUgaXMgdGhlIGRlZmF1bHQgZm9udCwg
d2Ugd2FudCB0aGlzIHRvIG1hdGNoIHRoZSB3aWR0aAogICAgIC8vIG9mIE1TIFNoZWxsIERsZywg
dGhlIGRlZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIEZpcmVmb3gsIFNhZmFyaSBXaW4gYW5k
CiAgICAgLy8gSUUgZm9yIHNvbWUgZW5jb2RpbmdzIChpbiBJRSwgdGhlIGRlZmF1bHQgZm9udCBp
cyBlbmNvZGluZyBzcGVjaWZpYykuCkBAIC0yOTIsNyArMjkyLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OgogCiAgICAgZmxvYXQgbWF4Q2hhcldpZHRoID0gMC5m
OwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5maXJzdEZh
bWlseSgpOwogICAgIC8vIFNpbmNlIEx1Y2lkYSBHcmFuZGUgaXMgdGhlIGRlZmF1bHQgZm9udCwg
d2Ugd2FudCB0aGlzIHRvIG1hdGNoIHRoZSB3aWR0aAogICAgIC8vIG9mIE1TIFNoZWxsIERsZywg
dGhlIGRlZmF1bHQgZm9udCBmb3IgdGV4dGFyZWFzIGluIEZpcmVmb3gsIFNhZmFyaSBXaW4gYW5k
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94
ZXMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dExpbmVCb3hlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCBz
dGF0aWMgYm9vbCBsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3goCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJp
Z2h0IGVkZ2Ugb2YgdGhpcyBib3gKICAgICAvLyBjaGVjayB0byBzZWUgaWYgcG9zaXRpb24gZ29l
cyBpbiB0aGlzIGJveAogICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gPCBib3gubG9naWNhbFJp
Z2h0KCkpIHsKQEAgLTQxNiw3ICs0MTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dExp
bmVCb3hlczo6cG9zCiAKICAgICAgICAgICAgIGlmIChwb2ludEJsb2NrRGlyZWN0aW9uIDwgYm90
dG9tIHx8IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50QmxvY2tEaXJlY3Rpb24gPT0gYm90dG9t
KSkgewogICAgICAgICAgICAgICAgIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHNob3VsZEFm
ZmluaXR5QmVEb3duc3RyZWFtOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAgICAgICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gIT0gYm94LT5s
b2dpY2FsTGVmdCgpICYmIHBvaW50LngoKSA8IGJveC0+eCgpICsgYm94LT5sb2dpY2FsV2lkdGgo
KSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgaGFsZiA9IGJveC0+eCgpICsgYm94LT5sb2dp
Y2FsV2lkdGgoKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgIEVBZmZpbml0eSBhZmZpbml0eSA9
IHBvaW50LngoKSA8IGhhbGYgPyBET1dOU1RSRUFNIDogVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0OCw3ICs0NDgsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEJv
cmRlck9ubHkoY29uc3QgCiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0ocmVjdCk7CiAgICAgcmV0dXJu
IGJveC5zdHlsZSgpLmFwcGVhcmFuY2UoKSAhPSBOb0NvbnRyb2xQYXJ0OwogI2Vsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVD
b2NvYS5oIgogCkBAIC0xNzIsNCArMTcyLDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVu
ZGVyVGhlbWVJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW1wb3J0ICJCaXRtYXBJbWFnZS5oIgogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKQEAgLTE4NTYsNyArMTg1Niw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6ZXh0cmFE
ZWZhdWx0U3R5bGUKIHN0YXRpYyBOU0J1bmRsZSAqYXJLaXRCdW5kbGUoKQogewogICAgIHN0YXRp
YyBOU0J1bmRsZSAqYXJLaXRCdW5kbGUgPSBbXSgpIHsKLSNpZiBQTEFURk9STShJT1NfU0lNVUxB
VE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgICAgICBkbG9wZW4o
Ii9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsv
QXNzZXRWaWV3ZXIiLCBSVExEX05PVyk7CiAgICAgICAgIHJldHVybiBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJBU1ZUaHVtYm5haWxWaWV3IildOwogI2Vsc2UK
QEAgLTIwMzgsNCArMjAzOCw0IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJl
dmlld0IKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy9QTEFURk9STShJT1Mp
CisjZW5kaWYgLy9QTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJWaWV3OjphdmFpbGFibGVMb2dpY2FsSAogICAgIGlmIChtdWx0
aUNvbHVtbkZsb3coKSAmJiBtdWx0aUNvbHVtbkZsb3coKS0+Zmlyc3RNdWx0aUNvbHVtblNldCgp
KQogICAgICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93KCktPmZpcnN0TXVsdGlDb2x1bW5TZXQo
KS0+Y29tcHV0ZWRDb2x1bW5IZWlnaHQoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83
MTY2ODA4Pi4KICAgICBpZiAoZG9jdW1lbnQoKS5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZnJhbWVW
aWV3KCkudXNlRml4ZWRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldygpLmZpeGVk
TGF5b3V0U2l6ZSgpLmhlaWdodCgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIExheW91dFVuaXQgUmVu
ZGVyVmlldzo6Y2xpZW50TG9naWNhbFdpZHQKICAgICBpZiAoZnJhbWVWaWV3KCkuZml4ZWRFbGVt
ZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpKQogICAgICAgICByZXR1cm4gKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBmcmFtZVZpZXcoKS52aXNpYmxlV2lkdGgoKSA6IGZyYW1lVmlldygp
LnZpc2libGVIZWlnaHQoKSkgLyBmcmFtZVZpZXcoKS5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3Io
KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChmcmFtZVZpZXcoKS51c2VDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpKQogICAgICAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lVmlldygpLmN1c3RvbUZp
eGVkUG9zaXRpb25MYXlvdXRSZWN0KCkud2lkdGgoKSA6IGZyYW1lVmlldygpLmN1c3RvbUZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0KCkuaGVpZ2h0KCk7CiAjZW5kaWYKQEAgLTI4Miw3ICsyODIsNyBA
QCBMYXlvdXRVbml0IFJlbmRlclZpZXc6OmNsaWVudExvZ2ljYWxIZWlnCiAgICAgaWYgKGZyYW1l
VmlldygpLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVWaWV3KCkudmlzaWJsZUhlaWdo
dCgpIDogZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCkpIC8gZnJhbWVWaWV3KCkuZnJhbWUoKS5m
cmFtZVNjYWxlRmFjdG9yKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoZnJhbWVWaWV3KCkudXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91
dFJlY3QoKSkKICAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFt
ZVZpZXcoKS5jdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpLmhlaWdodCgpIDogZnJhbWVW
aWV3KCkuY3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKS53aWR0aCgpOwogI2VuZGlmCkBA
IC01MTQsNyArNTE0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShj
bwogICAgICAgICBpZiAoIW93bmVyQm94KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBM
YXlvdXRSZWN0IHZpZXdSZWN0ID0gdGhpcy0+dmlld1JlY3QoKTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gRG9uJ3QgY2xpcCB1c2luZyB0
aGUgdmlzaWJsZSByZWN0IHNpbmNlIGNsaXBwaW5nIGlzIGhhbmRsZWQgYXQgYSBoaWdoZXIgbGV2
ZWwgb24gaVBob25lLgogICAgICAgICBMYXlvdXRSZWN0IGFkanVzdGVkUmVjdCA9IGVuY2xvc2lu
Z1JlY3Q7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIFJlbmRlcldpZGdl
dDo6UmVuZGVyV2lkZ2V0KEhUTUxGcmFtZU93bmUKIAogdm9pZCBSZW5kZXJXaWRnZXQ6OndpbGxC
ZURlc3Ryb3llZCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKGhhc0xheWVyKCkpCiAgICAgICAgIGxheWVyKCktPndpbGxCZURlc3Ryb3ll
ZCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCBMYXlvdXRV
bml0IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCgpCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5
bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBzZWxlY3Rp
b25Ub3A7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIFNlZSByZGFyOi8vcHJvYmxlbS8xOTY5MjIwNiAuLi4gZG9uJ3Qgd2FudCB0byBkbyB0
aGlzIGFkanVzdG1lbnQgZm9yIGlPUyB3aGVyZSBvdmVybGFwIGlzIG9rIGFuZCBoYW5kbGVkLgog
ICAgIGlmIChyZW5kZXJlcigpLmlzUnVieUJhc2UoKSkgewogICAgICAgICAvLyBUaGUgcnVieSBi
YXNlIHNlbGVjdGlvbiBzaG91bGQgYXZvaWQgaW50cnVkaW5nIGludG8gdGhlIHJ1YnkgdGV4dC4g
VGhpcyBpcyBvbmx5IHRoZSBjYXNlIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBydWJ5IHRleHQgYWJv
dmUgdXMuCkBAIC02OTcsNyArNjk3LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxl
Y3Rpb25Cb3R0bwogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSB8fCAhbmV4dFJvb3RCb3goKSkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkJv
dHRvbTsKICAgICAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFNlZSByZGFyOi8vcHJvYmxlbS8xOTY5MjIwNiAuLi4gZG9uJ3Qgd2FudCB0byBk
byB0aGlzIGFkanVzdG1lbnQgZm9yIGlPUyB3aGVyZSBvdmVybGFwIGlzIG9rIGFuZCBoYW5kbGVk
LgogICAgIGlmIChyZW5kZXJlcigpLmlzUnVieUJhc2UoKSkgewogICAgICAgICAvLyBUaGUgcnVi
eSBiYXNlIHNlbGVjdGlvbiBzaG91bGQgYXZvaWQgaW50cnVkaW5nIGludG8gdGhlIHJ1YnkgdGV4
dC4gVGhpcyBpcyBvbmx5IHRoZSBjYXNlIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBydWJ5IHRleHQg
YmVsb3cgdXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxOSw3ICs3MTksNyBAQCBwdWJs
aWM6CiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJ
bmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHRvdWNoQ2FsbG91dEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50b3VjaENhbGxvdXRF
bmFibGVkOyB9CiAjZW5kaWYKIApAQCAtMTIyOCw3ICsxMjI4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRUb3VjaENh
bGxvdXRFbmFibGVkKGJvb2wgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRvdWNo
Q2FsbG91dEVuYWJsZWQsIHYpOyB9CiAjZW5kaWYKIApAQCAtMTY1MCw3ICsxNjUwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkgeyByZXR1
cm4gTGluZUNsYW1wVmFsdWUoKTsgfQogICAgIHN0YXRpYyBUZXh0U2VjdXJpdHkgaW5pdGlhbFRl
eHRTZWN1cml0eSgpIHsgcmV0dXJuIFRleHRTZWN1cml0eTo6Tm9uZTsgfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlh
bFRvdWNoQ2FsbG91dEVuYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUkK
ICAgICB1bnNpZ25lZCB1bnNpZ25lZHNbMV07CiAgICAgc2hvcnQgaHlwaGVuYXRpb25TaG9ydHNb
M107CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBD
b2xvciBjb21wb3NpdGlvbkNvbG9yOyAvLyBGSVhNRTogdGhpcyBoYXMgZ29uZS4KICNlbmRpZgog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMTksNyArMTE5LDcgQEAgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgdGV4dFVuZGVybGluZVBvc2l0
aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkudG9SYXcoKSkK
ICAgICAsIHJ1YnlQb3NpdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6Omlu
aXRpYWxSdWJ5UG9zaXRpb24oKSkpCiAgICAgLCB0ZXh0Wm9vbShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKSkKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoUmVuZGVy
U3R5bGU6OmluaXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTX1RSQUlMSU5HX1dPUkQpCkBAIC0yMTIsNyArMjEyLDcgQEAgaW5saW5lIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZQogICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKG8udGV4
dFVuZGVybGluZVBvc2l0aW9uKQogICAgICwgcnVieVBvc2l0aW9uKG8ucnVieVBvc2l0aW9uKQog
ICAgICwgdGV4dFpvb20oby50ZXh0Wm9vbSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoby50b3VjaENhbGxvdXRF
bmFibGVkKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQpAQCAtMzA0LDcg
KzMwNCw3IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSgKICAgICAg
ICAgJiYgdGV4dEluZGVudFR5cGUgPT0gby50ZXh0SW5kZW50VHlwZQogI2VuZGlmCiAgICAgICAg
ICYmIGxpbmVCb3hDb250YWluID09IG8ubGluZUJveENvbnRhaW4KLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgJiYgdG91Y2hDYWxsb3V0RW5hYmxl
ZCA9PSBvLnRvdWNoQ2FsbG91dEVuYWJsZWQKICNlbmRpZgogICAgICAgICAmJiBoeXBoZW5hdGlv
blN0cmluZyA9PSBvLmh5cGhlbmF0aW9uU3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCiAgICAgdW5z
aWduZWQgdGV4dFpvb206IDE7IC8vIFRleHRab29tCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1bnNpZ25lZCB0b3VjaENhbGxvdXRFbmFibGVkIDog
MTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwxNCBAQAogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29s
dmVyLmgiCiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0
aW9uLmgiCiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogY2xhc3MgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIHsKIHB1YmxpYzoK
ICAgICBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoY29uc3QgRWxlbWVudCYpOwpAQCAtNjgsNyAr
NjgsNyBAQCBwcml2YXRlOgogICAgIFZpc2liaWxpdHkgbV9wcmV2aW91c1Zpc2liaWxpdHk7CiAg
ICAgVmlzaWJpbGl0eSBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5OwogfTsKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogUmVuZGVy
VHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgOiBl
bGVtZW50KGlzPERvY3VtZW50Pihyb290KSA/IG51bGxwdHIgOiBkb3duY2FzdDxFbGVtZW50Pigm
cm9vdCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRl
UmVuZGVyZXJTdAogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVy
ZXIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUmIHVwZGF0ZSkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDaGVj
a0ZvclZpc2liaWxpdHlDaGFuZ2UgY2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlKGVsZW1lbnQpOwog
I2VuZGlmCiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBSZW5kZXJWaWV3JiBSZW5kZXJUcmVlVXBkYXRl
cjo6cmVuZGVyVmllCiAgICAgcmV0dXJuICptX2RvY3VtZW50LnJlbmRlclZpZXcoKTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIFZpc2li
aWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIFJlbmRlclN0eWxlIHJlc29s
dmVGb3JEb2N1bWVudChjb25zdCBEb2MKIAogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFueSAtd2Vi
a2l0LXVzZXItbW9kaWZ5IGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgaWZyYW1lLgogICAgIGRv
Y3VtZW50U3R5bGUuc2V0VXNlck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSA/IFVzZXJN
b2RpZnk6OlJlYWRXcml0ZSA6IFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZG9jdW1lbnQuaW5EZXNpZ25N
b2RlKCkpCiAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVB
ZGp1c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5NSw3ICszMDk1
LDcgQEAgdW5zaWduZWQgSW50ZXJuYWxzOjpsYXlvdXRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJu
IGRvY3VtZW50LT52aWV3KCktPmxheW91dENvbnRleHQoKS5sYXlvdXRDb3VudCgpOwogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25z
dCBjaGFyKiBjdXJzb3JUeXBlVG9TdHJpbmcoQ3Vyc29yOjpUeXBlIGN1cnNvclR5cGUpCiB7CiAg
ICAgc3dpdGNoIChjdXJzb3JUeXBlKSB7CkBAIC0zMTU2LDcgKzMxNTYsNyBAQCBFeGNlcHRpb25P
cjxTdHJpbmc+IEludGVybmFsczo6Z2V0Q3VycmVuCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNz
RXJyb3IgfTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQ3Vyc29yIGN1cnNvciA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5j
dXJyZW50TW91c2VDdXJzb3IoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwpAQCAtMzM0
Nyw3ICszMzQ3LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKEhUTQog
ICAgIGlmICghaXM8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcikucG9wdXBJc1Zpc2li
bGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM0Miw3ICs0MzQyLDcgQEAgVmVj
dG9yPFN0cmluZz4gSW50ZXJuYWxzOjphY2Nlc3NLZXlNb2RpZgogCiB2b2lkIEludGVybmFsczo6
c2V0UXVpY2tMb29rUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKLSNpZiBQTEFU
Rk9STShJT1MpICYmIFVTRShRVUlDS19MT09LKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IFVTRShRVUlDS19MT09LKQogICAgIGF1dG8mIHF1aWNrTG9va0hhbmRsZUNsaWVudCA9IE1vY2tQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKTsKICAgICBQcmV2aWV3TG9hZGVyOjpzZXRD
bGllbnRGb3JUZXN0aW5nKCZxdWlja0xvb2tIYW5kbGVDbGllbnQpOwogICAgIHF1aWNrTG9va0hh
bmRsZUNsaWVudC5zZXRQYXNzd29yZChwYXNzd29yZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQg
IldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GUkFN
RVdPUksoVUlLaXQpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90
aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKICNlbmRpZgpAQCAtNDksNyArNDksNyBAQCBT
dHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zCiAKIGJvb2wgSW50ZXJuYWxz
Ojp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBVSUFjY2Vzc2liaWxpdHlJc1Jl
ZHVjZU1vdGlvbkVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hh
cmVkV29ya3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0UHJlZml4LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxOSAr
MTEzLDE5IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxzZQotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8Q29yZVNlcnZp
Y2VzL0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2VuZGlmCiAK
ICNpZmRlZiBfX09CSkNfXwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjZWxzZQogI2ltcG9ydCA8
Q29jb2EvQ29jb2EuaD4KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZVRocmVhZC5oIgogI2VuZGlmCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CiAKICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdv
cmtlcnMuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
RmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaW5nbGV0b24oKS5wcm9wYWdhdGVNYWluVGhyZWFk
RW52aXJvbm1lbnQoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NDQg
QEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmlzU2FmZVRvVXNlTWVtb3J5
TWFwRm9yUGF0aCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZv
clNhbWVTaXRlQ29va2llcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgt
W1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVj
dGluZ01ldHJpY3M6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
UHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
bW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0
aW9uVGVybWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpBY2Nlc3NpYmlsaXR5UHJvY2Vz
c1N1c3BlbmRlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vaW9zL0FjY2Vzc2li
aWxpdHlJT1MubW06CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJ
ZGVudGl0eVNQSS5oOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg6
CisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9Gcm9udEJvYXJkU2VydmljZXNTUEkuaDoKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzU2hpbS5tbToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0NvY29hL1dLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQ29jb2EvV2ViS2l0Lm06CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvQ2FjaGVNb2RlbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmNhbGN1bGF0ZVVSTENhY2hlU2l6ZXMpOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nl
c3MuY3BwOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChB
UEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViS2l0Mklu
aXRpYWxpemVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6cnVuSW5pdGlhbGl6YXRpb25Db2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmg6CisgICAgICAgICogU2hhcmVk
L0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6
CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBD
U2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFs
aXplckRlbGVnYXRlOjpjaGVja0VudGl0bGVtZW50cyk6CisgICAgICAgICogU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQv
UHJpbnRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpbnRJbmZvOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpQcmludEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1ByaW50SW5mby5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVTdGF0ZTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJF
dmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3Vj
aEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChkZWZhdWx0UGFzc2l2ZVRvdWNoTGlzdGVu
ZXJzQXNEZWZhdWx0T25Eb2N1bWVudCk6CisgICAgICAgIChkZWZhdWx0Q3VzdG9tUGFzdGVib2Fy
ZERhdGFFbmFibGVkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwOgorICAgICAgICAqIFNoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5oOgor
ICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIFNoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAqIFNo
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwOgorICAgICAgICAqIFNo
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKiBTaGFy
ZWQvaW9zL05hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW06CisgICAgICAgICogU2hhcmVkL2lv
cy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAqIFNoYXJlZC9pb3MvTmF0aXZl
V2ViVG91Y2hFdmVudElPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFj
dG9yeS5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tOgorICAg
ICAgICAqIFNoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9p
b3MvV2ViSWNvblV0aWxpdGllcy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hh
cmVkL21hYy9TZWNJdGVtU2hpbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTZWNJ
dGVtU2hpbSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0SXNQbHVn
SW5VcGRhdGVBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAg
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIGRlc2NyaXB0aW9uXSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRp
ZmllcnMubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdFbGVtZW50
SW5mby5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1t
OgorICAgICAgICAoSUdOT1JFX1dBUk5JTkdTX0JFR0lOKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Bs
dWdpblByb2Nlc3NDb3VudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8pOgor
ICAgICAgICAodmFsaWRhdGUpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRVcFNRTGl0ZURhdGFi
YXNlVHJhY2tlckNsaWVudF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgYWxsb3dzTGlua1ByZXZpZXddKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvdW50
U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9o
aWRlRmluZFVJXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsUGVyZm9ybWFuY2VEYXRh
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXli
YWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJm
YWNlSXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlOndpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6d2l0aG91dFdhaXRpbmdG
b3JBbmltYXRlZFJlc2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gaW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGVuY29kZVdp
dGhDb2RlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0V2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpd
KToKKyAgICAgICAgKGRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW06Cisg
ICAgICAgICgtW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIF9pbml0V2l0aFR5cGU6VVJMOmxvY2F0
aW9uOnRpdGxlOklEOnJlY3Q6aW1hZ2U6dXNlckluZm86XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpo
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNo
b3VsZEJlQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9j
ZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTGF5ZXJSZXByZXNlbnRhdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hh
bmdlSXNMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06Cisg
ICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktp
dDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLm1tOgorICAgICAgICAoV2Vi
S2l0OjpsaW5rZWRPbk9yQWZ0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRU
b1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFy
ZVNoZWV0Lm1tOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW06CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9i
c2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9V
SUdhbWVwYWRQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvR2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW06CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OnNob3VsZExlYWtCb29zdCk6CisgICAgICAgIChXZWJLaXQ6OnN5c3RlbURpcmVjdG9yeVBh
dGgpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b2Nlc3NBc3NlcnRpb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OmNvbW1pdExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OmluZGljYXRvckxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWZy
ZXNoRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxp
bmdUcmVlTm9kZURpZFNjcm9sbCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW06CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbWFnZVBy
ZXZpZXdWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XS0ltYWdlUHJldmll
d1ZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hs
aWdodFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3
Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVy
bmFsOjpidWlsZEF1dGhEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6
Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29u
bmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENv
bm5lY3Rpb246OmdldEF0dGVzdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmll
d0RpZExlYXZlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVU
aHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGl0
RnVsbHNjcmVlbkltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRGlkU2Ny
b2xsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFzQWN0aXZlVmlkZW9Gb3JD
b250cm9sc01hbmFnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RDb250cm9sbGVkRWxlbWVudElEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRp
b25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzTWFp
blRocmVhZE9yQ2hlY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRTZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6ZGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
U3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
TGF5ZXJSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2VJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2Vy
SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0
aW9uU3RhdGVUcmFja2luZ1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3Vy
aXR5T3JpZ2luLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
UERGUGFnZU51bWJlckluZGljYXRvci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUGFz
c3dvcmRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTeW50
aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIubToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLV2ViRXZlbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLV2ViRXZl
bnQubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtSW5wdXRDb250cm9sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1JbnB1dENvbnRyb2wubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Q
b3BvdmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
Y3BwOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVGcmFtZVN0YXRlTm9kZSk6CisgICAgICAgIChX
ZWJLaXQ6OmRlY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9FbnRyeVBv
aW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAg
ICAgKFdlYkNvbnRlbnRTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjp2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbFNjcmVl
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxT
Y3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJh
bm5lck1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRF
ZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9GcmFtZVN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6YXBwbHlGcmFtZVN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5
b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVWaWV3U3Rh
dGVUb0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzdG9y
ZVZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1t
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkZyYW1lTG9hZGVy
Q2xpZW50SU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRy
b2xsZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4
cG9zZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OmRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2NwdUxpbWl0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
Y2FsZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbENvbW1pdExh
eWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZsdXNoTGF5ZXJUcmVlQXRU
aW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2ls
bFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRD
b21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
U2Nyb2xsZWRFeHBvc2VkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
cm9jZXNzRGlkUmVzdW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdl
YktpdDo6cmVnaXN0ZXJXaXRoQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltTGlicmFyeS5tbToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxOC0x
MC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtQU09OXSBD
YXAgbnVtYmVyIG9mIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzIGFuZCBhbGxvdyBhIFdlYlBh
Z2VQcm94eSB0byBoYXZlIG1vcmUgdGhhbiBvbmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjYzLDcgKzI2Myw3IEBAIEFVVE9NQVRJT05fUFJPVE9D
T0xfT1VUUFVUX0ZJTEVTID0gXAogIwogCiBpZmVxICgkKE9TKSxNQUNPUykKLWlmZXEgKCQoc2hl
bGwgJChDQykgLXN0ZD1nbnUrKzE0IC14IGMrKyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFS
R0VUX1RSSVBMRV9GTEFHUykgJChGUkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5j
bHVkZSAid3RmL1BsYXRmb3JtLmgiIC9kZXYvbnVsbCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9T
ICcgfCBjdXQgLWQnICcgLWYzKSwgMSkKK2lmZXEgKCQoc2hlbGwgJChDQykgLXN0ZD1nbnUrKzE0
IC14IGMrKyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoVEFSR0VUX1RSSVBMRV9GTEFHUykgJChG
UkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgi
IC9kZXYvbnVsbCB8IGdyZXAgJyBXVEZfUExBVEZPUk1fSU9TX0ZBTUlMWSAnIHwgY3V0IC1kJyAn
IC1mMyksIDEpCiAJQVVUT01BVElPTl9CQUNLRU5EX1BMQVRGT1JNX0FSR1VNRU5UUyA9IC0tcGxh
dGZvcm0gaU9TCiBlbHNlCiAJQVVUT01BVElPTl9CQUNLRU5EX1BMQVRGT1JNX0FSR1VNRU5UUyA9
IC0tcGxhdGZvcm0gbWFjT1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jb25maWcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2RlZmlu
ZSBQTFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVkIFBMVUdJTl9BUkNISVRFQ1RVUkVf
IyNBUkNIICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKQogCiAjaWZuZGVmIEVOQUJMRV9T
RUNfSVRFTV9TSElNCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfU0VDX0lU
RU1fU0hJTSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtNzcsMTQgKzc3LDE0IEBACiAjZGVmaW5lIFVT
RV9DUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04gMQogI2VuZGlmCiAKLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogI2lmbmRlZiBFTkFCTEVfU0VS
VkVSX1BSRUNPTk5FQ1QKICNkZWZpbmUgRU5BQkxFX1NFUlZFUl9QUkVDT05ORUNUIDEKICNlbmRp
ZgogI2VuZGlmCiAKICNpZm5kZWYgSEFWRV9TRUNfQUNDRVNTX0NPTlRST0wKLSNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFU
Rk9STShNQUMpCiAjZGVmaW5lIEhBVkVfU0VDX0FDQ0VTU19DT05UUk9MIDEKICNlbmRpZgogI2Vu
ZGlmCkBAIC0xMDQsNyArMTA0LDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIEhBVkVfU0FGQVJJX1NF
UlZJQ0VTX0ZSQU1FV09SSwotI2lmIFBMQVRGT1JNKElPUykgJiYgKCFkZWZpbmVkIFRBUkdFVF9P
U19JT1MgfHwgVEFSR0VUX09TX0lPUykgJiYgIVBMQVRGT1JNKElPU01BQykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAoIWRlZmluZWQgVEFSR0VUX09TX0lPUyB8fCBUQVJHRVRfT1NfSU9T
KSAmJiAhUExBVEZPUk0oSU9TTUFDKQogI2RlZmluZSBIQVZFX1NBRkFSSV9TRVJWSUNFU19GUkFN
RVdPUksgMQogI2Vsc2UKICNkZWZpbmUgSEFWRV9TQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLIDAK
QEAgLTExOSw3ICsxMTksNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmICgoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkg
JiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgKChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKSkgJiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCiAj
ZGVmaW5lIEhBVkVfU0FGRV9CUk9XU0lORyAxCiAjZWxzZQogI2RlZmluZSBIQVZFX1NBRkVfQlJP
V1NJTkcgMApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZp
dHlUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpKQorI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FU
Q0hPUykpCiAjZGVmaW5lIEhBVkVfTldfQUNUSVZJVFkgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5l
Y3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24+JiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVu
dGlmaWVyOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBkZWZhdWx0U2Vzc2lvblBlbmRpbmdDb29r
aWVzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVu
Y29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNv
ZGVyIDw8IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNv
ZGVyIDw8IHBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29k
ZXIgPDwgdWlQcm9jZXNzU0RLVmVyc2lvbjsKICAgICBlbmNvZGVyIDw8IHNvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBlbmNvZGVyIDw8IGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICNlbmRp
ZgogICAgIGVuY29kZXIgPDwgaHR0cFByb3h5OwpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICNlbmRpZgogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmRlZmF1bHRTZXNzaW9uUGVuZGluZ0Nvb2tpZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIAogICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3NDb29raWVTdG9y
YWdlSWRlbnRpZmllcjsKICNlbmRpZgogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGRlZmF1
bHRTZXNzaW9uUGVuZGluZ0Nvb2tpZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNv
bnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAtODMs
NyArODMsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAg
dWludDMyX3QgdWlQcm9jZXNzU0RLVmVyc2lvbiB7IDAgfTsKICAgICBTdHJpbmcgc291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgU3RyaW5nIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICNlbmRpZgog
ICAgIFN0cmluZyBodHRwUHJveHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
dm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZgogICAgIGF1dG8gbnNEYXRh
ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEo
KSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEg
dGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uCi0jaWYg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTQwMCkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkKICAgICBzdGF0aWMgTlNTZXQ8Q2xh
c3M+ICpwbGlzdENsYXNzZXMgPSBuaWw7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPHN5
cy90aW1lLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19T
SU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKQogI2luY2x1ZGUgPHN5cy9hdHRyLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+
CiAjZW5kaWYKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25U
aW1lSWZOZWVkZWQoCiAKIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKICAgICBzdHJ1Y3QgewogICAgICAgICB1aW50MzJfdCBsZW5ndGg7CiAgICAgICAg
IHVpbnQzMl90IHByb3RlY3Rpb25DbGFzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclMKIHsKICAgICBpZiAocmVxdWVz
dC5pc1NhbWVTaXRlVW5zcGVjaWZpZWQoKSkKICAgICAgICAgcmV0dXJuOwotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiAgICAgc3RhdGljIE5TVVJMICplbXB0eVVSTCA9
IFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07CiAgICAgaWYgKFt0YXNrIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0X3NpdGVGb3JDb29raWVzOildKQogICAgICAgICB0
YXNrLl9zaXRlRm9yQ29va2llcyA9IHJlcXVlc3QuaXNTYW1lU2l0ZSgpID8gdGFzay5jdXJyZW50
UmVxdWVzdC5VUkwgOiBlbXB0eVVSTDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7
CiAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25TREtWZXJzaW9uKHBhcmFtZXRlcnMudWlQcm9j
ZXNzU0RLVmVyc2lvbik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU4KICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW5EYXRhKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkpOwogICAgIE5ldHdvcmtTZXNzaW9u
Q29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7CiAgICAgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUocGFyYW1ldGVycy5jdERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUpOwogI2VuZGlmCiAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVOCiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9j
ZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0o
SU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQ
TEFURk9STShJT1NNQUMpCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwogICAgIEFTU0VS
VChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKICAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkgfHwgIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oYXVk
aXRUb2tlbikpCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0Fs
bENvb2tpZXMoKQogICAgIH0pOwogfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKIHN0YXRpYyB2b2lkIHNhdmVDb29raWVzKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNv
b2tpZVN0b3JhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU3luY0FsbENvb2sKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAKLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRlcikpOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Zm9yRWFjaChbJl0gKGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbikgewogICAgICAg
ICBzYXZlQ29va2llcyhuZXR3b3JrU3RvcmFnZVNlc3Npb24ubnNDb29raWVTdG9yYWdlKCksIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEoUmV0YWluUHRy
PENGRGF0YVJlZj4mJik7CiAgICAgc3RhdGljIHZvaWQgc2V0U291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldFNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgdm9pZCBzZXRDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NDAsNyArNDQwLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aQogICAgICAgICBpZiAobmV0d29ya0RhdGFUYXNrLT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSkgewogICAgICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnByaW9yaXR5
ID0gdG9OZXR3b3JrTG9hZFByaW9yaXR5KHRhc2sucHJpb3JpdHkpOwogCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmlj
cy5yZW1vdGVBZGRyZXNzID0gU3RyaW5nKG0uX3JlbW90ZUFkZHJlc3NBbmRQb3J0KTsKICAgICAg
ICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0aW9uSWRlbnRpZmllciA9IFN0cmluZyhb
bS5fY29ubmVjdGlvbklkZW50aWZpZXIgVVVJRFN0cmluZ10pOwogI2VuZGlmCkBAIC00NTEsNyAr
NDUxLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAg
ICAgICAgfV07CiAgICAgICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdEhlYWRlcnMg
PSBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKTsKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCiAgICAgICAgICAgICB1aW50NjRfdCByZXF1ZXN0SGVhZGVyQnl0ZXNTZW50
ID0gMDsKICAgICAgICAgICAgIHVpbnQ2NF90IHJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9
IDA7CiAgICAgICAgICAgICB1aW50NjRfdCByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkID0gMDsK
QEAgLTYwMSw3ICs2MDEsNyBAQCBzdGF0aWMgU3RyaW5nJiBnbG9iYWxTb3VyY2VBcHBsaWNhdGlv
blNlCiAgICAgcmV0dXJuIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5nZXQo
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3Rh
dGljIFN0cmluZyYgZ2xvYmFsQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VB
cHBsaQogICAgIGdsb2JhbFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpID0g
aWRlbnRpZmllcjsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VSVCghc2Vzc2lvbnNDcmVhdGVk
KTsKQEAgLTY1NSw3ICs2NTUsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lv
bkNvY29hCiAKICAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
Y29uZmlndXJhdGlvbkZvclNlc3Npb25JRChtX3Nlc3Npb25JRCk7CiAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIC8vIFdpdGhvdXQgdGhpcywgQ0ZOZXR3b3Jr
IHdvdWxkIHNvbWV0aW1lcyBhZGQgYSBDb250ZW50LVR5cGUgaGVhZGVyIHRvIG91ciByZXF1ZXN0
cyAocmRhcjovL3Byb2JsZW0vMzQ3NDg0NzApLgogICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zdXBwcmVzc2VkQXV0b0FkZGVkSFRUUEhlYWRlcnMp
XSkKICAgICAgICAgY29uZmlndXJhdGlvbi5fc3VwcHJlc3NlZEF1dG9BZGRlZEhUVFBIZWFkZXJz
ID0gW05TU2V0IHNldFdpdGhPYmplY3Q6QCJDb250ZW50LVR5cGUiXTsKQEAgLTY4NSw3ICs2ODUs
NyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hCiAgICAgZWxzZSBp
ZiAoIXNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAg
ICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9
IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8mIGN0RGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZSA9IGdsb2JhbENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwogICAgIGlm
ICghY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgY29uZmln
dXJhdGlvbi5fQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gY3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwpAQCAtNzAxLDcgKzcwMSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdv
cmtTZXNzaW9uQ29jb2EKICAgICBzZXRDb2xsZWN0c1RpbWluZ0RhdGEoKTsKICNlbmRpZgogCi0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICAvLyBGSVhNRTogUmVw
bGFjZSBAImtDRlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIHdpdGggYSBj
b25zdGFudCBmcm9tIHRoZSBTREsgb25jZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBh
IGJ1aWxkLgogICAgIGlmIChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkpCiAgICAgICAgIGNvbmZpZ3VyYXRp
b24uX3NvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBAeyBAImtDRlN0cmVhbVByb3BlcnR5QXV0b0Vy
cm9yT25TeXN0ZW1DaGFuZ2UiIDogQChOTykgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NNQUMpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwNSw0ICsxMDUsNCBAQCBib29sIE5ldHdvcmtQ
cm9jZXNzOjpwYXJlbnRQcm9jZXNzSGFzU2VyCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvbWFjL0Nv
bm5lY3Rpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiUHJvY2Vz
c0Fzc2VydGlvbi5oIgogI2ltcG9ydCA8VUlLaXQvVUlBY2Nlc3NpYmlsaXR5Lmg+CiAKQEAgLTky
LDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyhP
U09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYgeHBjQ29ubmVjdGlvbiwgU2Vjb25kcyBpbnRl
cnZhbCkKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAg
LCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1p
bmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRf
cGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tn
cm91bmQpKQogI2VuZGlmCiAgICAgewpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAg
ICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rpb247CiAgICAgUnVu
TG9vcDo6VGltZXI8Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c+IG1fd2F0Y2hkb2dUaW1l
cjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwog
I2VuZGlmCiB9OwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNv
dXJjZUV2ZW50SGFuZGwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJTZXRF
eGNlcHRpb25Qb3J0IikgewogICAgICAgICBpZiAobV9pc1NlcnZlcikgewogICAgICAgICAgICAg
Ly8gU2VydmVyIGNvbm5lY3Rpb25zIGFyZW4ndCBzdXBwb3NlZCB0byBoYXZlIHRoZWlyIGV4Y2Vw
dGlvbiBwb3J0cyBvdmVycmlkZGVuLiBUcmVhdCB0aGlzIGFzIGFuIGludmFsaWQgbWVzc2FnZS4K
QEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0aWMgdm9pZCBBY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3Bl
bmRlCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9BWFVJRWxlbWVudE5vdGlmeVByb2Nlc3NT
dXNwZW5kU3RhdHVzKHN1c3BlbmRlZCA/IEFYU3VzcGVuZFN0YXR1c1N1c3BlbmRlZCA6IEFYU3Vz
cGVuZFN0YXR1c1J1bm5pbmcpOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uKGtBWFBpZFN0
YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6IEAoZ2V0cGlkKCkpLCBAInN1c3Bl
bmRlZCIgOiBAKHN1c3BlbmRlZCkgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdXNwZW5k
ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5
SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9B
Y2Nlc3NpYmlsaXR5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRB
cmNoaXZlclNQSS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw0ICs0MCw0IEBAIE5TRGF0YSAqbmV3
QWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKE5TVVUKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29u
dGV4dC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
TGF5ZXJIb3N0aW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5CiAgICAgYXV0byBsYXllckhv
c3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwog
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGlu
Z01vZGU6Ok91dE9mUHJvY2VzczsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElP
U01BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFDKQogICAg
IC8vIFVzZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4
dCBpcyBuZXZlciBwdXQgb24tc2NyZWVuIAogICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRs
eSBwYXJlbnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCiAg
ICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250
ZXh0V2l0aE9wdGlvbnM6QHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0RldmljZUlkZW50aXR5U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogCiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIApAQCAtNTgsNiArNTgsNiBAQCB2b2lkIERldmljZUlkZW50
aXR5SXNzdWVDbGllbnRDZXJ0aWZpY2F0CiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRP
UikKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WV9TSU1VTEFUT1IpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NlbGVzdGlhbFNQSS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9DZWxlc3RpYWxTUEkuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0NlbGVzdGlhbFNQSS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjcHJhZ21hIG9uY2UKIApAQCAtNDYsNCArNDYsNCBAQAogCiAjZW5kaWYKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL0Zyb250Qm9hcmRTZXJ2aWNlc1NQSS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Gcm9udEJvYXJk
U2VydmljZXNTUEkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvaW9zL0Zyb250Qm9hcmRTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIApAQCAtMzcsNCArMzcsNCBAQAogCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NTaGltLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NTaGltLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1NoaW0u
aCIKQEAgLTM0Nyw0ICszNDcsNCBAQCB2b2lkIFdlYktpdFBsdWdpblByb2Nlc3NTaGltSW5pdGlh
bGl6ZShjCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBPcHRpb25J
dGVtOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgdGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBl
bnVtIGNsYXNzIElucHV0VHlwZSB7CiAjZW5kaWYKIH07CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0cnVjdCBPcHRpb25JdGVtIHsKICAgICBPcHRpb25J
dGVtKCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWNoZU1vZGVsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgY2FsY3VsYXRlVVJMQ2FjaGVTaXplcyhD
YWNoZU1vZGVsIGMKICAgICBjYXNlIENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjogewogICAg
ICAgICB1aW50NjRfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gTUI7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1lbW9yeVNpemUg
Pj0gMTAyNCkKICAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxNiAqIE1COwog
ICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6c3Rv
cFJ1bkxvb3AoKQogICAgIHBsYXRmb3JtU3RvcFJ1bkxvb3AoKTsKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIENoaWxkUHJvY2Vzczo6cGxh
dGZvcm1TdG9wUnVuTG9vcCgpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9EcmF3aW5nQXJlYUluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBEcmF3aW5nQXJlYVR5
cGUgewogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uLAog
I2VuZGlmCiAgICAgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIHZvaWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGUKICAgICBpZiAoIWlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICBtX3Bvc3RMYXlvdXREYXRhLmVuY29kZShl
bmNvZGVyKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGVuY29kZXIgPDwgZmlyc3RNYXJrZWRSZWN0OwogICAgIGVuY29kZXIgPDwgbGFzdE1hcmtl
ZFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtYXJrZWRUZXh0OwpAQCAtOTEsNyArOTEsNyBAQCBib29s
IEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmxhc3RN
YXJrZWRSZWN0KSkKQEAgLTEwOSwxNyArMTA5LDE3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OmRlY29k
ZShJUEM6OkRlY29kZXImIGQKIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdHlwaW5n
QXR0cmlidXRlczsKLSNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCBjYXJldFJl
Y3RBdFN0YXJ0OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwg
c2VsZWN0aW9uQ2xpcFJlY3Q7CiAgICAgZW5jb2RlciA8PCBzZWxlY3RlZFRleHRMZW5ndGg7CiAg
ICAgZW5jb2RlciA8PCB0ZXh0QWxpZ25tZW50OwogICAgIGVuY29kZXIgPDwgdGV4dENvbG9yOwog
ICAgIGVuY29kZXIgPDwgZW5jbG9zaW5nTGlzdFR5cGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IGNhcmV0UmVjdEF0
RW5kOwogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdHM7CiAgICAgZW5jb2RlciA8PCB3b3Jk
QXRTZWxlY3Rpb247CkBAIC0xNDgsMTEgKzE0OCwxMSBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0
TGF5b3V0RGF0YTo6ZGVjb2RlCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlw
aW5nQXR0cmlidXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShH
VEspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FyZXRSZWN0QXRTdGFydCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25DbGlwUmVjdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3RlZFRleHRM
ZW5ndGgpKQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmNsb3NpbmdMaXN0
VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNhcmV0UmVjdEF0RW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvblJlY3RzKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29s
IEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlCiAKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZWRp
dG9yU3RhdGUuZmlyc3RNYXJrZWRSZWN0ICE9IEludFJlY3QoKSkKICAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJmaXJzdE1hcmtlZFJlY3QiLCBlZGl0b3JTdGF0ZS5maXJzdE1hcmtlZFJlY3QpOwog
ICAgIGlmIChlZGl0b3JTdGF0ZS5sYXN0TWFya2VkUmVjdCAhPSBJbnRSZWN0KCkpCkBAIC0yNTUs
MTEgKzI1NSwxMSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAg
ICAgdHMgPDwgInBvc3RMYXlvdXREYXRhIjsKICAgICBpZiAoZWRpdG9yU3RhdGUucG9zdExheW91
dERhdGEoKS50eXBpbmdBdHRyaWJ1dGVzICE9IEF0dHJpYnV0ZU5vbmUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgidHlwaW5nQXR0cmlidXRlcyIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRh
KCkudHlwaW5nQXR0cmlidXRlcyk7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAgIGlmIChlZGl0
b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0U3RhcnQgIT0gSW50UmVjdCgpKQog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNhcmV0UmVjdEF0U3RhcnQiLCBlZGl0b3JTdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0U3RhcnQpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZP
Uk0oTUFDKQogICAgIGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkNs
aXBSZWN0ICE9IEludFJlY3QoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25D
bGlwUmVjdCIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uQ2xpcFJlY3Qp
OwogICAgIGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkVGV4dExlbmd0
aCkKQEAgLTI3MSw3ICsyNzEsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjCiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuZW5jbG9zaW5nTGlz
dFR5cGUgIT0gTm9MaXN0KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImVuY2xvc2luZ0xpc3RU
eXBlIiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5lbmNsb3NpbmdMaXN0VHlwZSk7CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCAhPSBJbnRSZWN0
KCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2FyZXRSZWN0QXRFbmQiLCBlZGl0b3JTdGF0
ZS5wb3N0TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0RW5kKTsKICAgICBpZiAoZWRpdG9yU3RhdGUu
cG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0cy5zaXplKCkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
PFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2VuZGlmCiAKQEAgLTc1LDcgKzc1LDcgQEAgc3Ry
dWN0IEVkaXRvclN0YXRlIHsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uIHsgZmFsc2UgfTsKICAg
ICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFJlY3QgZmly
c3RNYXJrZWRSZWN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgbGFzdE1hcmtlZFJlY3Q7CiAgICAg
U3RyaW5nIG1hcmtlZFRleHQ7CkBAIC04NSwxNyArODUsMTcgQEAgc3RydWN0IEVkaXRvclN0YXRl
IHsKIAogICAgIHN0cnVjdCBQb3N0TGF5b3V0RGF0YSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGlu
Z0F0dHJpYnV0ZXMgeyBBdHRyaWJ1dGVOb25lIH07Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShHVEspCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oR1RLKQogICAg
ICAgICBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0U3RhcnQ7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQ
TEFURk9STShNQUMpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc2VsZWN0aW9uQ2xpcFJlY3Q7
CiAgICAgICAgIHVpbnQ2NF90IHNlbGVjdGVkVGV4dExlbmd0aCB7IDAgfTsKICAgICAgICAgdWlu
dDMyX3QgdGV4dEFsaWdubWVudCB7IE5vQWxpZ25tZW50IH07CiAgICAgICAgIFdlYkNvcmU6OkNv
bG9yIHRleHRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjpibGFjayB9OwogICAgICAgICB1aW50MzJf
dCBlbmNsb3NpbmdMaXN0VHlwZSB7IE5vTGlzdCB9OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2Fy
ZXRSZWN0QXRFbmQ7CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxl
Y3Rpb25SZWN0czsKICAgICAgICAgU3RyaW5nIHdvcmRBdFNlbGVjdGlvbjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwog
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIE9CSkNfQ0xBU1MgV2ViRXZlbnQ7CiAjZW5kaWYKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGlj
OgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2Rr
RXZlbnQqLCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmLCBJbnB1dE1ldGhvZEZp
bHRlcjo6RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRz
KTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICopOwogI2VsaWYgUExBVEZPUk0oV1BF
KQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9rZXlib2FyZF9l
dmVudCopOwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgR2RrRXZlbnQqIG5hdGl2ZUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYgY29tcG9zaXRpb25SZXN1bHRzKCkgY29uc3QgIHsg
cmV0dXJuIG1fY29tcG9zaXRpb25SZXN1bHRzOyB9CiAgICAgYm9vbCBpc0Zha2VFdmVudEZvckNv
bXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mYWtlRXZlbnRGb3JDb21wb3NpdGlvbjsgfQot
I2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICA6Oldl
YkV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7
IH0KICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBjb25zdCBNU0cqIG5hdGl2ZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToK
ICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogICAgIFdlYkNvcmU6OkNv
bXBvc2l0aW9uUmVzdWx0cyBtX2NvbXBvc2l0aW9uUmVzdWx0czsKICAgICBib29sIG1fZmFrZUV2
ZW50Rm9yQ29tcG9zaXRpb247Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFJldGFpblB0cjw6OldlYkV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2Vs
aWYgUExBVEZPUk0oV0lOKQogICAgIE1TRyBtX25hdGl2ZUV2ZW50OwpAQCAtMTA2LDcgKzEwNiw3
IEBAIHByaXZhdGU6CiB9OwogCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhp
cy4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgaXNJ
bkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNWaWV3OwogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQg
R2RrRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgV2ViRXZlbnQ7
CiAjZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQog
ICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwogICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOwotI2VsaWYgUExBVEZPUk0oSU9T
KQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6
V2ViRXZlbnQgKik7CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVu
dChzdHJ1Y3Qgd3BlX2lucHV0X3BvaW50ZXJfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cik7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBOU0V2ZW50KiBuYXRpdmVFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlmIFBMQVRGT1JNKEdU
SykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUV2ZW50LmdldCgpOyB9Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIDo6V2ViRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVFdmVudC5nZXQoKTsgfQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIGNvbnN0IE1T
RyogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiAmbV9uYXRpdmVFdmVudDsgfQpAQCAtODYs
NyArODYsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25hdGl2ZUV2ZW50
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFJldGFpblB0cjw6OldlYkV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0o
V0lOKQogICAgIE1TRyBtX25hdGl2ZUV2ZW50OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViVG91Y2hFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdHJ1Y3QgX1VJV2ViVG91Y2hFdmVudDsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZlbnQg
OiBwdWJsaWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChj
b25zdCBfVUlXZWJUb3VjaEV2ZW50Kik7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZl
V2ViVG91Y2hFdmVudChHZGtFdmVudCosIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiYp
OwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBWZWN0b3I8V2ViUGxhdGZv
cm1Ub3VjaFBvaW50PiBleHRyYWN0V2ViVG91Y2hQb2ludChjb25zdCBfVUlXZWJUb3VjaEV2ZW50
Kik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUHJpbnRJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgUHJpbnRJbmZvOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmMKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJpbnRNb2RlKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW5jb2RlciA8
PCBzbmFwc2hvdEZpcnN0UGFnZTsKICNlbmRpZgogfQpAQCAtNzAsNyArNzAsNyBAQCBib29sIFBy
aW50SW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludElu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QcmludEluZm8uaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUHJpbnRJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IFByaW50SW5mbyB7CiAgICAgZmxvYXQg
cGFnZVNldHVwU2NhbGVGYWN0b3IgeyAwIH07CiAgICAgZmxvYXQgYXZhaWxhYmxlUGFwZXJXaWR0
aCB7IDAgfTsKICAgICBmbG9hdCBhdmFpbGFibGVQYXBlckhlaWdodCB7IDAgfTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHNuYXBzaG90Rmly
c3RQYWdlIHsgZmFsc2UgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Np
b25TdGF0ZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEZy
YW1lU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuCiAKICAgICBlbmNvZGVyIDw8IGh0dHBC
b2R5OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ZW5jb2RlciA8PCBleHBvc2VkQ29udGVudFJlY3Q7CiAgICAgZW5jb2RlciA8PCB1bm9ic2N1cmVk
Q29udGVudFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8RnJhbWVTdGF0
ZT4gRnJhbWVTdGF0ZTo6ZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5odHRwQm9k
eSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5l
eHBvc2VkQ29udGVudFJlY3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVub2JzY3VyZWRDb250ZW50UmVjdCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQCBzdHJ1Y3QgRnJhbWVTdGF0ZSB7CiAgICAgc3RkOjpvcHRpb25hbDxIVFRQQm9keT4g
aHR0cEJvZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUu
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHVu
b2JzY3VyZWRDb250ZW50UmVjdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91
dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAsMTIgKzkwLDEyIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNNYWMuaCIKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvck92
ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvblJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBA
IC02MTksNyArNjE5LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+Ojpk
ZQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjpkZWNv
ZGUoZGVjb2Rlciwgcm91bmRlZFJlY3QpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRRdWFkPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0UXVhZCYgZmxvYXRRdWFkKQogewogICAgIFNp
bXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRRdWFkPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UXVhZCk7
CkBAIC02NTAsNyArNjUwLDcgQEAgc3RkOjpvcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4gQXJn
dW1lbgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBXVEZNb3ZlKHZp
ZXdwb3J0QXJndW1lbnRzKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW50UG9pbnQmIGludFBvaW50KQpAQCAtMTE2
MCw3ICsxMTYwLDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlT3B0aW9uYWxJbWFnZShEZWNvZGVyJgog
ICAgIHJldHVybiBkZWNvZGVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBcmd1bWVudENvZGVyPEN1
cnNvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0oY3Vyc29yLnR5cGUoKSk7CkBAIC0xMzE2LDcgKzEzMTYs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCkKIHsKQEAgLTE3MTIsNyAr
MTcxMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkVVJMPjo6ZGVjb2QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8SGlnaGxpZ2h0Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQogewpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8
ZmxvYXQ+Owogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBT
ZWxlY3Rpb25SZWN0Owogc3RydWN0IEhpZ2hsaWdodDsKQEAgLTI1OCw3ICsyNTgsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Jik7CiB9OwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UXVhZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJik7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRRdWFkPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMjY5LDcg
KzI2OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkludFBvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0Jik7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gZGVjb2RlKERlY29kZXImKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXZlbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHB1
YmxpYzoKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxL
ZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBo
YW5kbGVkQnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFu
ZD4mLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwg
TW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAg
IFdlYktleWJvYXJkRXZlbnQoVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGlu
dCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBo
YW5kbGVkQnlJbnB1dE1ldGhvZCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tl
eXBhZCwgTW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApOwotI2VsaWYgUExBVEZPUk0oSU9T
KQorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlm
aWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUs
IGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wg
aXNTeXN0ZW1LZXksIE1vZGlmaWVycywgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbGlmIFBMQVRG
T1JNKFdQRSkKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJ
ZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtl
eUNvZGUsIGJvb2wgaXNLZXlwYWQsIE1vZGlmaWVycywgV2FsbFRpbWUgdGltZXN0YW1wKTsKQEAg
LTMyMCw3ICszMjAsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQgewogcHVibGljOgogICAgIGVudW0gVG91Y2hQb2ludFN0YXRlIHsK
QEAgLTQ5MSw3ICs0OTEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5U
UykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3
ICsyMzgsNyBAQCBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm0oCiAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIHN0YXRpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UGhhc2VUeXBlIHRvdWNoRXZlbnRUeXBlKGNvbnN0IFdlYlBsYXRmb3JtVG91Y2hQb2ludCYgd2Vi
VG91Y2hQb2ludCkKIHsKQEAgLTMxNCw3ICszMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcm90
YXRpb25BbmdsZSA9IHdlYlRvdWNoUG9pbnQucm90YXRpb25BbmdsZSgpOwogICAgIH0KIH07Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IGNsYXNzIFdlYktpdDJQbGF0Zm9ybVRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50IHsKIHB1YmxpYzoKQEAgLTM1MSw3ICszNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB1bnNpZ25lZCB0b3VjaENv
dW50ID0gd2ViRXZlbnQudG91Y2hQb2ludHMoKS5zaXplKCk7CiAgICAgICAgIG1fdG91Y2hQb2lu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3VjaENvdW50KTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRvdWNoQ291bnQ7ICsraSkKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIFBsYXRmb3JtVG91Y2hFdmVudAogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdlYkV2ZW50LnRvdWNoUG9pbnRzKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAg
ICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJLaXQyUGxhdGZvcm1Ub3VjaFBvaW50KHdlYkV2ZW50
LnRvdWNoUG9pbnRzKCkuYXQoaSkpKTsKLSNlbmRpZiAvL1BMQVRGT1JNKElPUykKKyNlbmRpZiAv
L1BMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIFdlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJkRXZlbnQoVHlwZSAKICAgICBB
U1NFUlQoaXNLZXlib2FyZEV2ZW50VHlwZSh0eXBlKSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKElP
UykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFdlYktleWJvYXJkRXZlbnQ6OldlYktl
eWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
dW5tb2RpZmllZFRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNv
bnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNvZGUsIGJvb2wgaXNBdXRvUmVwZWF0
LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBX
YWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVz
dGFtcCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5j
b2RlciA8PCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogICAgIGVuY29kZXIgPDwgdXNlRGFya0FwcGVh
cmFuY2U7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBlbmNvZGVyIDw8IHNjcmVlblNpemU7CiAgICAgZW5jb2RlciA8PCBhdmFpbGFibGVT
Y3JlZW5TaXplOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVTY3JlZW5TaXplOwpAQCAtMjQ1LDcg
KzI0NSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4KICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNjcmVlblNpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hdmFpbGFibGVTY3JlZW5TaXplKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiAgICAg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplOwog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplOwogICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJF
dmVudC5oIgogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCkBAIC04OCw0ICs4OCw0IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBXZWIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBEaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlOgog
ICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKICAgY2F0ZWdvcnk6IGRlYnVnCi0g
IGNvbmRpdGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkOgogICB0eXBlOiBib29s
CkBAIC0xMDQzLDE0ICsxMDQzLDE0IEBAIElnbm9yZVZpZXdwb3J0U2NhbGluZ0NvbnN0cmFpbnRz
OgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY2F0ZWdvcnk6IGRlYnVnCiAgIHdlYmNvcmVCaW5k
aW5nOiBub25lCi0gIGNvbmRpdGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOgogICB0eXBlOiBib29s
CiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKICAgY2F0ZWdvcnk6IGRlYnVnCiAgIHdlYmNvcmVCaW5k
aW5nOiBub25lCi0gIGNvbmRpdGlvbjogUExBVEZPUk0oSU9TKQorICBjb25kaXRpb246IFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZToKICAgdHlwZTog
Ym9vbApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSwxMyArMzEsMTMgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIlZlcnNpb25DaGVja3MuaCIKICNlbmRpZgogCiBib29sIGRlZmF1bHRQYXNzaXZlVG91Y2hM
aXN0ZW5lcnNBc0RlZmF1bHRPbkRvY3VtZW50KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gbGlua2VkT25PckFmdGVyKFdlYktpdDo6
U0RLVmVyc2lvbjo6Rmlyc3RUaGF0RGVmYXVsdHNUb1Bhc3NpdmVUb3VjaExpc3RlbmVyc09uRG9j
dW1lbnQpOwogI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBk
ZWZhdWx0UGFzc2l2ZVRvdWNoTGlzdGVuZXJzQXNEZWZhdQogCiBib29sIGRlZmF1bHRDdXN0b21Q
YXN0ZWJvYXJkRGF0YUVuYWJsZWQoKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDMwMAogICAgIHJldHVy
biBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBkeWxkX2dldF9w
cm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl8xMV8zOwogI2VsaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwCiAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpIHx8IGR5bGRfZ2V0
X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTM7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICNk
ZWZpbmUgREVGQVVMVF9QREZQTFVHSU5fRU5BQkxFRCBmYWxzZQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgREVGQVVMVF9BTExP
V1NfUElDVFVSRV9JTl9QSUNUVVJFX01FRElBX1BMQVlCQUNLIHRydWUKICNkZWZpbmUgREVGQVVM
VF9CQUNLU1BBQ0VfS0VZX05BVklHQVRJT05fRU5BQkxFRCBmYWxzZQogI2RlZmluZSBERUZBVUxU
X0ZSQU1FX0ZMQVRURU5JTkcgdHJ1ZQpAQCAtMTA5LDcgKzEwOSw3IEBACiAjZGVmaW5lIERFRkFV
TFRfU1VCUElYRUxfQU5USUFMSUFTRURfTEFZRVJfVEVYVF9FTkFCTEVEIGZhbHNlCiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpCiAjZGVmaW5lIERFRkFVTFRfQUNDRUxFUkFURURfRFJBV0lOR19FTkFCTEVEIGZh
bHNlCiAjZGVmaW5lIERFRkFVTFRfQ0FOVkFTX1VTRVNfQUNDRUxFUkFURURfRFJBV0lORyBmYWxz
ZQogI2RlZmluZSBERUZBVUxUX01PQ0tfQ0FQVFVSRV9ERVZJQ0VTX0VOQUJMRUQgdHJ1ZQpAQCAt
MTUyLDcgKzE1Miw3IEBACiAjZGVmaW5lIERFRkFVTFRfU0FOU19TRVJJRl9GT05UX0ZBTUlMWSAi
SGVsdmV0aWNhIgogI2RlZmluZSBERUZBVUxUX1NFUklGX0ZPTlRfRkFNSUxZICJUaW1lcyIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBERUZB
VUxUX0NVUlNJVkVfRk9OVF9GQU1JTFkgIlNuZWxsIFJvdW5kaGFuZCIKICNkZWZpbmUgREVGQVVM
VF9QSUNUT0dSQVBIX0ZPTlRfRkFNSUxZICJBcHBsZUNvbG9yRW1vamkiCiAjZWxzZQpAQCAtMjA4
LDcgKzIwOCw3IEBACiAjZGVmaW5lIERFRkFVTFRfU0VSVklDRV9XT1JLRVJTX0VOQUJMRUQgZmFs
c2UKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKICNkZWZpbmUgREVGQVVMVF9D
T05JQ19HUkFESUVOVF9FTkFCTEVEIHRydWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ09OSUNf
R1JBRElFTlRfRU5BQkxFRCBmYWxzZQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2QKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2RlciA8PCB1aVBy
b2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lckNhY2hlc0Rp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lclRlbXBvcmFy
eURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBj
b29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29udGFpbmVyVGVtcG9yYXJ5RGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91
Y2hFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hF
dmVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlRv
dWNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCkBAIC02NCw0
ICs2NCw0IEBAIGJvb2wgV2ViVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50VHlwZShUeXAKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0RhdGFEZXRlY3Rv
clR5cGVzSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAm
JiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
CiAjZGVmaW5lIERFRklORV9JTlNUQUxMX05BTUUobWFqb3IsIG1pbm9yKSBcCiAgICAgZXh0ZXJu
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKSBjb25zdCBjaGFyIGluc3Rh
bGxfbmFtZV8gIyNtYWpvciMjIF8gIyNtaW5vciBfX2FzbSgiJGxkJGluc3RhbGxfbmFtZSRvcyIg
I21ham9yICIuIiAjbWlub3IgIiQvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvV2Vi
S2l0LmZyYW1ld29yay9XZWJLaXQiKTsgXApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFwcGVyID0g
W1dLRnJhbWVJbmZvIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIFR5cGU6Okdlb2xvY2F0aW9uUG9z
aXRpb246CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY107
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0
MkluaXRpYWxpemVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNl
Lmg+CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxh
ZzsKIAogc3RhdGljIHZvaWQgcnVuSW5pdGlhbGl6YXRpb25Db2RlKHZvaWQqID0gbnVsbHB0cikK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJbml0
V2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpjaGVj
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIHZhbHVlID0gYWRvcHRPU09iamVj
dCh4cGNfY29ubmVjdGlvbl9jb3B5X2VudGl0bGVtZW50X3ZhbHVlKG1fY29ubmVjdGlvbi5nZXQo
KSwgImtleWNoYWluLWFjY2Vzcy1ncm91cHMiKSk7CiAgICAgaWYgKHZhbHVlICYmIHhwY19nZXRf
dHlwZSh2YWx1ZS5nZXQoKSkgPT0gWFBDX1RZUEVfQVJSQVkpIHsKICAgICAgICAgeHBjX2FycmF5
X2FwcGx5KHZhbHVlLmdldCgpLCBeYm9vbChzaXplX3QgaW5kZXgsIHhwY19vYmplY3RfdCBvYmpl
Y3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFj
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFp
bi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIq
KikKICNlbmRpZgogCiAgICAgYXV0byBib290c3RyYXAgPSBhZG9wdE9TT2JqZWN0KHhwY19jb3B5
X2Jvb3RzdHJhcCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBhdXRvIGNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzID0geHBjX2RpY3Rpb25h
cnlfZ2V0X3ZhbHVlKGJvb3RzdHJhcC5nZXQoKSwgIkNvbnRhaW5lckVudmlyb25tZW50VmFyaWFi
bGVzIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfYXBwbHkoY29udGFpbmVyRW52aXJvbm1lbnRWYXJp
YWJsZXMsIF4oY29uc3QgY2hhciAqa2V5LCB4cGNfb2JqZWN0X3QgdmFsdWUpIHsKICAgICAgICAg
c2V0ZW52KGtleSwgeHBjX3N0cmluZ19nZXRfc3RyaW5nX3B0cih2YWx1ZSksIDEpOwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVs
YXRlZExheWVyTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQsIENGVHlwZVJlZj47CiAgICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKENBTGF5
ZXIgKiwgUmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUpOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllcyhV
SVZpZXcgKiwgUmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUpOwogI2VuZGlmCiB9OwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxVSUtpdFNQSS5o
PgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IEBpbnRlcmZhY2UgVUlWaWV3IChXS1VJVmlld1V0aWxpdGllcykKIC0gKHZvaWQpX3dlYl9zZXRT
dWJ2aWV3czooTlNBcnJheSAqKXN1YnZpZXdzOwogQGVuZApAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHAKICAgICAgICAgaWYgKCFwcm9w
ZXJ0aWVzLm1hc2tMYXllcklEKQogICAgICAgICAgICAgbGF5ZXIubWFzayA9IG51bGxwdHI7CiAg
ICAgICAgIGVsc2UgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICAgICAgVUlWaWV3ICptYXNrVmlldyA9IChfX2JyaWRnZSBVSVZpZXcgKilyZWxh
dGVkTGF5ZXJzLmdldChwcm9wZXJ0aWVzLm1hc2tMYXllcklEKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIG1hc2sgdmlldyBpcyBrZXB0IGFsaXZlLgogICAg
ICAgICAgICAgQVNTRVJUKCFtYXNrVmlldy5sYXllci5zdXBlcmxheWVyKTsKQEAgLTI5MCw3ICsy
OTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFw
cGx5UHJvcGVydGllcyhVSVZpZXcgKnZpZXcsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJl
ZUhvc3QsIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMm
IHByb3BlcnRpZXMsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYgcmVsYXRlZExheWVycywgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlIGxheWVyQ29udGVudHNUeXBlKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsNyBAQAogCiBleHRlcm4gIkMiIFNlY0lkZW50aXR5UmVmIFNlY0lkZW50
aXR5Q3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgU2VjQ2VydGlmaWNhdGVSZWYgY2Vy
dGlmaWNhdGUsIFNlY0tleVJlZiBwcml2YXRlS2V5KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW5j
bHVkZSA8U2VjdXJpdHkvU2VjS2V5UHJpdi5oPgogI2VuZGlmCkBAIC02NTEsNyArNjUxLDcgQEAg
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPAogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgYm9vbCBzZWNLZXlSZWZEZWNvZGluZ0FsbG93ZWQ7CiAKIHZvaWQgc2V0QWxsb3dzRGVjb2Rp
bmdTZWNLZXlSZWYoYm9vbCBhbGxvd3NEZWNvZGluZ1NlY0tleVJlZikKQEAgLTY4OCw3ICs2ODgs
NyBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBTZWNJZGVudGl0CiAgICAgU2VjSWRl
bnRpdHlDb3B5UHJpdmF0ZUtleShpZGVudGl0eSwgJmtleSk7CiAKICAgICBDRkRhdGFSZWYga2V5
RGF0YSA9IG51bGxwdHI7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAga2V5RGF0YSA9IGNvcHlQZXJzaXN0ZW50UmVmKGtleSk7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShNQUMpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUmV0YWluUHRyPAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZWNLZXlSZWYg
a2V5ID0gbnVsbHB0cjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoc2VjS2V5UmVmRGVjb2RpbmdBbGxvd2VkKQogICAgICAgICBTZWNLZXlGaW5k
V2l0aFBlcnNpc3RlbnRSZWYoa2V5RGF0YS5nZXQoKSwgJmtleSk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTZWNUcnVz
dFJlZik7CiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPFNlY1RydXN0UmVmPiYpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgc2V0QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYoYm9vbCk7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShJT1NNQUMpCiAKICNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCIKQEAgLTg5
LDQgKzg5LDQgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIAogCiB9
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoRGF0YURl
dGVjdG9yc0NvcmUsIEREU2NhCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBA
IC0yMDksNiArMjA5LDYgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
bQogICAgICAgICBsaW5rSW5kaWNhdG9yID0gb2xkSW5mb3JtYXRpb24ubGlua0luZGljYXRvcjsK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKQEAgLTc5LDYgKzc5LDYgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdDo6aXNBcAogICAgIHJldHVybiAob3RoZXIucG9pbnQgLSBwb2ludCkuZGlhZ29uYWxM
ZW5ndGhTcXVhcmVkKCkgPD0gNDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCkBAIC01Nyw0ICs1Nyw0IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCB7CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05h
dGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV2ViSU9TRXZlbnRG
YWN0b3J5LmgiCkBAIC00Nyw0ICs0Nyw0IEBAIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2
ZVdlYktleWJvYXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVu
dElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5
LmgiCiAKQEAgLTQwLDQgKzQwLDQgQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV2ViRXZlbnQu
aCIKQEAgLTEzNyw0ICsxMzcsNCBAQCBOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViSU9TRXZlbnRGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViSU9TRXZlbnRGYWN0b3J5X2gKICNkZWZpbmUgV2ViSU9T
RXZlbnRGYWN0b3J5X2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5o
PgpAQCAtMzcsNiArMzcsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VF
dmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiB9OwogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAv
LyBXZWJJT1NFdmVudEZhY3RvcnlfaApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dl
YklPU0V2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYklPU0V2ZW50RmFj
dG9yeS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5oPgpAQCAtMTA4LDQgKzEwOCw0IEBAIFdlYktpdDo6V2Vi
TW91c2VFdmVudCBXZWJJT1NFdmVudEZhY3RvcnkKICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIHBvc2l0aW9uLCBkZWx0YVgs
IGRlbHRhWSwgZGVsdGFaLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcyh0aW1lc3RhbXApKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L1dlYkljb25VdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvV2ViSWNvblV0aWxpdGllcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIEBjbGFzcyBVSUltYWdlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJY29u
VXRpbGl0aWVzLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5k
YXRpb24uaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJn
dW1lbnRDb2RlcnNNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgTlNGb250ICopOwogYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJldGFpblB0
cjxOU0ZvbnQ+Jik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBlbmNvZGUoRW5jb2RlciYsIFVJRm9udCAqKTsKIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBSZXRhaW5QdHI8VUlGb250PiYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzTWFjLmgi
CiAKICNpbXBvcnQgPENvcmVUZXh0L0NvcmVUZXh0Lmg+Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2VuZGlmCiAK
QEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5Q
dHI8CiB9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVSUZv
bnQgKmZvbnQpCiB7CkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUmV0YWluUHRyPAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgTlNOdW1iZXIgKm51bWJlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdW1l
KCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hf
ZXh0ZW5zaW9uX2NvbnN1bWUobV90b2tlbik7Ci0jaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgcmV0dXJuICFzYW5k
Ym94X2NoZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKICNlbHNlCiAgICAg
ICAgIHJldHVybiBtX2hhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJ
dGVtU2hpbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0
ZW1TaGltLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NlY0l0ZW1TaGltLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
aW5pdGlhbGl6ZVNlY0l0ZW1TaGltKENoaWxkUHJvY2VzcyYKIHsKICAgICBzaGFyZWRQcm9jZXNz
ID0gJnByb2Nlc3M7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdHJ1Y3QgX0NGTkZyYW1ld29ya3NTdHVicyBzdHVicyA9IHsKICAgICAgICAgLnZl
cnNpb24gPSAwLAogICAgICAgICAuU2VjSXRlbV9zdHViX0NvcHlNYXRjaGluZyA9IHdlYlNlY0l0
ZW1Db3B5TWF0Y2hpbmcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlv
blN0YXRlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxpY2F0aW9uU3RhdGVUcmFja2VyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXJfaAogI2RlZmlu
ZSBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcl9oCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRp
b25TdGF0ZVRyYWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiQXNzZXJ0aW9uU2VydmljZXNTUEkuaCIKICNpbXBvcnQgIlNh
bmRib3hVdGlsaXRpZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWUKIAogYm9vbCBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlKCkgY29u
c3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHJldHVybiAhbV93ZWJQcm9jZXNzUHJveHkudmlzaWJsZVBhZ2VDb3VudCgpICYmIG1fd2ViUHJv
Y2Vzc1Byb3h5LnBhZ2VDb3VudCgpOwogI2Vsc2UKICAgICAvLyBEaXNhYmxlIGJhY2tncm91bmQg
cHJvY2VzcyByZXNwb25zaXZlbmVzcyBjaGVja2luZyBvbiBpT1Mgc2luY2Ugc3VjaCBwcm9jZXNz
ZXMgdXN1YWxseSBnZXQgc3VzcGVuZGVkLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNyArMTg5LDcgQEAgdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKAog
ICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlciA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU3RhdGU6OlJ1bm5pbmc6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIC8vIE9uIGlPUyBkZXBsb3kgYSB3YXRjaGRvZyBpbiB0aGUgVUkg
cHJvY2Vzcywgc2luY2UgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJlIHN1c3BlbmRlZC4KICAgICAg
ICAgLy8gSWYgMzBzIGlzIGluc3VmZmljaWVudCBmb3IgYW55IG91dHN0YW5kaW5nIGFjdGl2aXR5
IHRvIGNvbXBsZXRlIGNsZWFubHksIHRoZW4gaXQgd2lsbCBiZSBraWxsZWQuCiAgICAgICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0g
MDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBBZG9wdCB0aGUgV0tVSURlbGVnYXRlUHJpdmF0ZSBjYWxsYmFjayBvbiBpT1MgYW5k
IHJlbW92ZSB0aGlzLgogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwg
RnVuY3Rpb248dm9pZChib29sKT4mKSA9IDA7CiAjZW5kaWYKQEAgLTI1OCw3ICsyNTgsNyBAQCBw
dWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JikgPSAwOwpAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYg
aGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzKSA9IDA7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH0KIAotI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBtZWRpYVNlc3Npb25NYW5h
Z2VyKCkgPSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b2Nlc3NBc3NlcnRpb24uY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC02OCw0ICs2OCw0IEBAIHZvaWQgUHJvY2Vzc0FuZFVJQXNzZXJ0
aW9uOjpzZXRDbGllbnQoUHIKIAogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NBc3NlcnRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzQXNzZXJ0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYm
ICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIE9CSkNfQ0xBU1MgQktTUHJvY2Vzc0Fzc2VydGlv
bjsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogfTsKIAogY2xhc3MgUHJvY2Vzc0Fzc2VydGlv
bgotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAg
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFByb2Nlc3NBc3NlcnRpb24+CiAjZW5kaWYKIHsKQEAg
LTY4LDE0ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgQXNzZXJ0aW9uU3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX2Fzc2VydGlvblN0YXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXRl
KEFzc2VydGlvblN0YXRlKTsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19T
SU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKQogcHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3MgVmFsaWRpdHkgeyBObywg
WWVzLCBVbnNldCB9OwogICAgIFZhbGlkaXR5IHZhbGlkaXR5KCkgY29uc3QgeyByZXR1cm4gbV92
YWxpZGl0eTsgfQogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExB
VEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgdm9pZCBtYXJrQXNJbnZhbGlkYXRlZCgpOwog
CiAgICAgUmV0YWluUHRyPEJLU1Byb2Nlc3NBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwpAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN0YXRlKEFzc2VydGlvblN0YXRlKSBm
aW5hbDsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJ1bkluQmFja2dyb3VuZENvdW50KCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0aWNzIGZpbGU6ICVzIiwgZmls
ZVBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OmV4Y2x1ZGVGcm9tQmFja3VwKCkgY29uc3QKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2
aWV3Vmlld0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KIApA
QCAtNDEsNCArNDEsNCBAQAogLSAoaWQpaW5pdFdpdGhDR0ltYWdlOihSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4paW1hZ2UgZGVmYXVsdEFjdGlvbnM6KFJldGFpblB0cjxOU0FycmF5PilhY3Rpb25zIGVs
ZW1lbnRJbmZvOihSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVudEluZm8+KWVsZW1lbnRJbmZv
OwogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dL
SW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0U1BJLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ludFNpemUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dLSW5zcGVj
dG9ySGlnaGxpZ2h0Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCA8VUlLaXQvVUlLaXQuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IldLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgYm9vbCYgc3VwcG9y
dHMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3VwcG9ydHMgPSAhd2l0aEtleWJvYXJkOwogI2Vsc2UKICAgICBzdXBwb3J0cyA9IHRydWU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlCiAg
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Npb25zKCkKIHsKICAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBy
b3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogICAgIHZv
aWQgcHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSA9IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOCw3ICs1MTgsNyBAQCBib29sIFdlYkluc3BlY3RvclBy
b3h5OjpzaG91bGRPcGVuQXR0YWNoCiAKIC8vIFVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb25zIGNh
biB1c2UgdGhlIHN0dWJzIHByb3ZpZGVkIGhlcmUuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmICFXS19BUElfRU5BQkxFRCkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiAhV0tfQVBJX0VOQUJMRUQpCiAKIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKQEAgLTY0
Miw2ICs2NDIsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaEF2CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgIVdLX0FQSV9FTkFCTEVEKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmICFXS19BUElfRU5BQkxFRCkKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6fldlYk9wZQogewogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25JbWFnZURhdGEp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlT
dHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKICAgICB2b2lk
IGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcsNyArMTk3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjZW5kaWYKQEAg
LTIwOCw3ICsyMDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5j
bHVkZSAiUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIApAQCAtNDA3LDcg
KzQwNyw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRp
ZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAg
ICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkoKSkKICNlbmRpZgogICAgICwgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFi
bGVkKG1fY29uZmlndXJhdGlvbi0+aW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCgpKQpAQCAt
NDUwLDcgKzQ1MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIFdlYlBhZ2VQ
cm94eTo6cGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgSEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgPSBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsICptX3Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIpOwogI2VuZGlmCkBAIC00NjksNyArNDY5LDcgQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogCiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxlU2Ny
ZWVuU2l6ZU92ZXJyaWRlKHByZWZlcmVuY2VzU3RvcmUoKS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmRpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGVLZXkoKSkpOwogI2VuZGlm
CiAKQEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5n
VG9XZWJQCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFn
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBw
YWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBI
QVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlciA9IFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlKCp0aGlzKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
PSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSgqdGhpcywgKm1fcGxheWJhY2tT
ZXNzaW9uTWFuYWdlcik7CiAjZW5kaWYKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2lu
Z0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBv
ZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CiAjZW5kaWYKQEAgLTk0
MSw3ICs5NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIC8vIE51bGwgb3V0
IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgogICAgIG1fY29uZmlndXJhdGlv
bi0+c2V0UmVsYXRlZFBhZ2UobnVsbHB0cik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaG9sZCBhIHByb2Nl
c3MgYXNzZXJ0aW9uIGFmdGVyIGdldHRpbmcgY2xvc2VkLgogICAgIG1fYWN0aXZpdHlUb2tlbiA9
IG51bGxwdHI7CiAjZW5kaWYKQEAgLTE1MTAsNyArMTUxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmcKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkTGVhdmVX
aW5kb3coKQogewogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKLSNpZiBQTEFURk9STShJT1Mp
ICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICAv
LyBXaGVuIGxlYXZpbmcgdGhlIGN1cnJlbnQgcGFnZSwgY2xvc2UgdGhlIHZpZGVvIGZ1bGxzY3Jl
ZW4uCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLT5yZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7CkBAIC0xNjMx
LDcgKzE2MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAg
ICAgZWxzZSBpZiAoIW1fcGFnZUlzVXNlck9ic2VydmFibGVDb3VudCkKICAgICAgICAgbV9wYWdl
SXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVzZXJPYnNl
cnZhYmxlUGFnZUNvdW50KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUuY29u
dGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CiAgICAgYm9vbCBpc0F1ZGli
bGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsK
ICAgICBpZiAoIWlzVmlld1Zpc2libGUoKSAmJiAhbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkgJiYgIWlzQ2FwdHVyaW5nTWVkaWEgJiYgIWlzQXVkaWJsZSkgewpAQCAtMTY4Niw3ICsx
Njg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3RpdgogICAgIGlm
IChtX3dhaXRpbmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKQogICAgICAgICByZXR1cm47CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBIYWls
IE1hcnkgY2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUsCiAgICAgLy8gYW5kIGlm
IHZpc2libGUgd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0aW9uKSAtIGJ1dCB3ZSBzaG91
bGQgbmV2ZXIgYmxvY2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4KICAgICBpZiAoIW1fYWN0aXZp
dHlUb2tlbikgewpAQCAtMTg1MCw3ICsxODUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2
YXRlTWVkaWFTdHJlYW1DYQogICAgIHNldE11dGVkKG1fbXV0ZWRTdGF0ZSAmIH5XZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpDYXB0dXJlRGV2aWNlc0FyZU11dGVkKTsKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJikKIHsKIH0K
QEAgLTM3MTksNyArMzcxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9y
RnJhbWUKICAgICBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOwogICAg
IG1fcHJvY2Vzcy0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpIHsKICAgICAgICAgbV9oYXNSZWNlaXZlZExheWVyVHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRD
b21taXRMb2FkID0gZmFsc2U7CiAgICAgICAgIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklk
QWZ0ZXJEaWRDb21taXRMb2FkID0gZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4oKmRyYXdpbmdBcmVhKCkpLm5leHRMYXllclRyZWVUcmFuc2FjdGlvbklEKCk7CkBAIC00
MzczLDcgKzQzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEZ1bGxzY3JlZW5JbW1lZGlh
CiAgICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyKCktPmNsb3NlKCk7CiAjZW5kaWYKIAotI2lmIChQ
TEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBI
QVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpKQogICAgICAgICB2aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCktPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKICNl
bmRpZgpAQCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRBbGVydCh1aQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRl
bHkoKTsKICNlbmRpZgogCkBAIC00NDI3LDcgKzQ0MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZXhpdEZ1bGxzY3Jl
ZW5JbW1lZGlhdGVseSgpOwogI2VuZGlmCiAKQEAgLTQ0NDcsNyArNDQ0Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHUKICAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBl
eGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CiAjZW5kaWYKICAgICAvLyBTaW5jZSBydW5KYXZh
U2NyaXB0UHJvbXB0KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJu
IG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCkBAIC00NjEwLDcgKzQ2MTAsNyBAQCBJbnRS
ZWN0IFdlYlBhZ2VQcm94eTo6c3luY1Jvb3RWaWV3VG9TY3JlCiAgICAgcmV0dXJuIHBhZ2VDbGll
bnQoKS5yb290Vmlld1RvU2NyZWVuKHZpZXdSZWN0KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgSW50UG9pbnQm
IHdpbmRvd1BvaW50KQogewogICAgIHdpbmRvd1BvaW50ID0gcGFnZUNsaWVudCgpLmFjY2Vzc2li
aWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KTsKQEAgLTQ2NTEsMTMgKzQ2NTEsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQogewogICAgIG1fdWlDbGllbnQt
PnBhZ2VEaWRTY3JvbGwodGhpcyk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBEbyBub3QgaGlkZSB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIGlm
IHRoZSBzY3JvbGxpbmcgd2FzIGNhdXNlZCBieSB0aGUga2V5Ym9hcmQgc2hvd2luZyB1cC4KICAg
ICBpZiAobV9pc0tleWJvYXJkQW5pbWF0aW5nSW4pCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjbG9z
ZU92ZXJsYXllZFZpZXdzKCk7CiAjZW5kaWYKIH0KQEAgLTQ5MjAsNyArNDkyMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KHMKIH0KICNlbmRpZgogICAgIAotI2lm
IChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5Ojpw
bGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkKIHsKICAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLmdldCgpOwpAQCAtNDkzMiw3ICs0OTMyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5KiBXZWJQYWdlUHJveAogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViUGFnZVByb3h5OjphbGxvd3NNZWRpYURvY3Vt
ZW50SW5saW5lUGxheWJhY2soKSBjb25zdAogewogICAgIHJldHVybiBtX2FsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjazsKQEAgLTUzMDMsNyArNTMwMyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVDb250ZXh0TWVudUtleUUKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJp
bmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgU3RyaW5nJiBk
aXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKQogewogICAgIGlmICghaXNW
YWxpZCgpKQpAQCAtNTk4MCw3ICs1OTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NE
aWRUZXJtaW5hdGUoUAogCiAgICAgQVNTRVJUKG1faXNWYWxpZCk7CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKSkgewogICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkp
Lmhvc3QoKS50b1N0cmluZygpKTsKICAgICAgICAgaWYgKCFkb21haW4uaXNFbXB0eSgpKQpAQCAt
NjA3MCw3ICs2MDcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNr
cwogICAgICAgICBoYW5kbGVyLT5zdG9wQWxsVGFza3NGb3JQYWdlKCp0aGlzKTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJv
eHk6OnByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkK
QEAgLTYxNTQsNyArNjE1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0
U3RhdGUKIAogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0ID0gSW50UmVjdCgpOwogCi0j
aWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQogICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpIHsKICAgICAg
ICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fcGxh
eWJhY2tTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CkBAIC02MTY1LDcgKzYxNjUsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlCiAgICAgfQogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2ZpcnN0TGF5
ZXJUcmVlVHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZCA9IDA7CiAgICAgbV9sYXN0Vmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygpOwog
ICAgIG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBmYWxzZTsKQEAgLTYxNzMsNyAr
NjE3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGUKICAgICBt
X2lzU2Nyb2xsaW5nT3Jab29taW5nID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNs
aWVudCgpLm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5yZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudHMoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTYyMzEsNyArNjIzMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXMKICAgICAgICAgQVNTRVJUKG1fcHJvY2Vz
cy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9j
ZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBt
X2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwogI2VuZGlmCiAKQEAgLTYzNDAsNyArNjM0MCw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0ZXJz
LnVzZVN5c3RlbUFwcGVhcmFuY2UgPSBtX3VzZVN5c3RlbUFwcGVhcmFuY2U7CiAgICAgcGFyYW1l
dGVycy51c2VEYXJrQXBwZWFyYW5jZSA9IHVzZURhcmtBcHBlYXJhbmNlKCk7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYXJhbWV0ZXJz
LnNjcmVlblNpemUgPSBzY3JlZW5TaXplKCk7CiAgICAgcGFyYW1ldGVycy5hdmFpbGFibGVTY3Jl
ZW5TaXplID0gYXZhaWxhYmxlU2NyZWVuU2l6ZSgpOwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVT
Y3JlZW5TaXplID0gb3ZlcnJpZGVTY3JlZW5TaXplKCk7CkBAIC02NDk0LDcgKzY0OTQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgLy8gaWYgdGhlcmUg
aXMgbm8gZGVsZWdhdGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIGNvbXBsZXRpb25IYW5kbGVy
CiAgICAgLy8gZm9yIG90aGVyIGNvZGUgcGF0aHMgdG8gdHJ5LgogICAgIG1fdWlDbGllbnQtPmRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFtZSwg
b3JpZ2luLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAg
ICBwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCgqZnJhbWUsIG9yaWdpbi5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCkBAIC03
MzA2LDcgKzczMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlkZW9Db250cm9sc01hbmFnZXJE
CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigp
IGNvbnN0CiB7Ci0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIgJiYgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZh
Y2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzMxNSw3ICs3MzE1LDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6Omhhc0FjdGl2ZVZpZGVvRm9yQ29udAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKSBjb25zdAogewotI2lmIChQTEFURk9STShJ
T1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lU
KSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
ICAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXItPnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCk7CiAjZW5kaWYKQEAgLTcz
MzAsNyArNzMzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWUK
IAogYm9vbCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4o
KSBjb25zdAogewotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyICYmIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+aXNQbGF5aW5nVmlkZW9JbkVuaGFu
Y2VkRnVsbHNjcmVlbigpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NDk1LDcgKzc0
OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzaWduSW5wdXRFbGVtZW50CiAgICAgbV91
aUNsaWVudC0+ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKCp0
aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKIH0KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQogewogICAgIHBhZ2VDbGllbnQoKS5t
ZWRpYVNlc3Npb25NYW5hZ2VyKCkuYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMs
IGNvbnRleHRJZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBPQkpDX0NMQVNTIF9XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Lmg+CiAjZW5kaWYK
QEAgLTMwNSw3ICszMDUsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBBdHRyaWJ1
dGVkCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2w+
IEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdD4gR2VzdHVyZUNh
bGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCwgdWludDMyX3Q+IFRvdWNoZXNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiY+IFNlbGVjdGlvblJl
Y3RzQ2FsbGJhY2s7CkBAIC0zMzUsNyArMzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVi
bGljIEFQSTo6T2JqZWN0SQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgICwgcHVi
bGljIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bjo6Q2xpZW50CiAjZW5kaWYKLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICwgcHVibGljIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKICNlbmRp
ZgogICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKQEAgLTQwMiwxMiArNDAy
LDEyIEBAIHB1YmxpYzoKICAgICBBUEk6OkZ1bGxzY3JlZW5DbGllbnQmIGZ1bGxzY3JlZW5DbGll
bnQoKSBjb25zdCB7IHJldHVybiAqbV9mdWxsc2NyZWVuQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRG
dWxsc2NyZWVuQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+JiYp
OwogI2VuZGlmCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSogcGxheWJhY2tTZXNzaW9uTWFuYWdlcigpOwogICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eSogdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGFsbG93c01lZGlhRG9jdW1l
bnRJbmxpbmVQbGF5YmFjaygpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrKGJvb2wpOwogI2VuZGlmCkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgZm9udEF0dHJpYnV0ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpG
b250QXR0cmlidXRlcyYsIENhbGxiYWNrSUQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAg
ICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0
KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1
cmVkQ29udGVudFJlY3QoKTsgfQpAQCAtOTY5LDcgKzk2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxDaGFuZ2VQcm9jZXNzSXNSZXNwb25zaXZlKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9j
ZXNzSXNSZXNwb25zaXZlKCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCk7CiAgICAgdm9p
ZCBwcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKICNlbmRpZgpAQCAtMTAxOSw3ICsxMDE5
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5
U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0xMDU1
LDcgKzEwNTUsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3
UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUmVmPEltYWdlQ2FsbGJhY2s+
JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50
SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4m
Jik7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdWlu
dDMyX3QgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24m
Jik7CiAgICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKQEAgLTExMTEsNyArMTExMSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBm
bGFnKTsKICAgICBib29sIHN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoKSB7IHJldHVybiBtX3N1
cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmco
KTsKIAogICAgIHZvaWQgcG90ZW50aWFsVGFwQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiwgdWludDY0X3QmIHJlcXVlc3RJRCk7CkBAIC0xMjYyLDExICsxMjYyLDExIEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlKiB2YWxpZGF0aW9uQnViYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWxpZGF0aW9uQnViYmxlLmdldCgpOyB9IC8vIEZvciB0ZXN0aW5n
LgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIHNldElzS2V5Ym9hcmRBbmltYXRpbmdJbihib29sIGlzS2V5Ym9hcmRBbmltYXRp
bmdJbikgeyBtX2lzS2V5Ym9hcmRBbmltYXRpbmdJbiA9IGlzS2V5Ym9hcmRBbmltYXRpbmdJbjsg
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQo
dWludDY0X3QpOwogICAgIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWlu
dDY0X3QpOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKHVpbnQ2NF90LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKQEAgLTE0ODksNyArMTQ4OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc1Jlc2l6YWJsZShib29sIGlzUmVzaXphYmxlKTsK
ICAgICB2b2lkIHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVl
blBvaW50LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3OjpEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpE
ZWxheWVkUmVwbHkmJik7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCk7
CiAgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0KTsKICNlbmRpZgpAQCAt
MTY2Niw3ICsxNjY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNr
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGdlc3R1cmVD
YWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIHRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMsIENh
bGxiYWNrSUQpOwpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVk
aXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFi
bGVTY3JlZW5TaXplKCk7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6
ZSgpOwpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2goKTsKICAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7
CiAgICAgdm9pZCBhc3Npc3RlZE5vZGVJbmZvcm1hdGlvbkNhbGxiYWNrKGNvbnN0IEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uJiwgQ2FsbGJhY2tJRCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CkBAIC0x
OTE0LDEyICsxOTE0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVs
bHNjcmVlbkNsaWVudD4gbV9mdWxsc2NyZWVuQ2xpZW50OwogI2VuZGlmCiAKLSNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShB
VktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gbV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOwogICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IG1f
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyBt
X2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU7CiAgICAgdWludDY0X3QgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQgeyAwIH07CiAgICAgaW50MzJfdCBt
X2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgcHJpdmF0ZToK
IAogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtX2FjdGl2aXR5
U3RhdGU7CiAgICAgYm9vbCBtX3ZpZXdXYXNFdmVySW5XaW5kb3cgeyBmYWxzZSB9OwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9hbGxvd3NN
ZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgeyBmYWxzZSB9OwogICAgIFByb2Nlc3NUaHJvdHRsZXI6
OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKQEAgLTIyMjAsMTEgKzIy
MjAsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1l
ZGlhRWxlbWVudHMgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9yZXF1aXJl
c1RhcmdldE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZUFzc2lz
dGFuY2VBcmd1bWVudHM+IG1fZGVmZXJyZWROb2RlQXNzaXN0YW5jZUFyZ3VtZW50czsKICAgICBi
b29sIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIERpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCiAgICAgRGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IHR5cGUsIGJvb2wgaGFuZGxlZCkKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNldEN1cnNv
cihXZWJDb3JlOjpDdXJzb3IgY3Vyc29yKQogICAgIFNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
b3Zlcyhib29sIGhpZGRlblVudGlsTW91c2VNb3ZlcykKICNlbmRpZgpAQCAtNjgsNyArNjgsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEhpZGVWYWxpZGF0aW9uTWVzc2FnZSgp
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50IHNjcmVl
blBvaW50KSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgd2luZG93UG9pbnQpCiAgICAgUm9vdFZpZXdU
b0FjY2Vzc2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCByZWN0KSAtPiAoV2ViQ29yZTo6
SW50UmVjdCBzY3JlZW5GcmFtZSkKICNlbmRpZgpAQCAtMTg3LDcgKzE4Nyw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZv
bnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogICAgIEZvbnRBdHRyaWJ1dGVz
Q2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3Qg
ZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFRvdWNoZXNDYWxsYmFj
ayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxh
Z3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEF1dG9jb3JyZWN0aW9uRGF0
YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZv
bnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCkBAIC00MDAsNyArNDAwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBXaW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2li
bGUsIHVpbnQ2NF90IHdpbmRvd0lEKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKQogICAg
IFJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3Jv
bGxQb3NpdGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6OlJl
Y3RFZGdlczxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKICAgICBS
ZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gdW5vYnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQpAQCAtNDg5LDcgKzQ4OSw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBDb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24oV2ViQ29yZTo6VVJMIHVybCwgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFZlY3RvcjxT
dHJpbmc+IG5vdGlmaWNhdGlvbnMpCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFkZFBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZW1vdmVQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KHVpbnQ2NF90IGNsaWVudElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJv
b2wgaGFzVmlkZW8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKTsKICAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lk
IHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV3JpdGVVUkxUb1Bhc3Rl
Ym9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgdXJsLCBTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpCiAgICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAg
V3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBh
c3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDUsNyArMjQ1LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJv
YwogICAgICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyKFt0aGlz
XShSZWZDb3VudGVyRXZlbnQpIHsgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOyB9KQogICAgICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NQb29sOjp1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGlu
Z0F1dG9JbmNyZWFzZUxpbWl0KQogICAgICwgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWlu
YXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3NlcykKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlz
XShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICAgICAs
IG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgpAQCAtNDk4LDcgKzQ5OCw3IEBA
IE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9jb25m
aWd1cmF0aW9uLT5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFN0
cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y29va2llU3RvcmFnZURpcmVjdG9y
eSgpOwogICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb29r
aWVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwpAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omlu
aXRpYWxpemVOZXdXZWJQcm8KICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxl
RW5hYmxlZEZyb21EZWZhdWx0cygpOwogI2VuZGlmCiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFUKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBh
dXRvIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uID0gWyZdIHsKICAgICAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdl
YlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKQEAgLTIwMTAsNyArMjAxMCw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBvc3RNZXNzYWdlVG9TZXJ2aWMKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZDsgdGFr
ZSBuZXcgdG9rZW5zIGZvciB0aGUgbmV3IG5ldHdvcmsgcHJvY2Vzcy4KICAgICBpZiAobV9iYWNr
Z3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQo
KSB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQ7IH0KICAgICB2
b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQoYm9vbCBmbGFnKTsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMoKTsKICNlbmRpZgog
CkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3Rl
clByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29s
Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlz
dGVuZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGZvcmVncm91
bmRXZWJQcm9jZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rv
a2VuKG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAgICAgQmFja2dy
b3VuZFdlYlByb2Nlc3NUb2tlbiBiYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyBy
ZXR1cm4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbihtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlci5jb3VudCgpKTsgfQogI2VuZGlmCkBAIC01MDYsMTEgKzUwNiwxMSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGxhbmd1YWdlQ2hhbmdlZCh2b2lkKiBjb250ZXh0KTsKICAgICB2b2lk
IGxhbmd1YWdlQ2hhbmdlZCgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
U3RyaW5nIHBhcmVudEJ1bmRsZURpcmVjdG9yeSgpIGNvbnN0OwogICAgIFN0cmluZyBuZXR3b3Jr
aW5nQ2FjaGVzRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHdlYkNvbnRlbnRDYWNoZXNE
aXJlY3RvcnkoKSBjb25zdDsKQEAgLTY4NCw3ICs2ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBT
dHJpbmcgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwogICAgICAgICBTdHJpbmcgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwogICAgICAg
ICBTdHJpbmcgY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgY29udGFp
bmVyVGVtcG9yYXJ5RGlyZWN0b3J5OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdlUHJveHkqPj4gbV9zZXNzaW9u
VG9QYWdlc01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlciBt
X2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXIgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxl
cjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJv
Y2VzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkT3JDaGVja0Rpc2FibGVkKCkK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1
cm4gTElLRUxZKFJ1bkxvb3A6OmlzTWFpbigpKSB8fCAhbGlua2VkT25PckFmdGVyKFNES1ZlcnNp
b246OkZpcnN0V2l0aE1haW5UaHJlYWRSZWxlYXNlQXNzZXJ0aW9uSW5XZWJQYWdlUHJveHkpOwog
I2VsaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBMSUtFTFkoUnVuTG9vcDo6aXNNYWluKCkp
IHx8ICFsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RXaXRoTWFpblRocmVhZFJlbGVh
c2VBc3NlcnRpb25JbldlYlBhZ2VQcm94eSk7CkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZwogCiAgICAgbV9wcm9jZXNzUG9vbC0+cHJv
Y2Vzc0RpZEZpbmlzaExhdW5jaGluZyh0aGlzKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25uZWN0aW9uKCkpIHsKICAgICAgICAgaWYg
KHhwY19jb25uZWN0aW9uX3QgeHBjQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVj
dGlvbigpKQogICAgICAgICAgICAgbV90aHJvdHRsZXIuZGlkQ29ubmVjdFRvUHJvY2Vzcyh4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKHhwY0Nvbm5lY3Rpb24pKTsKQEAgLTExNDgsNyArMTE0OCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQcm9jZXNzU3UKIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogewot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGVudW0gRm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyVHlwZSB7IH07CiB0eXBlZGVmIFJlZkNvdW50ZXI8Rm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyVHlwZT4gRm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwogdHlwZWRlZiBG
b3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI6OlRva2VuIEZvcmVncm91bmRXZWJQcm9jZXNzVG9r
ZW47CkBAIC0zNjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJPZlRpbWVz
U3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhy
b3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1f
dG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgRm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbiBtX2ZvcmVncm91
bmRUb2tlbjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fYmFja2dyb3VuZFRva2Vu
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JN
KElPU01BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFDKQog
CiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGUu
aCIKQEAgLTExNiw0ICsxMTYsNCBAQCAtICh2b2lkKWRyYXdJblJlY3Q6KENHUmVjdClyZWN0IGZv
clBhZ2VBCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElP
U01BQykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TTUFD
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgIl9XS1dlYlZpZXdQcmludEZv
cm1hdHRlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TTUFDKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NNQUMpCiAKIEBpbnRlcmZhY2Ug
VUlQcmludEZvcm1hdHRlciAoKQogLSAoQ0dSZWN0KV9wYWdlQ29udGVudFJlY3Q6KEJPT0wpZmly
c3RQYWdlOwpAQCAtNDEsNCArNDEsNCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBDR1BERkRvY3VtZW50UmVmIF93a19wcmludGVkRG9jdW1lbnQ7CiBAZW5kCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU01BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBSZWY8UGFnZUNvbmZpZ3Vy
YXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3JlID0g
dGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhpcy0+
bV9zZXNzaW9uSUQ7CiAgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29weS0+
bV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZv
cmVncm91bmRQcmlvcml0eTsKICNlbmRpZgogICAgIGNvcHktPm1faW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCA9IHRoaXMtPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpIHsg
cmV0dXJuIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0KICAgICB2
b2lkIHNldFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKGJvb2wgdHJlYXRz
U0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpIHsgbV90cmVhdHNTSEExU2lnbmVkQ2Vy
dGlmaWNhdGVzQXNJbnNlY3VyZSA9IHRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlOyB9IAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQogICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAogI2VuZGlmCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIGJvb2wgbV90cmVhdHNTSEExU2lnbmVkQ2Vy
dGlmaWNhdGVzQXNJbnNlY3VyZSB7IHRydWUgfTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9y
aXR5IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGNvcHktPm1fYWx3YXlzUnVuc0F0
QmFja2dyb3VuZFByaW9yaXR5ID0gdGhpcy0+bV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3Jp
dHk7CiAgICAgY29weS0+bV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uID0gdGhpcy0+
bV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOwogICAgIGNvcHktPm1fc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5VSVByb2Nlc3MgPSB0aGlzLT5tX3Nob3VsZENhcHR1cmVBdWRpb0luVUlQcm9j
ZXNzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNv
cHktPm1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gdGhpcy0+bV9jdERhdGFDb25uZWN0
aW9uU2VydmljZVR5cGU7CiAjZW5kaWYKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRCA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzOyB9CiAgICAg
dm9pZCBzZXRTaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2Vzcyhib29sIHNob3VsZENhcHR1cmVB
dWRpb0luVUlQcm9jZXNzKSB7IG1fc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MgPSBzaG91
bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzczsgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN0RGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlOyB9CiAgICAgdm9pZCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV1RG
OjpTdHJpbmcmIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSkgeyBtX2N0RGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZSA9IGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsgfQogI2VuZGlmCkBA
IC0yMDEsNyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBdXRvbWF0aWNQcm9jZXNz
V2FybWluZ0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tV2ViQ29u
dGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV1RGOjpTdHJpbmcgbV9jdERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGU7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JK
Q19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKIE9C
SkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSopIHsgfQogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZF
KEFQUF9MSU5LUykKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25z
Rm9yRWxlbWVudChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKSB7IHJldHVybiB0cnVlOyB9CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rv
ci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLSW5zcGVjdG9yLmgiCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKQEAgLTEzMSw0ICsxMzEsNCBAQCB2b2lk
IFdLSW5zcGVjdG9yVG9nZ2xlRWxlbWVudFNlbGVjdGlvbihXCiAgICAgdG9JbXBsKGluc3BlY3Rv
clJlZiktPnRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
NzYsNyArMjY3Niw3IEBAIHZvaWQgV0tQYWdlU2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoV0sK
IAogdm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhXS1BhZ2VSZWYgcGFn
ZSwgYm9vbCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0b0ltcGwocGFnZSktPnNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBACiAKIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFi
bGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50
aWZpZXJSZWYpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gV2ViQ29yZTo6UGx1Z2luQmxh
Y2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSgoX19icmlkZ2UgTlNTdHJpbmcgKilhZG9w
dENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdJbkJ1bmRs
ZUlkZW50aWZpZXJSZWYpKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8V2Vi
Q29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2Vsc2UKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgog
I2VuZGlmCiAKQEAgLTQ1LDcgKzQ1LDcgQEAgTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcgogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBz
aGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRo
YXQgYW55IG1vcmUuCiAgICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWln
cmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgogICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3Vs
ZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRh
dGEgc3RvcmUgd2l0aApAQCAtMTE1LDcgKzExNSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmxlZ2FjeURlZmEKICAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAgICAgaWYgKCFhcHBOYW1lKQogICAgICAgICBh
cHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBxdWly
ayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdl
LCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCiAgICAgLy8gUHJlc2Vydmlu
ZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgogICAg
IGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhCiAgICAgCiAgICAgQVNTRVJUKGFwcE5h
bWUpOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TU3RyaW5nICpjYWNoZURpciA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcyJdOwogI2Vsc2UKICAgICBjaGFyIGNh
Y2hlRGlyZWN0b3J5W01BWFBBVEhMRU5dOwpAQCAtMjAxLDcgKzIwMSw3IEBAIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmEKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXVEY6OlN0
cmluZyBwYXRoID0gV2ViS2l0OjpwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOwogICAgIGlmIChw
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHN0YXRpYyBXS05hdmlnYXRpb25UeXBlIHRvV0tOYXZpZ2F0aW9uVHkKICAgICBy
ZXR1cm4gV0tOYXZpZ2F0aW9uVHlwZU90aGVyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUgdG9XS1N5
bnRoZXRpY0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlw
ZSBzeW50aGV0aWNDbGlja1R5cGUpCiB7CiAgICAgc3dpdGNoIChzeW50aGV0aWNDbGlja1R5cGUp
IHsKQEAgLTEyNyw3ICsxMjcsNyBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7CiAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5
cGUgPSAlbGQ7IHN5bnRoZXRpY0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24geCA9ICUuMmYgeSA9
ICUuMmYgcmVxdWVzdCA9ICVAOyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIs
IE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLAogICAgICAgICAobG9uZylzZWxm
Lm5hdmlnYXRpb25UeXBlLAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUsIHNlbGYuX2NsaWNr
TG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMueCwgc2VsZi5fY2xpY2tMb2NhdGlvbkluUm9v
dFZpZXdDb29yZGluYXRlcy55LAogI2Vsc2UKICAgICAgICAgMEwsIDAuMCwgMC4wLApAQCAtMTU1
LDcgKzE1NSw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICByZXR1cm4gX25hdmln
YXRpb25BY3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXS1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhl
dGljQ2xpY2tUeXBlCiB7CiAgICAgcmV0dXJuIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoX25hdmln
YXRpb25BY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJldmlld0Fj
dGlvbkl0ZW1JZGVudGlmaWVycy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogCi0jaWYgV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIE5TU3RyaW5nICogY29uc3QgV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZp
ZXJPcGVuID0gQCJXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllck9wZW4iOwogTlNTdHJpbmcg
KiBjb25zdCBXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllckFkZFRvUmVhZGluZ0xpc3QgPSBA
IldLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVyQWRkVG9SZWFkaW5nTGlzdCI7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmV2aWV3RWxlbWVudEluZm8ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJldmll
d0VsZW1lbnRJbmZvLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmV2aWV3RWxlbWVudEluZm8ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3RWxl
bWVudEluZm9JbnRlcm5hbC5oIgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9T
KQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS1ByZXZpZXdFbGVtZW50SW5mbwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQg
IldLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC01OSw5ICs1OSw5IEBAIElHTk9SRV9XQVJOSU5HU19F
TkQKIAogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1Byb2Nlc3NHcm91cERlbGVnYXRlPj4gX2RlbGVn
YXRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
UmV0YWluUHRyPFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNvbm5lY3Rpb24oV0tDb250ZXh0UmVmLCBXS0Nv
bm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTIz
NiwxNCArMjM2LDE0IEBAIC0gKHZvaWQpX3NldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2EK
ICAgICBfcHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChX
ZWJLaXQ6OldlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
bygoX19icmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSkucHRyKCksIGhvc3QpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgKilfZ2VvbG9jYXRpb25Qcm92aWRlcgogewogICAgIGlmICgh
X2dlb2xvY2F0aW9uUHJvdmlkZXIpCiAgICAgICAgIF9nZW9sb2NhdGlvblByb3ZpZGVyID0gYWRv
cHROUyhbW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBhbGxvY10gaW5pdFdpdGhQcm9jZXNzUG9v
bDoqX3Byb2Nlc3NQb29sLmdldCgpXSk7CiAgICAgcmV0dXJuIF9nZW9sb2NhdGlvblByb3ZpZGVy
LmdldCgpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiBAZW5kCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCAiV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLmgiCiAjZW5kaWYKQEAgLTY0LDEwICs2NCwxMCBAQCBzdGF0aWMgV0tQ
cm9jZXNzUG9vbCAqc2hhcmVkUHJvY2Vzc1Bvb2w7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rv
d25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0ZTsKIAogICAgIFJldGFpblB0cjxfV0tB
dXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25TZXNzaW9uOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1M+IF9nZW9sb2NhdGlvblByb3ZpZGVyOwogICAgIFJldGFpblB0cjxpZCA8X1dLR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+IF9jb3JlTG9jYXRpb25Qcm92aWRlcjsKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAgLTEzNCwxNCArMTM0LDE0IEBAIC0gKEFQ
STo6T2JqZWN0JilfYXBpT2JqZWN0CiAgICAgcmV0dXJuICpfcHJvY2Vzc1Bvb2w7CiB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyAqKV9nZW9sb2NhdGlvblByb3ZpZGVyCiB7CiAgICAgaWYgKCFfZ2VvbG9j
YXRpb25Qcm92aWRlcikKICAgICAgICAgX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBhZG9wdE5TKFtb
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGFsbG9jXSBpbml0V2l0aFByb2Nlc3NQb29sOipfcHJv
Y2Vzc1Bvb2xdKTsKICAgICByZXR1cm4gX2dlb2xvY2F0aW9uUHJvdmlkZXIuZ2V0KCk7CiB9Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IEBlbmQKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjoo
TlNVUkwgKilzZXIKIAogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBXZWJLaXQ6
OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wbHVnaW5Qcm9jZXNzZXMoKS5zaXpl
KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIC0gKHZvaWQpX3Nl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2UKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZCA8X1dLR2VvbG9jYXRpb25Db3Jl
TG9jYXRpb25Qcm92aWRlcj4pX2NvcmVMb2NhdGlvblByb3ZpZGVyCiB7CiAgICAgcmV0dXJuIF9j
b3JlTG9jYXRpb25Qcm92aWRlci5nZXQoKTsKQEAgLTU2Miw3ICs1NjIsNyBAQCAtICh2b2lkKV9z
ZXRDb3JlTG9jYXRpb25Qcm92aWRlcjooaWQ8X1dLCiAKICAgICBfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgPSBjb3JlTG9jYXRpb25Qcm92aWRlcjsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxv
YWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQAogI2ltcG9ydCAiV0tEYXRhRGV0ZWN0b3JU
eXBlc0ludGVybmFsLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAjaW1wb3J0ICJQ
cm9jZXNzVGhyb3R0bGVyLmgiCkBAIC0xNjgsOSArMTY4LDkgQEAgLSAoVUlWaWV3Q29udHJvbGxl
ciAqKV9yb290QW5jZXN0b3JWaWV3QwogLSAoVUlWaWV3Q29udHJvbGxlciAqKV92aWV3Q29udHJv
bGxlckZvclN1cHBvcnRlZEludGVyZmFjZU9yaWVudGF0aW9uczsKIEBlbmQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3QgdWludDMy
X3QgZmlyc3RTREtWZXJzaW9uV2l0aExpbmtQcmV2aWV3RW5hYmxlZEJ5RGVmYXVsdCA9IDB4QTAw
MDA7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVj
dHNMb2dnaW5nID0gMV9zOwogI2VuZGlmCkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyTwogCiAgICAgc3RkOjpvcHRpb25hbDxCT09MPiBf
cmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0
cjxfV0tSZW1vdGVPYmplY3RSZWdpc3RyeT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAgICAg
UmV0YWluUHRyPFdLU2Nyb2xsVmlldz4gX3Njcm9sbFZpZXc7CkBAIC0zODIsNyArMzgyLDcgQEAg
LSAoQk9PTClfaXNWYWxpZAogICAgIHJldHVybiBfcGFnZSAmJiBfcGFnZS0+aXNWYWxpZCgpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMg
aW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbkZvclVJSW50ZXJmYWNlT3JpZW50YXRpb24oVUlJbnRl
cmZhY2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9u
KSB7CkBAIC00NjgsNyArNDY4LDcgQEAgLSAoQk9PTClfaXNSZXRhaW5pbmdBY3RpdmVGb2N1c2Vk
U3RhdGUKIAogc3RhdGljIGJvb2wgc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8o
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0
YXRpYyBib29sIHNob3VsZFJlcXVpcmVVc2VyR2VzdHVyZVRvTG9hZFZpZGVvID0gZHlsZF9nZXRf
cHJvZ3JhbV9zZGtfdmVyc2lvbigpID49IERZTERfSU9TX1ZFUlNJT05fMTBfMDsKICAgICByZXR1
cm4gc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW87CiAjZWxzZQpAQCAtNTE4LDcg
KzUxOCw3IEBAIHN0YXRpYyB2b2lkIHZhbGlkYXRlKFdLV2ViVmlld0NvbmZpZ3VyYXQKICAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24uX3Zpc2l0ZWRMaW5rU3RvcmUpCiAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJjb25maWd1cmF0aW9u
Ll92aXNpdGVkTGlua1N0b3JlIGlzIG5pbCJdOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghY29uZmlndXJhdGlvbi5fY29udGVudFBy
b3ZpZGVyUmVnaXN0cnkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJjb25maWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdp
c3RyeSBpcyBuaWwiXTsKICNlbmRpZgpAQCAtNTk1LDcgKzU5NSw3IEBAICAgICAvLyBXZSBhcmUg
aW4gdGhlIFZpZXcncyBpbml0aWFsaXphdGkKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXRE
aXJlY3Rpb25LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShjb252ZXJ0
U3lzdGVtTGF5b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikp
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2tdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFja0FmdGVyRnVsbHNjcmVlbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxs
c2NyZWVuXSkpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmlubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1Bs
YXlzSW5saW5lQXR0cmlidXRlS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlXSkpOwpAQCAtNjE3LDcgKzYxNyw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhl
IFZpZXcncyBpbml0aWFsaXphdGkKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjptZWRpYURhdGFMb2Fkc0F1dG9t
YXRpY2FsbHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5XSkpOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hdHRhY2htZW50RWxlbWVudEVuYWJsZWRd
KSk7CiAKLSNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6ZGF0YURldGVjdG9yVHlwZXNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJvbVdLRGF0YURldGVjdG9yVHlwZXMoW19j
b25maWd1cmF0aW9uIGRhdGFEZXRlY3RvclR5cGVzXSkpKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtNjM4LDEyICs2MzgsMTIgQEAgICAgIC8vIFdl
IGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxpemF0aQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeUVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRd
KSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAoIVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldl
YktpdC5TZXJ2aWNlV29ya2VycyIpKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2Vy
c0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShmYWxzZSkp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBDR1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CiAgICAgX3Njcm9sbFZpZXcgPSBhZG9w
dE5TKFtbV0tTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kc10pOwogICAgIFtf
c2Nyb2xsVmlldyBzZXRJbnRlcm5hbERlbGVnYXRlOnNlbGZdOwpAQCAtNzMxLDcgKzczMSw3IEBA
ICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0aWFsaXphdGkKIAogICAgIF9pY29uTG9h
ZGluZ0RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdh
dGU+KHNlbGYpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgW3NlbGYgX3NldFVwU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50XTsKICNlbmRpZgog
CkBAIC03NDAsNyArNzQwLDcgQEAgICAgIC8vIFdlIGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxp
emF0aQogCiAgICAgcGFnZVRvVmlld01hcCgpLmFkZChfcGFnZS5nZXQoKSwgc2VsZik7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfZHJhZ0ludGVy
YWN0aW9uUG9saWN5ID0gX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5RGVmYXVsdDsKIAogICAgIF90
aW1lT2ZSZXF1ZXN0Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CkBAIC03NTAsMTIgKzc1MCwxMiBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3J3Mg
aW5pdGlhbGl6YXRpCiAjZWxzZQogICAgIF9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0ID0gTk87
CiAjZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIH0KIAogLSAodm9pZClfc2V0VXBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQK
IHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJC
YWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbV2ViQmFja2dyb3VuZFRhc2tD
b250cm9sbGVyIHNoYXJlZENvbnRyb2xsZXJdOwogICAgIGlmIChjb250cm9sbGVyLmJhY2tncm91
bmRUYXNrU3RhcnRCbG9jaykKICAgICAgICAgcmV0dXJuOwpAQCAtODI2LDcgKzgyNiw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIFtfdGV4dEZpbmRlckNsaWVudCB3aWxsRGVzdHJveVZpZXc6c2Vs
Zl07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFtfY29udGVudFZpZXcgX3dlYlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1v
dGVPYmplY3RSZWdpc3RyeSkKQEAgLTgzNSw3ICs4MzUsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAog
ICAgIF9wYWdlLT5jbG9zZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgW19yZW1vdGVPYmplY3RSZWdpc3RyeSBfaW52YWxpZGF0ZV07CiAgICAg
W1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIHJlbW92ZVBhZ2U6Kl9w
YWdlXTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9i
c2VydmVyOnNlbGZdOwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RX
aXRoQ29uZmlndXJhdGlvbjooVwogICAgIH0pOwogfQogCi0jZWxpZiBQTEFURk9STShJT1MpCisj
ZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmln
dXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoVUlJbWFnZSAqLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAgICAgQ0dSZWN0IHJlY3RJblZpZXdDb29yZGluYXRlcyA9IHNuYXBzaG90
Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlvbi5yZWN0
KSA/IHNuYXBzaG90Q29uZmlndXJhdGlvbi5yZWN0IDogc2VsZi5ib3VuZHM7CkBAIC0xMTc2LDcg
KzExNzYsNyBAQCAtIChCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHJldHVybiBfaW1wbC0+YWxsb3dzTGlua1ByZXZpZXcoKTsKLSNlbGlmIFBMQVRGT1JN
KElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIF9hbGxvd3NMaW5r
UHJldmlldzsKICNlbmRpZgogfQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgLSAodm9pZClzZXRBbGxv
d3NMaW5rUHJldmlldzooQk9PTClhbGxvdwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBfaW1wbC0+
c2V0QWxsb3dzTGlua1ByZXZpZXcoYWxsb3dzTGlua1ByZXZpZXcpOwogICAgIHJldHVybjsKLSNl
bGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9h
bGxvd3NMaW5rUHJldmlldyA9PSBhbGxvd3NMaW5rUHJldmlldykKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMTk4LDcgKzExOTgsNyBAQCAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09M
KWFsbG93CiAgICAgZWxzZQogICAgICAgICBbX2NvbnRlbnRWaWV3IF91bnJlZ2lzdGVyUHJldmll
d107CiAjZW5kaWYgLy8gSEFWRShMSU5LX1BSRVZJRVcpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIC0gKENHU2l6ZSlfdmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cwpAQCAtMTI4MCw3ICsxMjgwLDcgQEAgLSAodm9pZClf
ZGlkUmVtb3ZlQXR0YWNobWVudDooQVBJOjpBdHRhYwogCiAjcHJhZ21hIG1hcmsgaU9TLXNwZWNp
ZmljIG1ldGhvZHMKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAtIChfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kpX2RyYWdJbnRlcmFjdGlvblBvbGljeQog
ewpAQCAtMzIyNSw3ICszMjI1LDcgQEAgLSAoQk9PTClfaGF2ZVNldE9ic2N1cmVkSW5zZXRzCiAg
ICAgcmV0dXJuIF9oYXZlU2V0T2JzY3VyZWRJbnNldHM7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0VWRU5UUykKIApAQCAtNDQ3Niw3ICs0NDc2LDcgQEAgLSAodm9pZClfc2V0U2hv
dWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlcgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQgKF4pKHZvaWQpKV9yZXRhaW5BY3Rp
dmVGb2N1c2VkU3RhdGUKIHsKICAgICArK19hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsK
QEAgLTQ5NTQsNyArNDk1NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0
b0ZpbmQKIAogLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBv
cHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENv
dW50CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKF9jdXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdl
Yl9jb3VudFN0cmluZ01hdGNoZXM6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDptYXhD
b3VudF07CiAgICAgICAgIHJldHVybjsKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIC0gKHZvaWQpX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKikKIAogLSAodm9pZClfZmluZFN0cmluZzooTlNT
dHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDoo
TlNVSW50ZWdlciltYXhDb3VudAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChfY3VzdG9tQ29udGVudFZpZXcpIHsKICAgICAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfZmluZFN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENv
dW50Om1heENvdW50XTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk3Niw3ICs0OTc2LDcgQEAgLSAo
dm9pZClfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbwogCiAtICh2b2lkKV9oaWRlRmlu
ZFVJCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKF9jdXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdl
Yl9oaWRlRmluZFVJXTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTE4Niw3ICs1MTg2LDcgQEAgLSAo
Qk9PTClfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbgogCiAtIChOU0FycmF5ICopX3Nj
cm9sbFBlcmZvcm1hbmNlRGF0YQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YSogc2Nyb2xsUGVyZkRhdGEgPSBfcGFnZS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhKCkpCiAgICAgICAgIHJldHVybiBzY3JvbGxQZXJmRGF0YS0+ZGF0YSgpOwogI2VuZGlmCkBA
IC01MTk3LDcgKzUxOTcsNyBAQCAtIChOU0FycmF5ICopX3Njcm9sbFBlcmZvcm1hbmNlRGF0YQog
CiAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gX3BhZ2UtPmFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjaygpOwogI2Vsc2UKICAgICByZXR1cm4gTk87
CkBAIC01MjA2LDcgKzUyMDYsNyBAQCAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5l
UGxheWJhCiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazoo
Qk9PTClmbGFnCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgX3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhmbGFnKTsK
ICNlbmRpZgogfQpAQCAtNTI3MSw3ICs1MjcxLDcgQEAgLSAodm9pZClfc2V0UGFnZU11dGVkOihf
V0tNZWRpYU11dGVkU3RhdAogCiAjcHJhZ21hIG1hcmsgaU9TLXNwZWNpZmljIG1ldGhvZHMKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogLSAodm9pZClyZW1vdmVGcm9tU3VwZXJ2aWV3CkBAIC01NzM3LDcg
KzU3MzcsNyBAQCAtICh2b2lkKXNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTooVUlTCiAgICAg
X3BhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odG9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKGNvbnRlbnRBdHRyaWJ1dGUpKTsKIH0KIAotI2Vsc2UgLy8gI2lmIFBMQVRG
T1JNKElPUykKKyNlbHNlIC8vICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjcHJhZ21hIG1h
cmsgLSBPUyBYLXNwZWNpZmljIG1ldGhvZHMKIApAQCAtNjAxNCwxNCArNjAxNCwxNCBAQCAtIChO
U0RpY3Rpb25hcnkgKilfY29udGVudHNPZlVzZXJJbnRlcmZhCiAgICAgICAgIHJldHVybiBAeyB1
c2VySW50ZXJmYWNlSXRlbTogQHsgQCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwgQCJm
b250U2l6ZSI6IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOmZvbnRTaXplXSB9IH07CiAgICAg
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0
dXJuIFtfY29udGVudFZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTooTlNTdHJpbmcg
Kil1c2VySW50ZXJmYWNlSXRlbV07CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClf
cmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRBdFBvc2l0aW9uOihDR1BvaW50KXBvc2l0aW9uIGNvbXBs
ZXRpb25CbG9jazoodm9pZCAoXikoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKikpYmxvY2sKIHsK
ICAgICBhdXRvIGluZm9SZXF1ZXN0ID0gV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pKTsKQEAgLTYyODYsNyArNjI4
Niw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9wcm9wZXJ0aWVzT2ZMYXllcldpdGgKICAgICB9Owog
fQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpZiBQTEFURk9STShNQUMpCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWZGb3JUcmFuc2l0
aW9uVG9XS1dlYlZpZXcKQEAgLTY1MjgsNyArNjUyOCw3IEBAIC0gKENHRmxvYXQpX3BhZ2VTY2Fs
ZQogCiAtICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lk
ICheKSh2b2lkKSl1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOihCT09MKXdp
dGhvdXRXYWl0aW5nRm9yUGFpbnRpbmcgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZToo
Qk9PTCl3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRD
b250ZW50Vmlld10pIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgdXBkYXRlQmxvY2spOwogICAgICAgICByZXR1cm47CkBAIC02NTQ1LDcgKzY1NDUs
NyBAQCAtICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uCiAgICAgICAgIGlm
ICghdXBkYXRlQmxvY2tDb3B5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmICghd2l0aG91dFdhaXRp
bmdGb3JBbmltYXRlZFJlc2l6ZSAmJiBzdHJvbmdTZWxmLT5fZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSAhPSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKSB7
CiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY2FsbGJhY2tzRGVmZXJyZWREdXJpbmdSZXNpemUu
YXBwZW5kKFt1cGRhdGVCbG9ja0NvcHldIHsKICAgICAgICAgICAgICAgICB1cGRhdGVCbG9ja0Nv
cHkoKTsKQEAgLTY1NzksNyArNjU3OSw3IEBAIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0
aW9uVXBkYXRlV2kKIAogLSAodm9pZClfZG9BZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX3Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUNhbGxi
YWNrcy5hcHBlbmQobWFrZUJsb2NrUHRyKHVwZGF0ZUJsb2NrKSk7CiAgICAgW3NlbGYgX3NjaGVk
dWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKICNlbHNlCkBAIC02NjAwLDcgKzY2MDAsNyBA
QCAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopCiAgICAgfSk7CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoQ0dSZWN0
KV9kcmFnQ2FyZXRSZWN0CiB7CkBAIC02NjIxLDcgKzY2MjEsNyBAQCAtICh2b2lkKV9zaW11bGF0
ZVRleHRFbnRlcmVkOihOU1N0cmluZyAqCiAgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVUZXh0
RW50ZXJlZDp0ZXh0XTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAtIChCT09MKV9iZWdpbkJhY2tTd2lwZUZvclRlc3RpbmcK
IHsKQEAgLTY2NzgsNyArNjY3OCw3IEBAIC0gKHZvaWQpX2RlbnlOZXh0VXNlck1lZGlhUmVxdWVz
dAogQGVuZAogCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKEZ1bGxTY3JlZW5BUEkpCiAKQEAgLTY3MDUsNyArNjcw
NSw3IEBAIC0gKHZvaWQpY2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgogfQogCiBAZW5k
Ci0jZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aWYgUExBVEZPUk0oTUFDKQogCkBAIC02NzYzLDcgKzY3NjMsNyBAQCAtIChJQkFjdGlvbilzdG9w
TG9hZGluZzooaWQpc2VuZGVyCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFU
Rk9STShJT1MpICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKElPU01BQykKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlcikKIAogLSAoQ2xhc3MpX3ByaW50Rm9ybWF0dGVyQ2xhc3MKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Rldmlj
ZS5oPgogI2VuZGlmCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgVCBtX3ZhbHVlOwog
fTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0
aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkKIHsK
QEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVs
YXkoCiAgICAgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2g7CiAgICAgQk9PTCBfYWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHM7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5Pj4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OwogICAgIEJPT0wg
X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2s7CiAgICAgQk9PTCBfaW5saW5lTWVkaWFQbGF5YmFj
a1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU7CkBAIC0xNzIsNyArMTcyLDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXQKIAogICAgIF9wYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgX2FsbG93c1BpY3R1cmVJblBp
Y3R1cmVNZWRpYVBsYXliYWNrID0gWUVTOwogI2VuZGlmCkBAIC0xOTgsNyArMTk4LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXQKICAgICBfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQgPSBO
TzsKICAgICBfYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gTk87CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcmVzcGVjdHNJbWFnZU9yaWVudGF0
aW9uID0gWUVTOwogICAgIF9wcmludHNCYWNrZ3JvdW5kcyA9IFlFUzsKICNlbmRpZgpAQCAtMjI0
LDcgKzIyNCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgX2FsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzID0gTk87CiAgICAgX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrID0gWUVTOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgX3NlbGVjdGlvbkdyYW51bGFyaXR5ID0gV0tTZWxlY3Rpb25HcmFudWxhcml0eUR5
bmFtaWM7CiAgICAgX2RyYWdMaWZ0RGVsYXkgPSB0b0RyYWdMaWZ0RGVsYXkoW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gaW50ZWdlckZvcktleTpAIldlYktpdERlYnVnRHJh
Z0xpZnREZWxheSJdKTsKICNpZiBQTEFURk9STShXQVRDSE9TKQpAQCAtMjM1LDcgKzIzNSw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkID0gWUVT
OwogI2VuZGlmCiAgICAgX3N5c3RlbVByZXZpZXdFbmFibGVkID0gTk87Ci0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBfbWVkaWFD
b250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBXZWJDb3JlOjpTZXR0aW5nczo6
ZGVmYXVsdE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCk7CiAgICAg
X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNr
ID0gWUVTOwpAQCAtMjcxLDcgKzI3MSw3IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0Nv
ZGVyICopY29kZXIKIAogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2RyYXdzQmFja2dyb3Vu
ZCBmb3JLZXk6QCJkcmF3c0JhY2tncm91bmQiXTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFtjb2RlciBlbmNvZGVJbnRlZ2VyOnNlbGYuZGF0YURl
dGVjdG9yVHlwZXMgZm9yS2V5OkAiZGF0YURldGVjdG9yVHlwZXMiXTsKICAgICBbY29kZXIgZW5j
b2RlQm9vbDpzZWxmLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgZm9yS2V5OkAiYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjayJdOwogICAgIFtjb2RlciBlbmNvZGVCb29sOnNlbGYuX2FsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW4gZm9yS2V5OkAiYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiJdOwpAQCAtMzA1LDcgKzMwNSw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICoKICAgICBpZiAoW2NvZGVyIGNvbnRhaW5z
VmFsdWVGb3JLZXk6QCJkcmF3c0JhY2tncm91bmQiXSkKICAgICAgICAgc2VsZi5fZHJhd3NCYWNr
Z3JvdW5kID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJkcmF3c0JhY2tncm91bmQiXTsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNlbGYuZGF0
YURldGVjdG9yVHlwZXMgPSBbY29kZXIgZGVjb2RlSW50ZWdlckZvcktleTpAImRhdGFEZXRlY3Rv
clR5cGVzIl07CiAgICAgc2VsZi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gW2NvZGVyIGRl
Y29kZUJvb2xGb3JLZXk6QCJhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIl07CiAgICAgc2VsZi5f
YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IFtjb2RlciBkZWNvZGVC
b29sRm9yS2V5OkAiYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiJdOwpA
QCAtMzM4LDcgKzMzOCw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAg
IGNvbmZpZ3VyYXRpb24uX3Zpc2l0ZWRMaW5rU3RvcmUgPSBzZWxmLl92aXNpdGVkTGlua1N0b3Jl
OwogICAgIGNvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0gX3JlbGF0ZWRXZWJWaWV3Lmdl
dCgpLmdldCgpOwogICAgIGNvbmZpZ3VyYXRpb24uX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0
aW9uR2VzdHVyZXMgPSBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlcy5nZXQo
KS5nZXQoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBjb25maWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSA9IHNlbGYuX2NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5OwogI2VuZGlmCiAKQEAgLTM2Miw3ICszNjIsNyBAQCAtIChpZCljb3B5
V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fd2FpdHNGb3JQYWlu
dEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHNlbGYtPl93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3
RGlkTW92ZVRvV2luZG93OwogICAgIGNvbmZpZ3VyYXRpb24tPl9jb250cm9sbGVkQnlBdXRvbWF0
aW9uID0gc2VsZi0+X2NvbnRyb2xsZWRCeUF1dG9tYXRpb247CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjayA9IHNlbGYtPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwogICAg
IGNvbmZpZ3VyYXRpb24tPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVu
ID0gc2VsZi0+X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW47CiAgICAg
Y29uZmlndXJhdGlvbi0+X2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0
cmlidXRlID0gc2VsZi0+X2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0
cmlidXRlOwpAQCAtMzgyLDcgKzM4Miw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICop
em9uZQogICAgIGNvbmZpZ3VyYXRpb24tPl9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29u
dHJvbHNNYW5hZ2VyID0gc2VsZi0+X3JlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9s
c01hbmFnZXI7CiAgICAgY29uZmlndXJhdGlvbi0+X3BhZ2VHcm91cCA9IHNlbGYuX3BhZ2VHcm91
cDsKICNlbmRpZgotI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b25maWd1cmF0aW9uLT5fZGF0YURldGVjdG9yVHlwZXMgPSBzZWxmLT5fZGF0YURldGVjdG9yVHlw
ZXM7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfVEFSR0VUX1BMQVlCQUNLKQpAQCAtNDQ4
LDcgKzQ0OCw3IEBAIC0gKHZvaWQpc2V0V2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGEKIAog
c3RhdGljIE5TU3RyaW5nICpkZWZhdWx0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4g
W0AiTW9iaWxlLyIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6W1VJRGV2aWNlIGN1cnJlbnREZXZp
Y2VdLmJ1aWxkVmVyc2lvbl07CiAjZWxzZQogICAgIHJldHVybiBuaWw7CkBAIC01MTgsNyArNTE4
LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAo
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKilfY29udGVudFByb3ZpZGVyUmVnaXN0
cnkKIHsKICAgICByZXR1cm4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmdldChbc2VsZl0geyBy
ZXR1cm4gYWRvcHROUyhbW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IGFsbG9jXSBp
bml0V2l0aENvbmZpZ3VyYXRpb246c2VsZl0pOyB9KTsKQEAgLTY0OSw3ICs2NDksNyBAQCAtICh2
b2lkKV9zZXRBbGxvd3NNZXRhUmVmcmVzaDooQk9PTClhbGxvCiAgICAgX2FsbG93c01ldGFSZWZy
ZXNoID0gYWxsb3dzTWV0YVJlZnJlc2g7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eQogewogICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eSgpOwpAQCAtNzIwLDcgKzcyMCw3IEBAIC0gKHZvaWQpX3NldFN5c3RlbVByZXZp
ZXdFbmFibGVkOihCT09MKWUKICAgICBfc3lzdGVtUHJldmlld0VuYWJsZWQgPSBlbmFibGVkOwog
fQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIC0gKEJPT0wpX2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkCiB7CkBAIC0xMDE0
LDcgKzEwMTQsNyBAQCAtIChCT09MKV9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nCiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS0RlcHJlY2F0ZWQpCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpbWVk
aWFQbGF5YmFja0FsbG93c0FpclBsYXkKIHsKICAgICByZXR1cm4gc2VsZi5hbGxvd3NBaXJQbGF5
Rm9yTWVkaWFQbGF5YmFjazsKQEAgLTEwNDUsNyArMTA0NSw3IEBAIC0gKHZvaWQpc2V0UmVxdWly
ZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGEKICAgICBzZWxmLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2Vy
QWN0aW9uRm9yUGxheWJhY2sgPSByZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID8g
V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUFsbCA6IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwog
fQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBACiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAoKQogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRDb250ZW50UHJvdmlkZXJSZWdpc3RyeTopIFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
IlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCiAjaW1wb3J0ICJXS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TGVuZ3RoQm94Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMgPFVJU2Nyb2xsVmlld0Rl
bGVnYXRlPgogI2VuZGlmCiAKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IFByaW50SW5mbzsKICAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9wYWdlOwogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdDsK
IC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3dhcDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzczsK
QEAgLTE4MCwxNSArMTgwLDE1IEBAIHN0cnVjdCBQcmludEluZm87CiAKIFdLV2ViVmlldyogZnJv
bVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCi0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXS1dlYlZpZXcgKEZ1bGxTY3JlZW5B
UEkpCiAtKEJPT0wpaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CiAtKFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgKilmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKIC0odm9pZClj
bG9zZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogQGVuZAotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmIFBMQVRGT1JNKElPUykgJiYg
IVBMQVRGT1JNKElPU01BQykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
SU9TTUFDKQogQGludGVyZmFjZSBXS1dlYlZpZXcgKF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcikK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPF9XS1dlYlZpZXdQcmludFByb3Zp
ZGVyPiBfcHJpbnRQcm92aWRlcjsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
PFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCkBAIC00NSw3ICs0NSw3IEBACiAgICAgQ0dQb2lu
dCBfaW50ZXJhY3Rpb25Mb2NhdGlvbjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9JRDsKICAg
ICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IF9pbWFnZTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gX3Vp
SW1hZ2U7CiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX3VzZXJJbmZvOwogI2VuZGlmCkBA
IC01NCw3ICs1NCw3IEBACiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogKyAoaW5zdGFuY2V0eXBlKWFjdGl2YXRlZEVsZW1lbnRJbmZvV2l0
aEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbmZvcm1hdGlvbgogewogICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBfaW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZv
cm1hdGlvbl0gYXV0b3JlbGVhc2VdOwpAQCAtMTAzLDcgKzEwMyw3IEBAIC0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhUeXBlOihfV0tBY3RpdmEKICAgICBfdHlwZSA9IHR5cGU7CiAgICAgX2ltYWdl
ID0gaW1hZ2U7CiAgICAgX0lEID0gSUQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgX3VzZXJJbmZvID0gYWRvcHROUyhbdXNlckluZm8gY29weV0pOwog
I2VuZGlmCiAKQEAgLTEzMCw3ICsxMzAsNyBAQCAtIChDR1BvaW50KV9pbnRlcmFjdGlvbkxvY2F0
aW9uCiAgICAgcmV0dXJuIF9pbnRlcmFjdGlvbkxvY2F0aW9uOwogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0RpY3Rpb25hcnkgKil1c2VySW5m
bwogewogICAgIHJldHVybiBfdXNlckluZm8uZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRF
bGVtZW50SW5mb0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogI2VuZGlm
CiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIgpAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogQGludGVyZmFjZSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAo
KQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiArIChpbnN0
YW5jZXR5cGUpYWN0aXZhdGVkRWxlbWVudEluZm9XaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KWluZm9ybWF0aW9uOwogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJilpbmZvcm1hdGlvbjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2Jp
bGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLQ29udGV4dE1lbnVFbGVt
ZW50SW5mby5oIgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBX
S19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGltcGxlbWVudGF0aW9u
IF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0
aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5B
QkxFRAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgIkdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldEFzc2lzdGFudC5o
IgpAQCAtMTc0LDYgKzE3NCw2IEBAIC0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihf
V0tBY3QKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50
QWN0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBjbGFzcyBXS0FjdGlvblNoZWV0QXNz
aXN0YW50OwogQGNsYXNzIFdLQ29udGVudFZpZXc7CkBAIC00MCw2ICs0MCw2IEBACiAKIEBlbmQK
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAzLDcgKzMwMyw3IEBAIC0gKHZvaWQpc2V0U3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5h
dGkKICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRTdXBwcmVzc2VzQ29ubmVjdGlv
blRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2Uoc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlv
bk9uU3lzdGVtQ2hhbmdlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUKIHsK
ICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDcgKzUyLDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQ
YXltZW50UgogICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqLCBO
U0Vycm9yICopPiBfc2Vzc2lvbkJsb2NrOwogCiAgICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0YXRl
OwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgQmxvY2tQdHI8
dm9pZCAoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqKT4gX3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbjsKICAgICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1l
dGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwogICAgIEJs
b2NrUHRyPHZvaWQgKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT4gX2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBTT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzCiBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50U3VtbWFyeUl0ZW0pOwogU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpOwogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIFNP
RlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMs
IENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAqKTsK
QEAgLTc2LDcgKzc2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVy
cgogI2VuZGlmCiAKIHR5cGVkZWYgdm9pZCAoXlBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiko
Qk9PTCBpc1ZhbGlkLCBOU0Vycm9yICplcnJvcik7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKIGV4dGVybiAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihOU1N0cmluZyAqaWRlbnRp
ZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwog
U09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQ
S0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBs
aWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBO
U1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQ
YXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpOwogI2Vsc2UKQEAg
LTEwMSw3ICsxMDEsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkgPSBudWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21w
bGV0aW9uKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICAg
ICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vsc2UKICAgICAg
ICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZSk7CkBAIC0xNDksMTEgKzE0OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01BWF9BTExPV0VEID49IDExMDAwMCkKIAogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgaGFuZGxlcjoo
dm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9u
CiB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewogICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W2FsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0
dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE2OCw3ICsxNjgsNyBAQCAtICh2b2lkKXBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsCiAKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50
TWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBk
YXRlICp1cGRhdGUpKWNvbXBsZXRpb24KIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7CiAgICAg
ICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSw3ICsxODEsNyBAQCAtICh2b2lkKXBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsCiB9CiAKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNo
aXBwaW5nTWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01l
dGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7
CiAgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBd
XSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xOTUsNyArMTk1LDcgQEAgLSAodm9pZClw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbAogCiAtICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250
YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRh
dGUgKnVwZGF0ZSkpY29tcGxldGlvbgogewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKICAgICAg
ICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRh
Y3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVt
czpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBA
IC0yMDksNyArMjA5LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bAogCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKIAogLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBL
UGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cykpY29tcGxldGlvbgogewpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICB9CiAjZW5kaWYKIAotI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRf
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBw
bGljYXRpb24oKSkgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgfSkuZ2V0KCldOwogfQogCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+
IHRvUEtDb250YWN0RmllbGRzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpDb250YWN0RmllbGRzJiBjb250YWN0RmllbGRzKQogewogICAgIFZlY3RvcjxOU1N0
cmluZyAqPiByZXN1bHQ7CkBAIC00ODQsNyArNDg0LDcgQEAgc3RhdGljIFJldGFpblB0cjxQS1No
aXBwaW5nTWV0aG9kPiB0b1BLUwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAgICAgCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+
IHRvTlNTZXQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MpCiB7CiAgICAgaWYgKHN0cmlu
Z3MuaXNFbXB0eSgpKQpAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+
IHRvTlNTZXQoY29uc3QgVmUKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01BWF9BTExPV0VEID49IDEwMTMwNCkgXAotICAgIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMCAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDExMDMwMCkKKyAgICB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMzAwKQogc3RhdGljIFBLUGF5bWVudFJlcXVl
c3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6UmVxdWVzdGVyIHJlcXVlc3RlcikKIHsKICAgICBzd2l0Y2ggKHJlcXVlc3RlcikgewpAQCAt
NTI3LDcgKzUyNyw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFIK
ICAgICAgICAgW3Jlc3VsdCBzZXRUaHVtYm5haWxVUkw6bGlua0ljb25VUkxzWzBdXTsKIAogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDQpIFwKLSAgICB8
fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAzMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApCisgICAg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDMwMCAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDMw
MCkKICAgICBbcmVzdWx0IHNldEFQSVR5cGU6dG9BUElUeXBlKHBheW1lbnRSZXF1ZXN0LnJlcXVl
c3RlcigpKV07CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIFJldGFpblB0cjxQS1BheW1l
bnRSZXF1ZXN0PiB0b1BLUGF5bWVudFIKICAgICBbcmVzdWx0IHNldEN1cnJlbmN5Q29kZTpwYXlt
ZW50UmVxdWVzdC5jdXJyZW5jeUNvZGUoKV07CiAgICAgW3Jlc3VsdCBzZXRCaWxsaW5nQ29udGFj
dDpwYXltZW50UmVxdWVzdC5iaWxsaW5nQ29udGFjdCgpLnBrQ29udGFjdCgpXTsKICAgICBbcmVz
dWx0IHNldFNoaXBwaW5nQ29udGFjdDpwYXltZW50UmVxdWVzdC5zaGlwcGluZ0NvbnRhY3QoKS5w
a0NvbnRhY3QoKV07Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAg
ICBbcmVzdWx0IHNldFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6dG9QS0NvbnRhY3RGaWVs
ZHMocGF5bWVudFJlcXVlc3QucmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcygpKS5nZXQoKV07
CiAgICAgW3Jlc3VsdCBzZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczp0b1BLQ29udGFj
dEZpZWxkcyhwYXltZW50UmVxdWVzdC5yZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygpKS5n
ZXQoKV07CiAjZWxzZQpAQCAtNTcxLDcgKzU3MSw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0PiB0b1BLUGF5bWVudFIKICAgICAgICAgW3Jlc3VsdCBzZXRBcHBsaWNhdGlvbkRhdGE6YXBw
bGljYXRpb25EYXRhLmdldCgpXTsKICAgICB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQogICAgIFtyZXN1bHQgc2V0U3VwcG9ydGVkQ291bnRyaWVzOnRvTlNTZXQo
cGF5bWVudFJlcXVlc3Quc3VwcG9ydGVkQ291bnRyaWVzKCkpLmdldCgpXTsKICNlbmRpZgogCkBA
IC01ODQsNyArNTg0LDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50
UgogICAgIGlmICghY29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKICAgICAgICAgW3Jl
c3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6Y29uZmlndXJhdGlv
bi5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKV07CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24u
Y3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6KV0p
CiAgICAgICAgIFtyZXN1bHQgc2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOmNvbmZpZ3Vy
YXRpb24uY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCldOwogI2VuZGlmCkBAIC01OTIsNyAr
NTkyLDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQogc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykK
IHsKICAgICBzd2l0Y2ggKHN0YXR1cykgewpAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKIAogICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29yZTo6
aXNGaW5hbFN0YXRlUmVzdWx0KHJlc3VsdCk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMg
OiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKICAgICBhdXRv
IHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3Vs
dC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0LmdldCgpKTsKQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiAgICAgaWYgKHVwZGF0ZSkKICAgICAg
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFu
ZExpbmVJdGVtcyk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQog
ICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50
UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24o
cGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQpAQCAtNzk3LDcgKzc5Nyw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kQ29tcGxldGlvbiA9IG51bGxwdHI7CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKyNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMTAwMDApCiBzdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGlu
Z0NvbnRhY3RVcGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgaWYgKCF1cGRhdGUgfHwgdXBkYXRlLT5l
cnJvcnMuaXNFbXB0eSgpKQpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3IKICAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBXVEZNb3ZlKHNoaXBwaW5nTWV0
aG9kcyk7CiAgICAgfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkK
ICAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1
cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1
bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7
CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdl
dCgpKTsKICNlbHNlCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcgogICAgIGlmICh1cGRhdGUpCiAgICAgICAgIG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRv
UEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCi0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBhdXRvIHBrUGF5bWVu
dE1ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMu
Z2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVwZGF0
ZS5nZXQoKSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBUFBM
RV9QQVkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAog
I2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjaW5jbHVk
ZSA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9L
ZXlFdmVudENvZGVzSU9TLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQXV0b21hdGlvblNlc3Np
b24uaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJXZWJBdXRvbWF0aW9u
U2Vzc2lvbk1hY3Jvcy5oIgpAQCAtMTcyLDQgKzE3Miw0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vh
a09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBVU0UoU1lTVEVNX1BSRVZJRVcpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIERv
d25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQogdm9pZCBEb3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQ
YWdlKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3Rl
bSBwcmV2aWV3IiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKQEAg
LTI3OCw3ICsyNzgsNyBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbihE
CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nhcnko
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0lGKGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCktPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIFVJUHJvY2VzcyBpcyBy
ZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcg
ZG93bmxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51
bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MYXllclJlcHJlc2Vu
dGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGF5
ZXJSZXByZXNlbnRhdGlvbi5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MYXllclJlcHJlc2VudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpZm5kZWYgTGF5ZXJSZXByZXNlbnRhdGlvbl9oCiAjZGVmaW5lIExheWVy
UmVwcmVzZW50YXRpb25faAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgVUlWaWV3OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGlkRmlyc3RQYWludCgpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VS
ZWFzb24geyBMb2FkQ29tcGxldGVkLCBTY3JlZW5Mb2NrZWQgfTsKICAgICB2b2lkIHJlbGVhc2VO
ZXR3b3JrQWN0aXZpdHlUb2tlbihOZXR3b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VSZWFzb24pOwog
I2VuZGlmCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDaGFuZ2VX
ZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tl
bkFmdGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tlbihOZXR3
b3JrQWN0aXZpdHlUb2tlblJlbGVhc2VSZWFzb246OkxvYWRDb21wbGV0ZWQpOyB9CiAjZW5kaWYK
IApAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFVw
ZGF0ZUhpc3RvcnlUaXRsZUZvclVSTCA6IDE7CiAgICAgfSBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhv
ZHM7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2FjdGl2aXR5VG9rZW47
CiAgICAgUnVuTG9vcDo6VGltZXI8TmF2aWdhdGlvblN0YXRlPiBtX3JlbGVhc2VBY3Rpdml0eVRp
bWVyOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDcgQEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uU3RhdGUoV0tXZWJWaQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMoKQog
ICAgICwgbV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzKCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIoUnVuTG9v
cDo6Y3VycmVudCgpLCB0aGlzLCAmTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNlTmV0d29ya0FjdGl2
aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKQogI2VuZGlmCiB7CkBAIC0xMDY4LDcgKzEwNjgs
NyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6d2lsbENoYW5nZUlzTG9hZGluCiAgICAgW21fd2Vi
VmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJsb2FkaW5nIl07CiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uIHJlYXNvbikKIHsKICAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKQEAgLTEwODksNyArMTA4
OSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNlTmV0d29ya0FjdGkKIAogdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5nZUlzTG9hZGluZygpCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fd2ViVmlldy0+X3BhZ2UtPnBh
Z2VMb2FkU3RhdGUoKS5pc0xvYWRpbmcoKSkgewogICAgICAgICAvLyBXZSBkbyBub3QgdGFrZSBh
IG5ldHdvcmsgYWN0aXZpdHkgdG9rZW4gaWYgYSBsb2FkIHN0YXJ0cyBhZnRlciB0aGUgc2NyZWVu
IGhhcyBiZWVuIGxvY2tlZC4KICAgICAgICAgaWYgKFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9j
a10pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzksMTMgKzM5
LDEzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lmg+CiAjZWxzZQogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg+CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdHlwZWRlZiBXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZTsKICNlbHNlCiB0eXBlZGVmIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYyBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKQEAgLTI0NSw0ICsyNDUs
NCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKIG1lc3NhZ2VzIC0+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSB7CiAgICAgQ3VycmVu
dFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgaG9zdFRpbWUpCiAgICAgQnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGRvdWJsZSBidWZmZXJlZFRpbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmgi
CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2ltcG9ydCAiUGxh
eWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNjA3LDQgKzYwNyw0IEBAICAgICByZXR1cm4gJmlu
dGVyZmFjZTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0
ICsxMjcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JPcmlnaW4oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlP
cmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkmKSBmaW5hbDsKICAgICAgICAgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgICAgICB2b2lk
IHByaW50RnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYpIGZpbmFsOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEhBVkUoQVBQX0xJTktT
KQogICAgICAgICBib29sIHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQoX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8gKikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJl
dGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
Tm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwogICAg
ICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBmaW5hbDsK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogICAgICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgZmluYWw7CiAK
QEAgLTIwMSw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdDaGVja1Vz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkxNYWluRnJhbWVVUkxGcmFtZUlkZW50aWZpZXJEZWNpc2lv
bkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENo
YW5nZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENoYW5nZUZvbnRBdHRyaWJ1dGVzIDog
MTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZF
KEFQUF9MSU5LUykKICAgICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rp
b25zRm9yRWxlbWVudCA6IDE7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZNZWRpYUZvcm1hdC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBAIC0xNDIsNyAr
MTQyLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbAogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Z1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZTopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW50ZXJG
dWxsc2NyZWVuID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXdEaWRFbnRlckZ1bGxzY3JlZW46KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEV4aXRGdWxsc2NyZWVuID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXdEaWRFeGl0RnVsbHNjcmVlbjopXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3U2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEluY2x1ZGVB
cHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KV07CiAjZW5kaWYKQEAgLTkxMSw3ICs5MTEsNyBAQCBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvb2wgdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPSBwYWdlLnByZWZlcmVuY2VzKCku
bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogICAgIGF1dG8gcmVxdWVzdENhbWVyYUF1dGhv
cml6YXRpb24gPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW3RoaXMsICZmcmFtZSwg
cHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHdlYlZpZXcgPSBSZXRhaW5QdHI8
V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KSwgdXNpbmdNb2NrQ2FwdHVyZURldmlj
ZXNdKCkgewogCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkaWRFeGl0RnVsbHNjCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXdEaWRFeGl0RnVsbHNjcmVlbjptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KICAg
ICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZF
KEFQUF9MSU5LUykKIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEluY2x1ZGVBcHBM
aW5rQWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmVsZW1lbnRJbmZv
KQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVj
a3MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmVyc2lvbkNoZWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3QgewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZpcnN0V2l0aE5ldHdv
cmtDYWNoZSA9IERZTERfSU9TX1ZFUlNJT05fOV8wLAogICAgIEZpcnN0V2l0aE1lZGlhVHlwZXNS
ZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBEWUxEX0lPU19WRVJTSU9OXzEwXzAsCiAg
ICAgRmlyc3RXaXRoRXhjZXB0aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMg
PSBEWUxEX0lPU19WRVJTSU9OXzExXzAsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WZXJzaW9uQ2hlY2tzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgYm9vbCBsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbiBzZGtWZXJzaQog
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgW10gewogICAgICAgICBib29sIGlzU2FmYXJpID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChXZWJDb3JlOjpJT1NBcHBs
aWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIGlzU2FmYXJpID0gdHJ1ZTsK
ICNlbGlmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzcsMTMgKzM3LDEzIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxX
ZWJDb3JlL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg+CiAjZWxzZQogI2luY2x1ZGUg
PFdlYkNvcmUvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdHlwZWRlZiBXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZTsKICNlbHNlCiB0eXBlZGVmIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
YyBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTsKQEAgLTg0LDcgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dmlkZW9EaW1lbnNpb25zOyB9Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkg
ZmluYWw7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqY3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0Nv
bnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciopIGZpbmFsOwogI2VuZGlmCkBAIC0xODYs
NSArMTg2LDUgQEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYg
SEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2Fn
ZXMgLT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IHsKICAgICBTZXRIYXNWaWRlbyh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYg
SEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW1wb3J0
ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNDIsNyAr
NDIsNyBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJV
SUtpdFNQSS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgpAQCAtNTQsNyAr
NTQsNyBAQCBAaW50ZXJmYWNlIFdLTGF5ZXJIb3N0VmlldyA6IFBsYXRmb3JtVmllCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXS0xheWVySG9zdFZpZXcKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogKyAoQ2xhc3MpbGF5ZXJDbGFzcyB7CiAgICAgcmV0dXJuIFtDQUxh
eWVySG9zdCBjbGFzc107CiB9CkBAIC03OSw3ICs3OSw3IEBAIC0gKENBTGF5ZXJIb3N0ICopbGF5
ZXJIb3N0IHsKIAogQGVuZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBAaW50ZXJmYWNlIFdLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgOiBVSVZp
ZXdDb250cm9sbGVyCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9s
bGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIgTlNfREVTSUdOQVRF
RF9JTklUSUFMSVpFUjsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5pYk5hbWU6KE5TU3RyaW5n
ICopbmliTmFtZU9yTmlsIGJ1bmRsZTooTlNCdW5kbGUgKiluaWJCdW5kbGVPck5pbCBOU19VTkFW
QUlMQUJMRTsKQEAgLTEyNCw3ICsxMjQsNyBAQCAtIChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRk
ZW4KIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBQ
TEFURk9STShJT1MpICYmICFIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFIQVZFKEFWS0lUKQogCiBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmKQogewpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmdWxsc2MKICAg
ICAgICAgbV9tYW5hZ2VyLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobV9jb250ZXh0SWQsIG1vZGUp
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBVSVZp
ZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTQ3Nyw3ICs0NzcsNyBAQCAg
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNCiAgICAgICAgIFtbdmlldyBs
YXllcl0gc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNl
U2NhbGUsIGludmVyc2VTY2FsZSwgMSldOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0
PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkp
LnJlbW90ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKTsKICAgICBpbnRlcmZhY2UtPnNldHVw
RnVsbHNjcmVlbigqbW9kZWwtPmxheWVySG9zdFZpZXcoKSwgaW5pdGlhbFJlY3QsIHBhcmVudFZp
ZXcsIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkp
OwogI2Vsc2UKQEAgLTUxNyw3ICs1MTcsNyBAQCAgICAgICAgIGlmIChvdGhlckludGVyZmFjZS0+
aGFzTW9kZShpbnRlCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuc3Vy
ZUludGVyZmFjZShjb250ZXh0SWQpLmV4aXRGdWxsc2NyZWVuKGZpbmFsUmVjdCk7CiAjZWxzZQog
ICAgIEludFJlY3QgZmluYWxXaW5kb3dSZWN0OwpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW5saW5lUmVjdCwgYm9vbCB2aXNpYmxlKQogewpAQCAtNTY4LDcgKzU2
OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXIKIHsKICAgICBt
X3BhZ2UtPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJ
ZCkucHJlcGFyZWRUb1JldHVyblRvSW5saW5lKHZpc2libGUsIGlubGluZVJlY3QpOwogI2Vsc2UK
ICAgICBJbnRSZWN0IGlubGluZVdpbmRvd1JlY3Q7CkBAIC02NDUsNyArNjQ1LDcgQEAgICAgIGlu
dGVyZmFjZS0+c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJGcmFtZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6OkZsb2F0UmVjdCBmcmFtZSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbWFjaF9wb3J0X25h
bWVfdCBmZW5jZVBvcnQgPSBbVUlXaW5kb3cgX3N5bmNocm9uaXplRHJhd2luZ0Fjcm9zc1Byb2Nl
c3Nlc107CiAjZWxzZQogICAgICAgICBNYWNoU2VuZFJpZ2h0IGZlbmNlU2VuZFJpZ2h0OwpAQCAt
Njc5LDQgKzY3OSw0IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2MK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1Mg
VUlHZXN0dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xBU1MgVUlWaWV3OwogT0JKQ19DTEFTUyBXS1N3
aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1NoYXJlU2hlZXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgiCiAjZWxzZQpAQCAtNzcsNyArNzcsNyBAQCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVy
czooY29uc3QgV2ViCiAgICAgCiAgICAgaWYgKGRhdGEudXJsKSB7CiAgICAgICAgIE5TVVJMICp1
cmwgPSAoTlNVUkwgKilkYXRhLnVybC52YWx1ZSgpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIWRhdGEuc2hhcmVEYXRhLnRpdGxlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHVybC5fdGl0bGUgPSBkYXRhLnNoYXJlRGF0YS50aXRsZTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYktp
dC9XS1BhZ2VMb2FkVHlwZXMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0aW9ucy5oPgpA
QCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiBAZW5kCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnku
aAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNTIsNiArNTIsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIEBlbmQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXS0xlZ2FjeVBERlZpZXcuaCIKICNpbXBv
cnQgIldLUERGVmlldy5oIgpAQCAtMTA3LDYgKzEwNyw2IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9t
aW1lVHlwZXNXaXRoQ3VzdG9tQ28KIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxF
RApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSQogICAgIHBhZ2VD
bGllbnQoKS5zdGFydERyYWcoZHJhZ0l0ZW0sIGRyYWdJbWFnZUhhbmRsZSk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgdWludDY0X3QpCiB7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldERyYWdDYXJldFJlY3QoY29ucwogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFu
Z2VEYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QocHJldmlvdXNSZWN0LCBkcmFnQ2FyZXRSZWN0KTsK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YQogICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRh
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVj
dG9yPFN0cmluZz4mIHR5cGVzKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlwZXMsIGluZGV4KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCBOU1N0cmluZyAqV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gCiBOU1N0cmluZyAq
V2ViS2l0SlNDSklURW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXRKU0NKSVRFbmFibGVkRGVm
YXVsdHNLZXkiOwogTlNTdHJpbmcgKldlYktpdEpTQ0ZUTEpJVEVuYWJsZWREZWZhdWx0c0tleSA9
IEAiV2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5IjsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFw
cGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlm
aWNhdGlvbiA9IEAiTlNBcHBsaWNhdGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VOb3RpZmljYXRpb24iOwogI2VuZGlmCiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoCiAgICAgc2V0TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcGF0aCA9IHBhdGhGb3JQcm9jZXNzQ29udGFp
bmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1S
ZXNvbHZlUGF0aAogewogICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJj
ZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSByZXNvdXJjZVBhdGhdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0g
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29v
a2llU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICBtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRi
b3hFeHRlbnNpb24od2ViQ29udGVudENhY2hlc0RpcmVjdG9yeSgpKTsKICAgICBtX3Jlc29sdmVk
UGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0
b3J5KCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVcKICAgICBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVI
YW5kbGVyID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJEZWZhdWx0c0tleV07CiAKICNpZiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBhcmFt
ZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUo
W0NBUmVtb3RlTGF5ZXJTZXJ2ZXIgc2hhcmVkU2VydmVyXS5zZXJ2ZXJQb3J0KTsKICNlbmRpZgog
I2VuZGlmCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplVwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0
cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBwYXJh
bWV0ZXJzLnVpUHJvY2Vzc1NES1ZlcnNpb24gPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9u
KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoIW1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
bV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKIApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVcKICAgICAgICAgd2ViUlRDRW5hYmxlZCA9IFtkZWZhdWx0cyBib29s
Rm9yS2V5OkAiRXhwZXJpbWVudGFsUGVlckNvbm5lY3Rpb25FbmFibGVkIl07CiAKICAgICBib29s
IGlzU2FmYXJpID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgp
KQogICAgICAgICBpc1NhZmFyaSA9IHRydWU7CiAjZWxpZiBQTEFURk9STShNQUMpCkBAIC0yODYs
NyArMjg2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAg
ICAgcGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX2NvbmZp
Z3VyYXRpb24tPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogICAgIHBhcmFt
ZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9jb25maWd1cmF0
aW9uLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYXJhbWV0ZXJzLmN0RGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSA9IG1fY29uZmlndXJhdGlvbi0+Y3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKCk7CiAjZW5kaWYKIApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUMKICAgICB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXJzKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGFyZW50QnVuZGxlRGlyZWN0b3J5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF0gc3RyaW5n
QnlTdGFuZGFyZGl6aW5nUGF0aF07CkBAIC0zNzQsNyArMzc0LDcgQEAgU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpjb250YWluZXJUZW1wb3JhcgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMoKQogewogICAgIE5TVXNl
ckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c107CkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N1cHBy
ZXNzaW9uRQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2Vy
dmVycygpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBMaXN0ZW4gZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkgY2hhbmdlcyBhbmQgcHJv
cGFnYXRlIHRoZW0gdG8gdGhlIFdlYlByb2Nlc3MuCiAgICAgbV9lbmhhbmNlZEFjY2Vzc2liaWxp
dHlPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXJGb3JOYW1lOldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFu
Y2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsIHF1ZXVlOltOU09wZXJhdGlv
blF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RlKSB7
CiAgICAgICAgIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShbW1tub3RlIHVzZXJJbmZvXSBvYmpl
Y3RGb3JLZXk6QCJBWEVuaGFuY2VkVXNlckludGVyZmFjZSJdIGJvb2xWYWx1ZV0pOwpAQCAtNDMz
LDEyICs0MzMsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpbwog
ICAgIH1dOwogI2VuZGlmCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVy
Tm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6bV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07
ICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9hdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnROb3RpZmljYXRpb25PYnNlcnZlci5nZXQo
KV07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjptX2F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbk5vdGlmaWNhdGlvbk9ic2VydmVyLmdl
dCgpXTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVy
Tm90aWZpY2F0CiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6
bV9zY3JvbGxlclN0eWxlTm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCi0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0K
IAogc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFBy
b3ZpZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVy
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdQogICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBHYW1lcGFkUHJvdmlk
ZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKSk7CiAjZWxpZiBkZWZpbmVkKF9fTFA2NF9fKQogICAgIGlmICh1c2VHYW1lQ29udHJv
bGxlckZyYW1ld29yaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvaW9z
L1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2lvcy9VSUdhbWVwYWRQcm92
aWRlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogCi0jaWYgRU5BQkxFKEdBTUVQ
QUQpICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCkBAIC00NSw0ICs0NSw0IEBAIFdlYlBhZ2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3IKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFj
L1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUoY29u
c3QgUHJvCiAKIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9TLCBsZWFrIGEgYm9vc3Qgb250
byBhbGwgY2hpbGQgcHJvY2Vzc2VzCiAgICAgVU5VU0VEX1BBUkFNKGxhdW5jaE9wdGlvbnMpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRMZWFr
Qm9vc3QoY29uc3QgUHJvY2VzCiBzdGF0aWMgTlNTdHJpbmcgKnN5c3RlbURpcmVjdG9yeVBhdGgo
KQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqcGF0aCA9IFteewotI2lmIFBMQVRGT1JNKElPU19T
SU1VTEFUT1IpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgICAgIGNo
YXIgKnNpbXVsYXRvclJvb3QgPSBnZXRlbnYoIlNJTVVMQVRPUl9ST09UIik7CiAgICAgICAgIHJl
dHVybiBzaW11bGF0b3JSb290ID8gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcy9TeXN0
ZW0vIiwgc2ltdWxhdG9yUm9vdF0gOiBAIi9TeXN0ZW0vIjsKICNlbHNlCkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIC8vIDIuIFdo
ZW4gQXBwbGVMYW5ndWFnZXMgaXMgcGFzc2VkIGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudCBmb3Ig
VUkgcHJvY2Vzcywgb3Igc2V0IGluIGl0cyBwcmVmZXJlbmNlcywgd2Ugc2hvdWxkIHJlc3BlY3Qg
aXQgaW4gY2hpbGQgcHJvY2Vzc2VzLgogICAgIGF1dG8gaW5pdGlhbGl6YXRpb25NZXNzYWdlID0g
YWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OwogICAgIF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKGluaXRpYWxpemF0aW9uTWVzc2FnZS5n
ZXQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gQ2xpZW50cyB0aGF0IHNldCB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXhwbGljaXRs
eSBkbyBub3QgaGF2ZSB0aGUgdmFsdWVzIGF1dG9tYXRpY2FsbHkgZm9yd2FyZGVkIGJ5IGxpYnhw
Yy4KICAgICBhdXRvIGNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAgIGlmIChj
b25zdCBjaGFyKiBlbnZpcm9ubWVudEhPTUUgPSBnZXRlbnYoIkhPTUUiKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQAogI2luY2x1ZGUgIlNlY0l0ZW1TaGltUHJveHkuaCIKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3
aW4vWFBDU1BJLmg+CiAjZW5kaWYKIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmMKICAgICAgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCh0cnVlKTsKICNlbmRpZgogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB0
aGlzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSkKICAgICAgICAgbV90aHJvdHRsZXIu
ZGlkQ29ubmVjdFRvUHJvY2Vzcyh4cGNfY29ubmVjdGlvbl9nZXRfcGlkKGNvbm5lY3Rpb24pKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJl
Y3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0tPbmVT
aG90RGlzcGxheUxpbmtIYW5kbGVyICpkaXNwbGF5TGlua0hhbmRsZXIoKTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAKIAogLy8gRklYTUU6IE1hYyB3aWxsIG5lZWQgc29tZXRoaW5nIHNpbWls
YXI7IHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBzaGFyZSB0aGlzIHdpdGggRGlzcGxheVJl
ZnJlc2hNb25pdG9yIHdpdGhvdXQKIC8vIGJyZWFraW5nIFdlYktpdDEgYmVoYXZpb3Igb3IgV2Vi
S2l0Mi1XZWJLaXQxIGNvZXhpc3RlbmNlLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXS09uZVNob3REaXNwbGF5TGlua0hhbmRsZXIgOiBO
U09iamVjdCB7CiAgICAgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KiBf
ZHJhd2luZ0FyZWFQcm94eTsKICAgICBDQURpc3BsYXlMaW5rICpfZGlzcGxheUxpbms7CkBAIC0x
MjYsNyArMTI2LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6flJlbW90ZQog
ICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9kaXNwbGF5TGlua0hhbmRs
ZXIgaW52YWxpZGF0ZV07CiAjZW5kaWYKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlSG9zdD4gUmVtCiB9CiAKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogV0tPbmVTaG90RGlzcGxheUxpbmtIYW5kbGVyICpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwbGF5TGlua0hhbmRsZXIoKQogewog
ICAgIGlmICghbV9kaXNwbGF5TGlua0hhbmRsZXIpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpjbwogICAgIG1fd2ViUGFnZVByb3h5LmRp
ZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlvbik7CiAKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChtX3dlYlBhZ2VQcm94eS5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCktPmhh
c0ZpeGVkT3JTdGlja3koKSkgewogICAgICAgICAvLyBJZiB3ZSBnb3QgYSBuZXcgbGF5ZXIgZm9y
IGEgZml4ZWQgb3Igc3RpY2t5IG5vZGUsIGl0cyBwb3NpdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNz
IGlzIHByb2JhYmx5IHN0YWxlLiBXZSBuZWVkIHRvIHJlLXJ1biB0aGUgInZpZXdwb3J0IiBjaGFu
Z2VkIGxvZ2ljIHRvIHVkcGF0ZSBpdCB3aXRoIG91ciBVSS1zaWRlIHN0YXRlLgogICAgICAgICBG
bG9hdFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QgPSBtX3dlYlBhZ2VQcm94eS5jb21wdXRl
Q3VzdG9tRml4ZWRQb3NpdGlvblJlY3QobV93ZWJQYWdlUHJveHkudW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCksIG1fd2ViUGFnZVByb3h5LnVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1
dFZpZXdCb3VuZHMoKSwgbV93ZWJQYWdlUHJveHkuY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSwg
bV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCksIEZyYW1lVmlldzo6TGF5b3V0
Vmlld3BvcnRDb25zdHJhaW50OjpVbmNvbnN0cmFpbmVkLCBtX3dlYlBhZ2VQcm94eS5zY3JvbGxp
bmdDb29yZGluYXRvclByb3h5KCktPnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKQEAgLTI0NCw3
ICsyNDQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvCiAKICAg
ICBtX3dlYlBhZ2VQcm94eS5sYXllclRyZWVDb21taXRDb21wbGV0ZSgpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHN0ZDo6ZXhjaGFuZ2Uo
bV9kaWRVcGRhdGVNZXNzYWdlU3RhdGUsIE5lZWRzRGlkVXBkYXRlKSA9PSBNaXNzZWRDb21taXQp
CiAgICAgICAgIGRpZFJlZnJlc2hEaXNwbGF5KCk7CiAgICAgW2Rpc3BsYXlMaW5rSGFuZGxlcigp
IHNjaGVkdWxlXTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OnNlCiBGbG9hdFBvaW50IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OmluZGljYXRvckxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV93ZWJQYWdlUHJveHku
ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgRmxvYXRQb2ludCB0aWxlZE1hcExvY2F0aW9uID0gbV93ZWJQ
YWdlUHJveHkudW5vYnNjdXJlZENvbnRlbnRSZWN0KCkubG9jYXRpb24oKS5leHBhbmRlZFRvKEZs
b2F0UG9pbnQoKSk7CiAgICAgICAgIHRpbGVkTWFwTG9jYXRpb24gPSB0aWxlZE1hcExvY2F0aW9u
LmV4cGFuZGVkVG8obV93ZWJQYWdlUHJveHkuZXhwb3NlZENvbnRlbnRSZWN0KCkubG9jYXRpb24o
KSk7CiAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OnVwCiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkuZGVsZWdhdGVzU2Nyb2xsaW5nKCkp
IHsKICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZEV4cG9zZWRSZWN0OwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBzY2FsZWRFeHBvc2VkUmVjdCA9
IG1fd2ViUGFnZVByb3h5LmV4cG9zZWRDb250ZW50UmVjdCgpOwogI2Vsc2UKICAgICAgICAgaWYg
KHZpZXdFeHBvc2VkUmVjdCgpKQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6ZGkKIAogICAgIGlmIChtX2RpZFVwZGF0ZU1lc3NhZ2VTdGF0
ZSAhPSBOZWVkc0RpZFVwZGF0ZSkgewogICAgICAgICBtX2RpZFVwZGF0ZU1lc3NhZ2VTdGF0ZSA9
IE1pc3NlZENvbW1pdDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgW2Rpc3BsYXlMaW5rSGFuZGxlcigpIHBhdXNlXTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YQogICAgICAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXRPdmVycmlkZUFjdGl2aXR5
U3RhdGVVcGRhdGVUaW1lb3V0Il0pCiAgICAgICAgICAgICByZXR1cm4gU2Vjb25kcyhbdmFsdWUg
ZG91YmxlVmFsdWVdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApOwogI2Vs
c2UKICAgICAgICAgcmV0dXJuIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUwKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
Q0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
PFVJS2l0L1VJVmlldy5oPgogI2VuZGlmCiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIGlkTGF5ZXIg
OiBtX2xheWVycykgewogICAgICAgICBtX2FuaW1hdGlvbkRlbGVnYXRlcy5yZW1vdmUoaWRMYXll
ci5rZXkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBbaWRMYXllci52YWx1ZS5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICNlbHNlCiAg
ICAgICAgIFthc0xheWVyKGlkTGF5ZXIudmFsdWUuZ2V0KCkpIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgCiAgICAgcmV0dXJuIFtbbGF5ZXIgdmFsdWVGb3JLZXk6V0tMYXllcklEUHJvcGVydHlL
ZXldIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogTGF5ZXJPclZpZXcgKlJlbW90ZUxheWVyVHJlZUhvc3Q6
OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0
aW9uUHJvcGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllcyopCiB7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+JiBsYXllciA9
IG1fbGF5ZXJzLmFkZChwcm9wZXJ0aWVzLmxheWVySUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbbV9yb290
TGF5ZXIgcmVtb3ZlRnJvbVN1cGVydmlld107CiAjZWxzZQogICAgIFthc0xheWVyKG1fcm9vdExh
eWVyKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbwogICAgIG1fcmVxdWVzdGVkU2Nyb2xsSW5m
byA9IG51bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3Rh
dGVOb2RlTGF5ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25zdCBSZW1vdGVM
YXllclRyZWVIb3N0JiBsYXllclRyZWVIb3N0KQogewogICAgIGZvciAoYXV0byYgY3Vyck5vZGUg
OiBzdGF0ZVRyZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9p
ZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzYwogICAgIGlmICghbV9wcm9wYWdh
dGVzTWFpbkZyYW1lU2Nyb2xscyAmJiBzY3JvbGxlZE5vZGVJRCA9PSByb290U2Nyb2xsaW5nTm9k
ZUlEKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIG1fd2ViUGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxWaWV3
RGlkU2Nyb2xsKCk7CiAjZW5kaWYKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6U2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShz
Y3JvbGxlZE5vZGVJRCwgbmV3U2Nyb2xsUG9zaXRpb24sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24gPT0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICBib29sIHByb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xsczsgfQogICAgIGJvb2wgaGFzRml4
ZWRPclN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS0+aGFzRml4ZWRPclN0
aWNreSgpOyB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSBjb25zdDsK
ICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwogICAgIHZv
aWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVHJlZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaD4KICNlbHNlCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmUKIH0KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXZWJD
b3JlOjpGbG9hdFJlY3QgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6Zml4ZWRQb3NpdGlvblJlY3QoKQog
ewogICAgIHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3VzdG9tRml4ZWRQb3Np
dGlvblJlY3QoKTsKQEAgLTExNCwxMyArMTE0LDEzIEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4g
UmVtb3RlU2Nyb2xsaW5nVHIKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBNYWlu
RnJhbWVTY3JvbGxpbmdOb2RlOgogICAgIGNhc2UgU3ViZnJhbWVTY3JvbGxpbmdOb2RlOgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICByZXR1cm4g
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRlKCp0aGlzLCBub2RlVHlw
ZSwgbm9kZUlEKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2RlSUQpOwogI2VuZGlmCiAg
ICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAjZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ1RyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGZpeGVkUG9z
aXRpb25SZWN0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFy
dFBhbkdlc3R1cmUoKSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0
YXJ0U2Nyb2xsKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlSG9zdC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9s
bFZpZXcuaD4KQEAgLTI0MSw0ICsyNDEsNCBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2ltcG9y
dCAiTGF5ZXJSZXByZXNlbnRhdGlvbi5oIgpAQCAtMjE3LDQgKzIxNyw0IEBAIENHUG9pbnQgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eToKIAogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JN
KElPUykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Lmg+CiAKQEAgLTYwLDQgKzYwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmgiCkBAIC04OSw0ICs4OSw0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUkKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCShyZXZpc2lvbiAyMzcy
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQogCiAjaW5jbHVkZSA8VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgpAQCAtODUsNCArODUsNCBAQCBwcml2
YXRlOgogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVBhbkdlc3R1cmVSZWNvZ25pemVyLmg+CkBAIC0yODksNCArMjg5LDQgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNv
bnN0IHVuaW9uIHsKIGNvbnN0IHNpemVfdCBFUzI1NktleVNpemVJbkJ5dGVzID0gMzI7CiBjb25z
dCBzaXplX3QgYXV0aERhdGFQcmVmaXhGaXhlZFNpemUgPSAzNzsgLy8gaGFzaCgzMikgKyBmbGFn
cygxKSArIGNvdW50ZXIoNCkKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNzZWMtYXV0aGVudGlj
YXRvci1kYXRhCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXV0aERhdGEoY29uc3QgU3Ry
aW5nJiBycElkLCBjb25zdCB1aW50OF90IGZsYWdzLCB1aW50MzJfdCBjb3VudGVyLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIG9wdGlvbmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSkKIHsKQEAgLTEx
Niw3ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3RvcihOCiAg
ICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5
dGVzKSwgZGF0YS5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBMb2Nh
bEF1dGhlbnRpY2F0b3JJbnRlcm5hbAogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpJbml0KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZDsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3Jl
ZCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJl
UmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KICAg
ICAvLyBTa2lwIFN0ZXAgOSBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAg
LTE5Miw3ICsxOTIsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwo
CiAgICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKICAgICAgICAgU3RyaW5nOjpmb3Jt
YXQoIkFsbG93ICVzIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBmb3IgJXMiLCBy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZC51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUudXRmOCgpLmRhdGEoKSksCiAgICAgICAg
IFdURk1vdmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVz
ZXJDb25zZW50IGNvbnNlbnQpCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1
ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25zZW50
ID09IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CiAgICAgICAgIHJlY2VpdmVS
ZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNl
ciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmUKICAgICAgICAgd2Vha1RoaXMt
PmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKHByaXZhdGVLZXksIGNlcnRpZmlj
YXRlcywgZXJyb3IpOwogICAgIH07CiAgICAgbV9jb25uZWN0aW9uLT5nZXRBdHRlc3RhdGlvbihy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgcmVxdWVzdERhdGEoKS5jcmVhdGlv
bk9wdGlvbnMudXNlci5uYW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkgKmNlcnRpZmljYXRl
cywgTlNFcnJvciAqZXJyb3IpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2Vy
Q29uc2VudGVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkF0dGVzdGVkOwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsKICAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIl9zIH0pOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmUKICAgICB9CiAKICAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEo
KSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVh
dGUoYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnZh
bHVlKCkuc2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKLSNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQ7
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBU
aGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNv
cC1nZXQtYXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAg
MiBhcyByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0
ZXAgOCBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTQ3NSw3ICs0NzUs
NyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgU3Ry
aW5nOjpmb3JtYXQoIkxvZyBpbnRvICVzIHdpdGggJXMuIiwgcmVxdWVzdERhdGEoKS5yZXF1ZXN0
T3B0aW9ucy5ycElkLnV0ZjgoKS5kYXRhKCksIHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNb
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWddKSwKICAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vz
c0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nl
c3NDb250cm9sXSwKICAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOwotI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChM
b2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdXNlcmhhbmRsZSkKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVHZXRBc3NlCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RS
ZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbnNlbnQgPT0g
TG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKICAgICAgICAgcmVjZWl2ZVJlc3Bv
bmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNv
bnNlbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZQogCiAgICAgLy8gU3RlcCAxMy4KICAg
ICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpj
cmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIGZhbHNlLCBu
dWxscHRyLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0
aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWdu
YXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VyaGFuZGxlLmRhdGEoKSwgdXNl
cmhhbmRsZS5zaXplKCkpIH0pOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25u
ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25u
ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYg
cmVhc29uLCBVc2VyQ29uc2VudENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5z
dGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNF
cnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbgogdm9pZCBMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9s
UmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMo
W2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IEJsb2Nr
UHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2Vzcywg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25z
ZW50KGNvbgogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBo
YXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAg
ICAgLy8gRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIGlzIG5vdCBhdmFsaWFibGUgaW4gaU9TIHNp
bXVsYXRvci4KLSNpZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRP
UikKICAgICAvLyBBcHBsZSBBdHRlc3RhdGlvbgogICAgIEFTU0VSVChoYXNoLnNpemUoKSA8PSAz
Mik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsU2VydmljZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsU2VydmljZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBMb2NhbFNlcnZp
Y2U6OkxvY2FsU2VydmljZShPYnNlcnZlciYgb2JzCiBib29sIExvY2FsU2VydmljZTo6aXNBdmFp
bGFibGUoKQogewogLy8gRklYTUUoMTgyNzcyKQotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgU3RyaW5nIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cGxhdGZvcm1NYXliZUV4Y2x1ZGVGcm9tQmFja3VwKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdvcmtR
dWV1ZT4gbV9xdWV1ZTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHBsYXRm
b3JtTWF5YmVFeGNsdWRlRnJvbUJhY2t1cCgpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBib29sIG1f
aGFzRXhjbHVkZWRGcm9tQmFja3VwIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL2lvcy9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJWZXJz
aW9uQ2hlY2tzLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJv
Y2Vzc1ByaXZpbGVnZS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uLmg+CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExB
VEZPUk0oSU9TKQorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdBY3Rpb25z
Lmg+CkBAIC0xMTIsNCArMTEyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oIgogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9T
KQorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KQEAg
LTMxMiw0ICszMTIsNCBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJl
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM4LDQgKzM4LDQgQEAgcHVibGljOgogCiB9CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAKQEAgLTQ1LDQgKzQ1LDQgQEAgSW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXI6On5JbnB1dFZpZXdVcGRhdAogICAgIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvTGF5ZXJSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvTGF5ZXJSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0xheWVyUmVwcmVzZW50YXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiTGF5ZXJSZXByZXNlbnRhdGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KIENBTGF5
ZXIgKmFzTGF5ZXIoTGF5ZXJPclZpZXcgKnZpZXcpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGFnZUNsaWVudElt
cGxDb2NvYS5oIgogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtMjI4
LDQgKzIyOCw0IEBAIHByaXZhdGU6CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQSURhdGEuaCIKICNp
bXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTg0NCw2ICs4NDQsNiBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpyZXF1ZXN0UGFzc3dvcmRGb3JRCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICN1bmRlZiBNRVNTQUdFX0NIRUNLCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UHJvY2Vzc0Fzc2VydGlvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJv
Y2Vzc0Fzc2VydGlvbi5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIkFzc2VydGlvblNlcnZpY2VzU1BJLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogCiB1c2luZyBXZWJLaXQ6OlByb2Nlc3NBc3Nl
cnRpb25DbGllbnQ7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFByb2Nlc3NBbmRVSUFzc2Vy
dGlvbjo6c2V0Q2xpZW50KFByCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZWxzZSAvLyBQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1V
TEFUT1IpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0yOTcsNiArMjk3LDYgQEAgdm9pZCBQ
cm9jZXNzQW5kVUlBc3NlcnRpb246OnNldENsaWVudChQcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2VJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJfaAogI2RlZmluZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyX2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KQEAgLTYyLDYgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNlbmRpZiAvLyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIG1lc3NhZ2VzIC0+IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIgewogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1
cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJS
ZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50
aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhp
bXVtU2NhbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvck1lc3NhZ2VzLmgiCkBAIC0xMzAsNCArMTMwLDQgQEAgdm9pZCBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyOjptYWduaQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2Vy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKQEAgLTI3NSw0ICsyNzUsNCBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVy
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAt
Mzk0LDQgKzM5NCw0IEBAIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb21wbGV0ZVNpbXUK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQWN0aW9uU2hlZXQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQv
VUlBbGVydENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJUG9wb3ZlckNvbnRyb2xsZXIu
aD4KQEAgLTU3LDQgKzU3LDQgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tBY3Rpb25T
aGVldAogLSAodm9pZCl1cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9uOwogQGVuZAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV0tBY3Rpb25TaGVldC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC0yNTksNCArMjU5LDQgQEAgLSAodm9pZClkaWRSb3RhdGUKIAogQGVuZAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
QXNzaXN0YW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkdlc3R1cmVU
eXBlcy5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldC5oIgpAQCAtODIsNCArODIsNCBAQCBzdHJ1
Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiAtIChOU0FycmF5ICopY3VycmVu
dEF2YWlsYWJsZUFjdGlvblRpdGxlczsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNz
aXN0YW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5o
IgogI2ltcG9ydCAiVENDU1BJLmgiCkBAIC02MzYsNCArNjM2LDQgQEAgLSAodm9pZCljbGVhbnVw
U2hlZXQKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAKQEAgLTM4
LDQgKzM4LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0
aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdW
aWV3LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCAiQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCkBAIC0xMDQsNCArMTA0LDQgQEAgLSAoVUlWaWV3ICopX2NvbnRlbnRWaWV3CiAK
IEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCkBAIC03MTAs
NCArNzEwLDQgQEAgLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERvY3VtZW50CiAKICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TTUFDKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKIApAQCAtNDIwLDQg
KzQyMCw0IEBAIERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUUKICsgKENs
YXNzKV9maWxlVXBsb2FkUGFuZWxDbGFzczsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFQ
SVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTY1NTMsNCArNjU1Myw0
IEBAICsgKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3QKIAogQGVuZAogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPEZv
dW5kYXRpb24vTlNPYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KQEAgLTQ1LDQg
KzQ1LDQgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAtKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdp
biBmcmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoo
RnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcq
KXZpZXc7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBv
cnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCkBAIC0zNTUsNCArMzU1LDQgQEAgLSAoQk9PTClzaG91
bGRDbGVhckNhY2hlCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2Jq
Q1NlY3VyaXR5T3JpZ2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkwuaD4KQEAg
LTU2LDQgKzU2LDQgQEAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0IDxVSUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyLmg+CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXpl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0
b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVj
b2duaXplci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJR2VzdHVyZVJlY29nbml6ZXJTdWJjbGFzcy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNjgs
NCArNjgsNCBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgCiAKIEBl
bmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0
IDxRdWFydHpDb3JlL0NBRGlzcGxheUxpbmsuaD4KQEAgLTYzOSw0ICs2MzksNCBAQCAtICh2b2lk
KWRpZEZpbmlzaFNjcm9sbGluZwogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJ
bmRpY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAKQEAgLTM4LDQg
KzM4LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQ
REZQYWdlTnVtYmVySW5kaWNhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmgiCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBv
cnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtMjExLDQgKzIxMSw0IEBAIC0gKHZv
aWQpX21ha2VSb3VuZGVkQ29ybmVycwogCiBAZW5kCiAKLSNlbmRpZiAvKiBQTEFURk9STShJT1Mp
ICovCisjZW5kaWYgLyogUExBVEZPUk0oSU9TX0ZBTUlMWSkgKi8KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
I2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KIApAQCAtMzksNCArMzksNCBAQAogCiBAZW5kCiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3JkVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQYXNzd29yZFZpZXcubW0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Bhc3N3b3Jk
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXS1Bhc3N3b3JkVmlldy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJX
S0NvbnRlbnRWaWV3LmgiCkBAIC0xODcsNCArMTg3LDQgQEAgLSAodm9pZClkaWRFbmRFZGl0aW5n
UGFzc3dvcmQ6KFVJVGV4dEZpZQogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRT
UEkuaCIKIApAQCAtNDIsNCArNDIsNCBAQAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1Njcm9sbFZp
ZXcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtMzg1LDQg
KzM4NSw0IEBAIC0gKENHUG9pbnQpX3B1aWNfY29udGVudE9mZnNldEZvckNyb3duSW4KIAogQGVu
ZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeW50aGV0aWNDbGlja1Rh
cEdlc3R1cmVSZWNvZ25pemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLU3ludGhldGljQ2xpY2tUYXBHZXN0dXJlUmVjb2duaXplci5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTeW50aGV0aWNDbGlja1Rh
cEdlc3R1cmVSZWNvZ25pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVy
ZVJlY29nbml6ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLm0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVy
ZVJlY29nbml6ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0IDxVSUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyU3ViY2xhc3MuaD4KIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAKQEAgLTM3LDQgKzM3LDQgQEAKIAogQGVuZAogCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tXZWJFdmVudC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBA
IC02Niw0ICs2Niw0IEBAIC0gKFVJRXZlbnQgKil1aUV2ZW50CiAKIEBlbmQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklP
Uy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNpbXBvcnQgIldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIgpAQCAtNTksNCAr
NTksNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKIAotI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldLQ29udGVudFZpZXcu
aCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgpAQCAtMzczLDQgKzM3Myw0
IEBAIC0gKHZvaWQpdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmkKIAogQGVuZAogCi0j
ZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpICYmIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgpAQCAtMTE0NSw0ICsxMTQ1LDQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUHJvY2Vzc1Byb3h5SU9T
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UHJvY2Vzc1Byb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KIApAQCAtNDIsNCArNDIsNCBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6
ZnVsbEtleWJvYXJkQWNjZXNzCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91
dGVQaWNrZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYg
UExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCiAjaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikKIApAQCAtNTIsNSArNTIsNSBAQCBlbnVtIGNsYXNzIFJvdXRlU2hhcmlu
Z1BvbGljeSA6IHVpbnQ4X3Q7CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAm
JiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQ
bGF5Um91dGVQaWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tBaXJQbGF5Um91dGVQaWNrZXIuaCIKIAotI2lmIFBM
QVRGT1JNKElPUykgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CkBAIC0yMjEsNCArMjIxLDQgQEAgLSAo
dm9pZClzaG93RnJvbVZpZXc6KFVJVmlldyAqKXZpZXcgcm91dAogCiAjZW5kaWYKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5l
bC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29u
dHJvbGxlci5oPgogCkBAIC01MCw0ICs1MCw0IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHk7CiAtICh2b2lkKWZpbGVVcGxvYWRQYW5lbERpZERpc21pc3M6KFdLRmlsZVVw
bG9hZFBhbmVsICopZmlsZVVwbG9hZFBhbmVsOwogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
aWxlVXBsb2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tGaWxlVXBsb2FkUGFuZWwuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElBcnJheS5o
IgogI2ltcG9ydCAiQVBJRGF0YS5oIgpAQCAtNzIzLDQgKzcyMyw0IEBAIC0gKEJPT0wpcGxhdGZv
cm1TdXBwb3J0c1BpY2tlclZpZXdDb250cm8KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1D
b2xvckNvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCiAKQEAgLTMzLDQgKzMzLDQgQEAKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVuZAogCi0jZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNv
bG9yQ29udHJvbC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0Zvcm1Db2xvckNvbnRy
b2wuaCIKIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCkBAIC0xMjYsNCAr
MTI2LDQgQEAgLSAodm9pZCllbmRFZGl0aW5nCiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bUNvbG9yUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgogCkBA
IC00MSw0ICs0MSw0IEBAIE9CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVuZAogCi0jZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNr
ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRm9ybUNvbG9yUGlja2VyLmgiCiAK
LSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9TKQorI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJB
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTMxNiw0
ICszMTYsNCBAQCAtICh2b2lkKWRpZFBhbkNvbG9yczooVUlHZXN0dXJlUmVjb2duaXplCiAKIEBl
bmQKIAotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRD
b250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybUlucHV0Q29udHJvbC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKIApAQCAtMzMsNCArMzMsNCBAQAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CiBAZW5kCiAKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0
Q29udHJvbC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wu
aCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtMzY1LDQgKzM2
NSw0IEBAIC0gKFVJVmlldyAqKWNvbnRyb2xWaWV3CiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5oCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9w
b3Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVBvcG92ZXJDb250cm9sbGVyLmg+CiAK
QEAgLTU1LDQgKzU1LDQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAtICh2
b2lkKWFjY2Vzc29yeURvbmU7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS0Zvcm1Qb3BvdmVyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcu
aCIKQEAgLTE4MSw0ICsxODEsNCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RD
b250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgiCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtNDksNCArNDksNCBAQCBDR0Zsb2F0IGFkanVzdGVkRm9u
dFNpemUoQ0dGbG9hdCB0ZXh0V2lkCiAtICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvd0lu
ZGV4IGluQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0
aW9uOihCT09MKWV4dGVuZGluZ1NlbGVjdGlvbjsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJV
SUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtMTIxLDQgKzEyMSw0IEBA
IC0gKE5TU3RyaW5nICopc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZQogCiBAZW5kCiAKLSNlbmRpZiAg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmICAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxl
Y3RQaWNrZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXS0Zvcm1Q
ZXJpcGhlcmFsLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVBpY2tlclZpZXcuaD4KQEAgLTM4LDQgKzM4
LDQgQEAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
OwogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
U2VsZWN0UGlja2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tGb3JtU2VsZWN0UGlja2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZp
ZXcuaCIKQEAgLTQ1Miw0ICs0NTIsNCBAQCAtICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJv
d0luZGV4IGluCiAKIEBlbmQKIAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLmgJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3Bv
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKICNpbXBvcnQgIldL
Rm9ybVBvcG92ZXIuaCIKQEAgLTM3LDQgKzM3LDQgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgVUlUYWJsZVZpZXdDb250cm9sbGVyICp0YWJsZVZpZXdDb250cm9sbGVyOwogQGVu
ZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0
UG9wb3Zlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tG
b3JtU2VsZWN0UG9wb3Zlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3
LmgiCkBAIC00NjMsNCArNDYzLDQgQEAgLSAodm9pZClzZWxlY3RSb3c6KE5TSW50ZWdlcilyb3dJ
bmRleCBpbgogCiBAZW5kCiAKLSNlbmRpZiAgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmICAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1
bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWMuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpICYmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCkBAIC04
Myw0ICs4Myw0IEBAIGRvdWJsZSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWM6OmF0dGUKIAog
fQogCi0jZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJ
T1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNjMsNCArNjMsNCBAQCBwcml2YXRlOgog
CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5WaWV3Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElP
UykKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KIApAQCAtNTEsNCArNTEsNCBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlm
IC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9s
bGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29u
dHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJj
b25maWcuaCIKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TKQor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBv
cnQgIldLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgIkZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpYy5oIgpAQCAtNTgxLDQgKzU4MSw0IEBAIC0gKHZvaWQpX3Nob3dQaGlz
aGluZ0FsZXJ0CiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYg
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nLmg+CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCIK
IAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTEwNDMsNCArMTA0Myw0IEBAIC0gKHZvaWQpX2lu
dGVyYWN0aXZlUGluY2hEaXNtaXNzQ2hhbmdlZDoKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVu
U3RhY2tWaWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KQEAgLTM4LDQgKzM4LDQgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3Rh
Y2tWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldLRnVsbHNjcmVlblN0YWNrVmlldy5o
IgogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtODQsNCArODQsNCBAQCAtICh2b2lkKWxheW91
dFN1YnZpZXdzCiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYg
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lT
ZXNzaW9uU3RhdGVDb2RpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYgc2Vzc2lvbkhpc3RvcnlFCiBjb25zdCB1aW50MzJfdCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0
YVZlcnNpb24gPSAyOwogCiAvLyBNYXhpbXVtIHNpemUgZm9yIHN1YmZyYW1lIHNlc3Npb24gZGF0
YS4KLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBj
b25zdCB1aW50MzJfdCBtYXhpbXVtU2Vzc2lvblN0YXRlRGF0YVNpemUgPSAyICogMTAyNCAqIDEw
MjQ7CiAjZWxzZQogc3RhdGljIGNvbnN0IHVpbnQzMl90IG1heGltdW1TZXNzaW9uU3RhdGVEYXRh
U2l6ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBIaXN0b3J5RW50cnlEYXRh
RW5jb2RlciYgb3BlcmF0b3I8PChXZWJDb3JlOjpGbG9hdFJlY3QgdmFsdWUpCiAgICAgewogICAg
ICAgICAqdGhpcyA8PCB2YWx1ZS54KCk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlRnJhbWVTdGF0ZU5vZGUoSGlzdG9yeQogCiAgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRl
LnRhcmdldDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIEZJWE1FOiBpT1Mgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRl
IGVuY29kZXIuCiAgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50UmVjdDsK
ICAgICBlbmNvZGVyIDw8IGZyYW1lU3RhdGUudW5vYnNjdXJlZENvbnRlbnRSZWN0OwpAQCAtNjMz
LDcgKzYzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEhpc3RvcnlFbnRy
eURhdGFEZWNvZGVyJiBvcGVyYXRvcj4+KFdlYkNvcmU6OkZsb2F0UmVjdCYgdmFsdWUpCiAgICAg
ewogICAgICAgICB2YWx1ZSA9IFdlYkNvcmU6OkZsb2F0UmVjdCgpOwpAQCAtOTQyLDcgKzk0Miw3
IEBAIHN0YXRpYyB2b2lkIGRlY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoSGkKIAogICAgIGRlY29k
ZXIgPj4gZnJhbWVTdGF0ZS50YXJnZXQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogaU9TIHNob3VsZCBub3QgdXNlIHRoZSBsZWdh
Y3kgc2Vzc2lvbiBzdGF0ZSBkZWNvZGVyLgogICAgIGRlY29kZXIgPj4gZnJhbWVTdGF0ZS5leHBv
c2VkQ29udGVudFJlY3Q7CiAgICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLnVub2JzY3VyZWRDb250
ZW50UmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3
IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OkludFJlY3Qgcm9v
dFZpZXdUb1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogCkBAIC04Miw0ICs4Miw0IEBAIHBy
aXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRFJBV0lOR19BUkVBX1BST1hZKFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHksIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFu
aW1hdGlvbikKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVh
TWVzc2FnZXMuaCIKQEAgLTIyMCw0ICsyMjAsNCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RT
dG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1T
bmFwc2hvdENhY2hlU2l6ZSA9IDUwICogKDEwMjQgKiAxMDI0KTsKICNlbHNlCiBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1heGltdW1TbmFwc2hvdENhY2hlU2l6ZSA9IDQwMCAqICgxMDI0ICogMTAyNCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5oIgogCkBAIC03NjIsNCArNzYyLDQgQEAgLSAodm9pZClf
d2F0Y2hkb2dUaW1lckZpcmVkOihOU1RpbWVyICopdAogCiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcg
KzE3MCw3IEBAIFdlYlByb2Nlc3MmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpCiAKIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogICAgIDogbV9ldmVudERpc3BhdGNoZXIoRXZlbnREaXNwYXRjaGVy
OjpjcmVhdGUoKSkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAsIG1fdmlld1VwZGF0ZURpc3BhdGNoZXIoVmlld1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0
ZSgpKQogI2VuZGlmCiAgICAgLCBtX3dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIoV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Y3JlYXRlKCkpCkBAIC0yNDUsOSArMjQ1LDkg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogI2VuZGlmCiAKICAg
ICBtX2V2ZW50RGlzcGF0Y2hlci0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV92aWV3VXBk
YXRlRGlzcGF0Y2hlci0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV93
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMzE3LDcgKzMx
Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBwZXIgZGF0YSBzdG9yZSwgbm90IHBl
ciBwcm9jZXNzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLT5zZXREZWZhdWx0T3JpZ2luUXVvdGEoMjVVTEwgKiAxMDI0ICogMTAy
NCk7CiAjZW5kaWYKIApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdl
QWN0aXZpdHlTdGF0ZURpZENoYQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9u
aXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0
QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKSB7CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoCiAgICAgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBhY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbih0cnVlKTsKICNl
bmRpZgogCkBAIC0xNDA5LDcgKzE0MDksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNhbmNlbFByZXBh
cmVUb1N1c3BlbmQoCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdl
YlByb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOwogICAgIHNldEFsbExh
eWVyVHJlZVN0YXRlc0Zyb3plbihmYWxzZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlm
aWNhdGlvbihmYWxzZSk7CiAjZW5kaWYKICAgICAKQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgY2FuY2VsTWFya0FsbExheWVyc1Zv
bGF0aWxlKCk7CiAgICAgc2V0QWxsTGF5ZXJUcmVlU3RhdGVzRnJvemVuKGZhbHNlKTsKICAgICAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhY2Nlc3Np
YmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbihmYWxzZSk7CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZFByZXdhcm1JbmZvcm1h
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25z
KCk7CiAjZW5kaWYKIApAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIuZ2V0KCk7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVByb2Nlc3NTdXNwZW5kZWROb3Rp
ZmljYXRpb24oYm9vbCk7CiAjZW5kaWYKIApAQCAtMzk0LDcgKzM5NCw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCiAgICAgUmVmUHRy
PEV2ZW50RGlzcGF0Y2hlcj4gbV9ldmVudERpc3BhdGNoZXI7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFZpZXdVcGRhdGVEaXNwYXRjaGVy
PiBtX3ZpZXdVcGRhdGVEaXNwYXRjaGVyOwogI2VuZGlmCiAgICAgUmVmUHRyPFdlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXI+IG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNl
L1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9XZWJDb250ZW50U2Vydmlj
ZUVudHJ5UG9pbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2lu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZp
Y2VzU1BJLmg+CiAjZW5kaWYKQEAgLTQzLDEwICs0MywxMCBAQCB2b2lkIFdlYkNvbnRlbnRTZXJ2
aWNlSW5pdGlhbGl6ZXIoeHBjX2NvCiAgICAgLy8gdGhlIHRoaXMgcHJvY2VzcyBkb24ndCB0cnkg
dG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRp
bGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJBUklF
UyIsICIvV2ViUHJvY2Vzc1NoaW0uZHlsaWIiKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEdTSW5pdGlhbGl6ZSgpOwogICAgIEluaXRXZWJDb3Jl
VGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFs
aXplcjxXZWJLaXQ6OldlYlByb2Nlc3MsIFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVs
ZWdhdGU+KGFkb3B0T1NPYmplY3QoY29ubmVjdGlvbiksIGluaXRpYWxpemVyTWVzc2FnZSwgcHJp
b3JpdHlCb29zdE1lc3NhZ2UpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2Vi
RnVsbFNjcmVlbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg+CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjZW5kaWYKIApA
QCAtODYsNyArODYsNyBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hh
bmdlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBMT0co
RnVsbHNjcmVlbiwgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyICVwIHZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKCkiLCB0aGlzKTsKIAogICAgIGF1dG8qIGN1cnJlbnRQbGF5YmFja0NvbnRyb2xz
RWxlbWVudCA9IG1fcGFnZS0+cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpLmN1cnJlbnRQbGF5YmFj
a0NvbnRyb2xzRWxlbWVudCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgV2ViRnVsbFNjcmVl
bk1hbmFnZXI6OndpbGxFbnRlckZ1bGwKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyICVwIHdpbGxFbnRlckZ1bGxTY3JlZW4oKSAtIGVsZW1lbnQgJXAiLCB0aGlzLCBt
X2VsZW1lbnQuZ2V0KCkpOwogCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLndlYmtpdFdpbGxF
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3BhZ2UtPmhpZGVQYWdlQmFu
bmVycygpOwogI2VuZGlmCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVy
RnVsbFMKIAogICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXREaWRFbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICAgICBhdXRvKiBjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbnQg
PSBtX3BhZ2UtPnBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKS5jdXJyZW50UGxheWJhY2tDb250cm9s
c0VsZW1lbnQoKTsKICAgICBzZXRQSVBTdGFuZGJ5RWxlbWVudChpczxIVE1MVmlkZW9FbGVtZW50
PihjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbnQpID8gZG93bmNhc3Q8SFRNTFZpZGVvRWxl
bWVudD4oY3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVtZW50KSA6IG51bGxwdHIpOwogI2VuZGlm
CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRG
dWxsUwogCiAgICAgbV9maW5hbEZyYW1lID0gc2NyZWVuUmVjdE9mQ29udGVudHMobV9lbGVtZW50
LmdldCgpKTsKICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCkud2Via2l0V2lsbEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9wYWdlLT5zaG93UGFnZUJhbm5lcnMoKTsKICNl
bmRpZgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuYmVnYW5F
eGl0RnVsbFNjcmVlbihtX3BhZ2UuZ2V0KCksIG1fZmluYWxGcmFtZSwgbV9pbml0aWFsRnJhbWUp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTEgKzExNywxMSBAQCB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9O
KQogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucygpCiB7CiAgICAgbV9wcm9j
ZXNzLnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwogfQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
Jik7CiAgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nl
c3M7CiAgICAgSGFzaFNldDxXZWJQYWdlKj4gbV9wYWdlU2V0OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXIgewogICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24gcG9zaXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0
aW9uKFN0cmluZyBlcnJvck1lc3NhZ2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
ICopaHRtbElGcmFtZUUKICAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9ub2RlSGFuZGxlLT5o
dG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoVUlJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucwogewogICAgIHJldHVybiBbc2VsZiBy
ZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6b3B0aW9ucyB3aWR0aDpuaWxdOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRCb3R0b21PdmVy
aGFuZ0ltYWdlKAogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRIZWFkZXJCYW5uZXIoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZiBiYW5uZXJSZWYpCiB7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRIZWFkZXJQYWdlQmFubmVyKHRvSW1wbChiYW5uZXJSZWYpKTsK
QEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldEZvb3RlckJhbm5lcihXS0J1
bmRsCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb290ZXJQYWdlQmFubmVyKHRvSW1wbChi
YW5uZXJSZWYpKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VC
YW5uZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9t
YWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlQmFubmVyTWFj
LmgiCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5lci5oIgpAQCAtMTEyLDQg
KzExMiw0IEBAIENBTGF5ZXIgKldLQnVuZGxlUGFnZUJhbm5lckdldExheWVyKFdLQnUKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwocGFnZUJhbm5lciktPmxheWVyKCk7CiB9CiAKLSNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRl
cm5hbHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJu
YWxzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0ICJXS0RPTURv
Y3VtZW50LmgiCiAjaW1wb3J0ICJXS0RPTVRleHQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVicy5o
PgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTk1LDcgKzU5NSw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHIKIAogICAgICAgICAgICAgYXV0byBhcGlGcm9tUmFuZ2UgPSBmcm9tUmFu
Z2UgPyBhZG9wdE5TKFtbV0tET01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDpmcm9tUmFuZ2Vd
KSA6IG5pbDsKICAgICAgICAgICAgIGF1dG8gYXBpVG9SYW5nZSA9IHRvUmFuZ2UgPyBhZG9wdE5T
KFtbV0tET01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDp0b1JhbmdlXSkgOiBuaWw7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBVSVRl
eHRTdG9yYWdlRGlyZWN0aW9uIGFwaUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBT
VFJFQU0gPyBVSVRleHRTdG9yYWdlRGlyZWN0aW9uQmFja3dhcmQgOiBVSVRleHRTdG9yYWdlRGly
ZWN0aW9uRm9yd2FyZDsKICNlbHNlCiAgICAgICAgICAgICBOU1NlbGVjdGlvbkFmZmluaXR5IGFw
aUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0gPyBOU1NlbGVjdGlvbkFm
ZmluaXR5VXBzdHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgRnJhbWVTdGF0
ZSB0b0ZyYW1lU3RhdGUoY29uc3QgSGlzCiAgICAgICAgIGZyYW1lU3RhdGUuaHR0cEJvZHkgPSBX
VEZNb3ZlKGh0dHBCb2R5KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50UmVjdCA9IGhpc3Rv
cnlJdGVtLmV4cG9zZWRDb250ZW50UmVjdCgpOwogICAgIGZyYW1lU3RhdGUudW5vYnNjdXJlZENv
bnRlbnRSZWN0ID0gaGlzdG9yeUl0ZW0udW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CiAgICAgZnJh
bWVTdGF0ZS5taW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0gaGlzdG9y
eUl0ZW0ubWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpOwpAQCAtMTY4
LDcgKzE2OCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYKICAg
ICAgICAgaGlzdG9yeUl0ZW0uc2V0Rm9ybURhdGEodG9Gb3JtRGF0YShodHRwQm9keSkpOwogICAg
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGhp
c3RvcnlJdGVtLnNldEV4cG9zZWRDb250ZW50UmVjdChmcmFtZVN0YXRlLmV4cG9zZWRDb250ZW50
UmVjdCk7CiAgICAgaGlzdG9yeUl0ZW0uc2V0VW5vYnNjdXJlZENvbnRlbnRSZWN0KGZyYW1lU3Rh
dGUudW5vYnNjdXJlZENvbnRlbnRSZWN0KTsKICAgICBoaXN0b3J5SXRlbS5zZXRNaW5pbXVtTGF5
b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKGZyYW1lU3RhdGUubWluaW11bUxheW91dFNp
emVJblNjcm9sbFZpZXdDb29yZGluYXRlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwogI2Vu
ZGlmCiBwcml2YXRlOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigidW51c2VkLXByaXZhdGUtZmllbGQi
KQogI2VuZGlmCiAgICAgV2ViUGFnZSAqbV9wYWdlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICNlbmRp
ZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNlbmRp
ZgpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KGNvbnMKIAogRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIEZsb2F0
UmVjdCgpOwogI2Vsc2UKICNpZiBQTEFURk9STShNQUMpCkBAIC01NjIsNyArNTYyLDcgQEAgSW50
UmVjdCBXZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3VG9TY3JlZQogICAgIHJldHVybiBtX3BhZ2Uu
cm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJp
bGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAg
IHJldHVybiBtX3BhZ2UuYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOwpAQCAt
ODE3LDcgKzgxNyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpsb2FkSWNvbkZvckZpbGVzKGMK
ICAgICBsb2FkZXIuaWNvbkxvYWRlZChjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewpAQCAt
OTUwLDcgKzk1MCw3IEBAIFJlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gV2ViQ2hyb21lQ2wK
IAogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKIHsKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
Y2xlYXJQbGF5YmFja0NvbnRyCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlclZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIHN0YW5k
YnkpCiB7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1MpCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VS
VChzdGFuZGJ5IHx8IG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAjZWxzZQogICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRQogCiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBGbG9hdFNpemUgV2ViQ2hy
b21lQ2xpZW50OjpzY3JlZW5TaXplKCkgY29uc3QKIHsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjppbnB1dEVsZW1lbnREaWRSZXMKICAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29y
ZEFwcGVhcmFuY2UgeyBVc2VyRGF0YSB7IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpIH0gfSk7CiB9CiAKLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWlu
dDY0X3QgY29udGV4dElkKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBmaW5hbDsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qg
ZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTE1NCw3
ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgp
IGZpbmFsOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIGZpbmFsOwogICAg
IHZvaWQgc2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKFdlYkNvcmU6OkZyYW1lJiwgYm9vbCkg
ZmluYWw7CiAgICAgdm9pZCBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoV2ViQ29yZTo6RnJhbWUmKSBm
aW5hbDsKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1NoYXJlU2hl
ZXQoV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUljb25Mb2FkZXImKSBmaW5hbDsKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRD
dXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgZmluYWw7CiAgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgZmluYWw7CiAjZW5kaWYKQEAgLTIzMiwxMCArMjMy
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWaWRlb1RyaWdnZXIgfAogICAgICAgICAgICAg
UGx1Z2luVHJpZ2dlcnwKICAgICAgICAgICAgIENhbnZhc1RyaWdnZXIgfAotI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgICAgIFNjcm9sbGFibGVOb25NYWluRnJhbWVUcmlnZ2VyIHwKICNl
bmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAgICAgQW5pbWF0ZWRPcGFjaXR5VHJpZ2dlciB8IC8vIEFsbG93IG9wYWNpdHkgYW5pbWF0aW9u
cyB0byB0cmlnZ2VyIGNvbXBvc2l0aW5nIG1vZGUgZm9yIGlQaG9uZTogPHJkYXI6Ly9wcm9ibGVt
Lzc4MzA2Nzc+CiAjZW5kaWYKICAgICAgICAgICAgIEFuaW1hdGlvblRyaWdnZXIpOwpAQCAtMjQ3
LDExICsyNDcsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I+IGNyZWF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKFdlYkNvcmU6OlBhZ2UmKSBjb25z
dCBmaW5hbDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBlbGVtZW50RGlkUmVmb2N1cyhXZWJDb3JlOjpFbGVtZW50JikgZmlu
YWw7CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorI2lmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBib29sIHN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBmaW5h
bDsKICAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCYpIGZpbmFsOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCkgZmluYWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IGZp
bmFsOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qg
ZmluYWw7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0
IGZpbmFsOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlucHV0RWxl
bWVudERpZFJlc2lnblN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50JikgZmluYWw7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQodWludDY0X3QgLypjb250ZXh0SWQqLykgZmluYWw7CiAgICAgdm9pZCByZW1vdmVQbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50NjRfdCAvKmNvbnRleHRJZCovKSBmaW5hbDsKICAg
ICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcih1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw3ICs0
MDUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4CiAgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSht
X3BhZ2UsIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpLCB3ZWJGcmFtZSk7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFNob3dVbmljb2RlTWVudSgpIGZpbmFsOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0YXJ0RGVsYXlp
bmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKICAgICB2
b2lkIHN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygp
IGZpbmFsOwogICAgIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGEKIAogICAgIHdlYlBhZ2UtPnJlY29tcHV0ZVNob3J0
Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50c1N0YXRlKCk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB3ZWJQYWdlLT51cGRhdGVTZWxlY3Rpb25B
cHBlYXJhbmNlKCk7CiAjZW5kaWYKIApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkQ29tcAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9mcmFtZS0+
aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5zYXZlUGFnZVN0YXRlKGhp
c3RvcnlJdGVtKTsKICNlbHNlCkBAIC0xMjc4LDcgKzEyNzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzYXZlVmlld1N0YXRlCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
c3RvcmVWaWV3U3RhdGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIEZyYW1lJiBmcmFtZSA9ICptX2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBI
aXN0b3J5SXRlbSogY3VycmVudEl0ZW0gPSBmcmFtZS5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVu
dEl0ZW0oKTsKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpKSB7CkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
CiAgICAgaWYgKHdlYlBhZ2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT52aWV3KCktPnNldFZpZXdFeHBvc2VkUmVjdCh3ZWJQYWdlLT5kcmF3aW5nQXJlYSgp
LT52aWV3RXhwb3NlZFJlY3QoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRE
ZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAjZW5kaWYKIApAQCAtMTY1Miw3ICsxNjUyLDcgQEAg
T2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OgogICAgIGlmIChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpKQogICAgICAg
ICByZXR1cm4gT2JqZWN0Q29udGVudFR5cGU6OkZyYW1lOwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gaU9TIGNhbiByZW5kZXIgUERGIGluIDxv
YmplY3Q+LzxlbWJlZD4gdmlhIFBERkRvY3VtZW50SW1hZ2UuCiAgICAgaWYgKE1JTUVUeXBlUmVn
aXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1
cm4gT2JqZWN0Q29udGVudFR5cGU6OkltYWdlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWw7CiAg
ICAgCiAgICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBmaW5hbDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBib29sIGZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogI2VuZGlm
CiAgICAgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKSBmaW5hbDsKQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAg
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlJikgZmluYWw7CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0
aW9uUHJvcGVydGllcyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CkBAIC0xOTcsNyArMTk3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWUqKSBmaW5hbDsKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRl
ZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkUmVzdG9yZUZy
YW1lSGllcmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQgdHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvck92
ZXJsYXkuaD4KICNlbmRpZgogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZ2hsaWdodCgpCiAgICAgaWYgKCFtX3BhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdz
KCkuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1f
aGlnaGxpZ2h0T3ZlcmxheSkgewogICAgICAgICBhdXRvIGhpZ2hsaWdodE92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgbV9oaWdobGlnaHRPdmVybGF5ID0gaGln
aGxpZ2h0T3ZlcmxheS5wdHIoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6aGlnaGxpZ2h0KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdo
bGlnaHQoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKG1faGlnaGxpZ2h0T3ZlcmxheSkKICAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS51bmluc3RhbGxQYWdlT3ZlcmxheSgqbV9oaWdobGln
aHRPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwogI2Vsc2UKQEAgLTE4NCw3
ICsxODQsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YW5pbWF0aW9uRW5kZWRGCiAgICAg
bV9wYWludFJlY3RMYXllcnMucmVtb3ZlKCpub25Db25zdExheWVyKTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBtX3BhZ2UtPnNob3dJbnNwZWN0
b3JJbmRpY2F0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgp
IG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQg
aGlkZUluc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0TnVtYmVyT2ZGaQogICAgIHJldHVybiBudW1iZXJPZkZpbGVzOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OjpSZXBseSh0eXBlcyksIDApOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIFN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmcKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1cm4gdmFsdWU7CiB9Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHdyaXRl
VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVi
b2FyZChjb25zdCBXZWJDb3JlOjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYkNocm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJDaHJvbWVDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRHJhd2luZ0Fy
ZWEuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0xNjEsNCArMTYxLDQgQEAgUmVmUHRyPElj
b24+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJF
ZGl0b3JDbGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRp
dG9yQ2xpZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkVkaXRvckNsaWVudC5oIgogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgpAQCAtOTMsNCArOTMsNCBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6b3ZlcmZsb3dTY3JvbGxQb3NpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJQYWdlLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCkBAIC04MCw0ICs4MCw0IEBAIFJlZlB0cjxQcmV2
aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWQKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlL
aXRTUEkuaCIKICNlbmRpZgogCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2Us
IGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoCiAgICAgbV9wYWdlLT5k
aWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb24oKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWEKIHsKICAgICBzd2l0
Y2ggKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERy
YXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRl
cnMpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1
aW50NjRfdCAvKmxheWVySUQqLywgY29uc3QgU3RyaW5nJiAvKmtleSovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWRkRmVuY2UoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JikgeyB9CiAjZW5kaWYK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmco
Y29uc3QgU3QKICAgICAvLyBpT1Mgd2lsbCByZXZlYWwgdGhlIHNlbGVjdGlvbiB0aHJvdWdoIGEg
ZGlmZmVyZW50IG1lY2hhbmlzbSwgYW5kCiAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBzZW5kaW5n
IHRoZSBub24tcGFpbnRlZCBzZWxlY3Rpb24gY2hhbmdlIHRvIHRoZSBVSSBwcm9jZXNzCiAgICAg
Ly8gc28gdGhhdCBpdCBkb2VzIG5vdCBjbGVhciB0aGUgc2VsZWN0aW9uIG91dCBmcm9tIHVuZGVy
IHVzLgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNv
cmVPcHRpb25zLmFkZChEb05vdFJldmVhbFNlbGVjdGlvbik7CiAjZW5kaWYKIApAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogICAgIGhpZGVGaW5k
SW5kaWNhdG9yKCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1l
JiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0
ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIkZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgiCiAjZW5kaWYKIApAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSW5kZXggdmFsdWUgaXMgLTEgaWYgbm90IGZvdW5k
IG9yIGlmIG51bWJlciBvZiBtYXRjaGVzIGV4Y2VlZHMgcHJvdmlkZWQgbWF4aW11bS4KICAgICBp
bnQgbV9mb3VuZFN0cmluZ01hdGNoSW5kZXggeyAtMSB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBhZ2VPdmVybGF5
PiBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaW5kSW5kaWNh
dG9yT3ZlcmxheUNsaWVudElPUz4gbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2VuZGlmCiAKQEAg
LTUzLDcgKzUzLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRp
YyBjb25zdCBkb3VibGUgbWluaW11bVNjYWxlRGlmZmVyZW5jZUZvclpvb21pbmcgPSAwLjM7CiAj
ZW5kaWYKIApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmRpc3BhCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUob3JpZ2luLCB0YXJnZXRSZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGZp
dEVudGlyZVJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkp
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OkRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCB0
YXJnZXRSZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGZpdEVudGlyZVJlY3QsIHZpZXdwb3J0TWlu
aW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOwogI2VuZGlmCiB9CkBAIC05MSw3ICs5
MSw3IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKICAgICBkb3Vi
bGUgdmlld3BvcnRNaW5pbXVtU2NhbGU7CiAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxl
OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KG1fd2ViUGFnZS5wbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmco
KSkgewogICAgICAgICBhdXRvIHRleHRMZWdpYmlsaXR5U2NhbGVzID0gY29tcHV0ZVRleHRMZWdp
YmlsaXR5U2NhbGVzKHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSk7
CiAgICAgICAgIGlmICghdGV4dExlZ2liaWxpdHlTY2FsZXMpIHsKQEAgLTExMiw3ICsxMTIsNyBA
QCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlCiAgICAgICAgIGRpc3Bh
dGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4s
IHRhcmdldFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgdmlzaWJsZUNvbnRlbnRSZWN0LCB0cnVl
LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAgICAgSW50UG9pbnQgb3JpZ2luSW5Db250ZW50c1NwYWNlID0gbV93
ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3VuZGVkSW50UG9pbnQo
b3JpZ2luKSk7CiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dChvcmlnaW5JbkNvbnRlbnRzU3BhY2UpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKICAgICBkaXNwYXRjaERpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNp
YmxlQ29udGVudFJlY3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9y
dE1heGltdW1TY2FsZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogc3RydWN0IEZvbnRTaXplQW5kQ291bnQgewogICAgIHVuc2lnbmVkIGZvbnRT
aXplOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGRvdWJsZSwg
ZG91YmxlPj4KICAgICByZXR1cm4gbV9jYWNoZWRUZXh0TGVnaWJpbGl0eVNjYWxlczsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVab29tSW5mb3JtYXRp
b25Gb3JOb2RlKE5vZGUmIG5vZGUsIEZsb2F0UG9pbnQmIG9yaWdpbiwgRmxvYXRSZWN0JiByZW5k
ZXJSZWN0LCBib29sJiBpc1JlcGxhY2VkLCBkb3VibGUmIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQogewpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGUKIAogdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fY2FjaGVkVGV4dExlZ2liaWxpdHlT
Y2FsZXMucmVzZXQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVpvb21J
bmZvcm1hdGlvbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9y
aWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sJiBpc1JlcGxhY2VkLCBk
b3VibGUmIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxl
KTsKICAgICB2b2lkIGNvbXB1dGVNaW5pbXVtQW5kTWF4aW11bVZpZXdwb3J0U2NhbGVzKGRvdWJs
ZSYgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSYgdmlld3BvcnRNYXhpbXVtU2NhbGUpIGNv
bnN0OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2li
aWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9y
dE1heGltdW1TY2FsZSk7CiAjZW5kaWYKIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBtX2Nh
Y2hlZFRleHRMZWdpYmlsaXR5U2NhbGVzOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNz
YWdlcyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIHsKICAgICBDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBD
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiAKICAgICBTZXRSZW5kZXJU
cmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3Bh
dGNoZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKQEAgLTg5LDQgKzg5LDQgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hWaXNpYgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RJT1MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RJT1NfaAogI2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9T
X2gKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5j
bHVkZSAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCIKIApAQCAtMzYsNiArMzYs
NiBAQAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJ
T1NfaApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtODEsNSArODEs
NSBAQCAtIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2luCiAKIEBlbmQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0Owog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdWludDY0
X3QgZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExvYWQ7
IH0KICAgICB2b2lkIHNldEZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0
TG9hZCh1aW50NjRfdCB0cmFuc2FjdGlvbklEKSB7IG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlv
bklEQWZ0ZXJEaWRDb21taXRMb2FkID0gdHJhbnNhY3Rpb25JRDsgfQogI2VuZGlmCkBAIC0xODks
NyArMTg5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50
NjRfdCBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCB7IDAg
fTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2
b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vCiAgICAgbV9maWxlQ2hvb3Nl
ci0+Y2hvb3NlRmlsZXMoZmlsZXMpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9v
c2VGaWxlc1dpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgV2ViQ29yZTo6SWNvbiogZGlzcGxheUlj
b24pCiB7CiAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlTWVkaWFGaWxlcyhmaWxlcywgZGlzcGxh
eVN0cmluZywgZGlzcGxheUljb24pOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9
CiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3Nl
RmlsZXNXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIFdlYkNvcmU6Okljb24qKTsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQAogI2luY2x1ZGUgPGd0ay9ndGsu
aD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CkBAIC0z
ODAsNyArMzgwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwog
ICAgICwgbV9wYWdlU2Nyb2xsZWRIeXN0ZXJlc2lzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0
ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIHBh
Z2VTdG9wcGVkU2Nyb2xsaW5nKCk7IH0sIHBhZ2VTY3JvbGxIeXN0ZXJlc2lzRHVyYXRpb24pCiAg
ICAgLCBtX2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChwYXJhbWV0ZXJzLmNhblJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICAsIG1fY2FuUnVuTW9kYWwocGFyYW1ldGVycy5j
YW5SdW5Nb2RhbCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAsIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUocGFyYW1ldGVycy5pZ25vcmVzVmlld3Bv
cnRTY2FsZUxpbWl0cykKICAgICAsIG1fc2NyZWVuU2l6ZShwYXJhbWV0ZXJzLnNjcmVlblNpemUp
CiAgICAgLCBtX2F2YWlsYWJsZVNjcmVlblNpemUocGFyYW1ldGVycy5hdmFpbGFibGVTY3JlZW5T
aXplKQpAQCAtMzk5LDcgKzM5OSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJQYWcKIAogICAgIG1fcGFnZUdyb3VwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZUdyb3VwKHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSk7CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6
OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KHRydWUpOwogI2VuZGlmCiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFn
CiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUobV9wYWdlR3JvdXAtPmlkZW50aWZpZXIoKSk7CiAg
ICAgbV9wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3RvcihwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFj
dG9yKTsKICAgICBtX3BhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24obV91c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBtX3BhZ2UtPnNldFRleHRBdXRvc2l6aW5nV2lkdGgocGFyYW1l
dGVycy50ZXh0QXV0b3NpemluZ1dpZHRoKTsKICNlbmRpZgogCkBAIC02MjEsNyArNjIxLDcgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKHBhcmFtZXRlcnMuY29udGVudFJ1bGVM
aXN0cyk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHBhcmFtZXRl
cnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUsIHBhcmFtZXRlcnMudmlld3Bv
cnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yKTsKICAgICBzZXRNYXhpbXVtVW5v
YnNjdXJlZFNpemUocGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUpOwogI2VuZGlmCkBA
IC03MTUsMTIgKzcxNSwxMiBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAgICAgZm9yIChhdXRvKiBw
bHVnaW5WaWV3IDogbV9wbHVnaW5WaWV3cykKICAgICAgICAgcGx1Z2luVmlldy0+d2ViUGFnZURl
c3Ryb3llZCgpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAobV9oZWFkZXJCYW5uZXIpCiAgICAgICAgIG1faGVhZGVyQmFubmVyLT5kZXRh
Y2hGcm9tUGFnZSgpOwogICAgIGlmIChtX2Zvb3RlckJhbm5lcikKICAgICAgICAgbV9mb290ZXJC
YW5uZXItPmRldGFjaEZyb21QYWdlKCk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlEKTsKIApAQCAtNzM2LDcgKzczNiw3IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkKICAgICB3ZWJQ
YWdlQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogICAgIAotI2lmIChQTEFURk9STShJT1Mp
ICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQorI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAg
ICBpZiAobV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXItPmludmFsaWRhdGUoKTsKIApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjbwogICAgIGRvdWJsZSB0b3RhbFNjYWxlID0g
c2NhbGUgKiB2aWV3U2NhbGVGYWN0b3IoKTsKICAgICBib29sIHdpbGxDaGFuZ2VTY2FsZUZhY3Rv
ciA9IHRvdGFsU2NhbGUgIT0gdG90YWxTY2FsZUZhY3RvcigpOwogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHdpbGxDaGFuZ2VTY2FsZUZhY3Rv
cikgewogICAgICAgICBpZiAoIW1faW5EeW5hbWljU2l6ZVVwZGF0ZSkKICAgICAgICAgICAgIG1f
ZHluYW1pY1NpemVVcGRhdGVIaXN0b3J5LmNsZWFyKCk7CkBAIC0xODQyLDcgKzE4NDIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4CiAgICAgICAgIHJldHVybjsK
ICAgICBtX3VzZUZpeGVkTGF5b3V0ID0gZml4ZWQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRGaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGZpeGVkKTsKICNlbmRpZgogCkBAIC0xODgwLDcg
KzE4ODAsNyBAQCBJbnRTaXplIFdlYlBhZ2U6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiAKIHZv
aWQgV2ViUGFnZTo6ZGlzYWJsZWRBZGFwdGF0aW9uc0RpZENoYW5nZShjb25zdCBPcHRpb25TZXQ8
RGlzYWJsZWRBZGFwdGF0aW9ucz4mIGRpc2FibGVkQWRhcHRhdGlvbnMpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLnNldERpc2FibGVkQWRhcHRhdGlvbnMoZGlzYWJsZWRBZGFwdGF0aW9ucykpCiAg
ICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICNlbHNlCkBAIC0xODkwLDcg
KzE4OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuCiAKIHZv
aWQgV2ViUGFnZTo6dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJn
dW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS5zaG91bGRJZ25v
cmVNZXRhVmlld3BvcnQoKSAmJiBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRWaWV3cG9ydEFy
Z3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cykpCiAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlv
bkNoYW5nZWQoKTsKICNlbmRpZgpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjp2
aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZwogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgVU5VU0VEX1BBUkFNKHZp
ZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgogfQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgdm9pZCBX
ZWJQYWdlOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKAogICAgIGluamVjdGVkQnVuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZVRvUGFnZSh0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzcy50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBh
Z2U6OnNldEhlYWRlclBhZ2VCYW5uZXIoUGFnZUJhbm5lciogcGFnZUJhbm5lcikKIHsKQEAgLTIw
NDUsNyArMjA0NSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGUK
ICNlbmRpZgogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFw
c2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewpAQCAtMjI0MCw3ICsyMjQwLDcgQEAgUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdE5vZGUoVwogCiB2b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICgh
bV9pbkR5bmFtaWNTaXplVXBkYXRlKQogICAgICAgICBtX2R5bmFtaWNTaXplVXBkYXRlSGlzdG9y
eS5jbGVhcigpOwogI2VuZGlmCkBAIC0yNDkzLDEyICsyNDkzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
bW91c2VFdmVudChjb25zdCBXZWJNb3VzZUUKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
IWhhbmRsZWQgJiYgbV9oZWFkZXJCYW5uZXIpCiAgICAgICAgIGhhbmRsZWQgPSBtX2hlYWRlckJh
bm5lci0+bW91c2VFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoIWhhbmRsZWQgJiYgbV9mb290
ZXJCYW5uZXIpCiAgICAgICAgIGhhbmRsZWQgPSBtX2Zvb3RlckJhbm5lci0+bW91c2VFdmVudCht
b3VzZUV2ZW50KTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAgICAgaWYgKCFoYW5kbGVkKSB7CiAgICAgICAgIEN1cnJlbnRFdmVu
dCBjdXJyZW50RXZlbnQobW91c2VFdmVudCk7CkBAIC0zMDQ0LDcgKzMwNDQsNyBAQCBJbnRSZWN0
IFdlYlBhZ2U6OnJvb3RWaWV3VG9TY3JlZW4oY29uc3QgCiAgICAgcmV0dXJuIHNjcmVlblJlY3Q7
CiB9CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBJ
bnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CkBAIC0zMjk3LDcgKzMy
OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgYm90aCBhIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgKGdlbmVyYXRlZCkg
YW5kIGEgc2V0dGluZy4gSXQgc2hvdWxkIHBpY2sgb25lLgogICAgIHNldHRpbmdzLnNldEludGVy
YWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9pZ25v
cmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cyA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6aWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHNLZXkoKSk7
CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q2FuSWdub3JlU2NhbGluZ0NvbnN0cmFp
bnRzKG1faWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMpOwogICAgIHNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgfHwgc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZUtl
eSgpKSk7CkBAIC0zMzQ4LDcgKzMzNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXll
clRyZWUoUmVtb3RlCiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRNaW5TdGFibGVMYXlvdXRWaWV3
cG9ydE9yaWdpbihmcmFtZVZpZXctPm1pblN0YWJsZUxheW91dFZpZXdwb3J0T3JpZ2luKCkpOwog
ICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0TWF4U3RhYmxlTGF5b3V0Vmlld3BvcnRPcmlnaW4oZnJh
bWVWaWV3LT5tYXhTdGFibGVMYXlvdXRWaWV3cG9ydE9yaWdpbigpKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0
U2NhbGVXYXNTZXRCeVVJUHJvY2VzcyhzY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkpOwogICAgIGxh
eWVyVHJhbnNhY3Rpb24uc2V0TWluaW11bVNjYWxlRmFjdG9yKG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLm1pbmltdW1TY2FsZSgpKTsKICAgICBsYXllclRyYW5zYWN0aW9uLnNldE1heGltdW1TY2Fs
ZUZhY3RvcihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSk7CkBAIC0zMzc5
LDcgKzMzNzksNyBAQCB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlCiAK
IHZvaWQgV2ViUGFnZTo6ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUoTW9ub3RvbmljVGltZSB0aW1l
c3RhbXApCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKG1fb2xkZXN0Tm9uU3RhYmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1RpbWVzdGFt
cCAhPSBNb25vdG9uaWNUaW1lKCkpIHsKICAgICAgICAgU2Vjb25kcyBlbGFwc2VkID0gdGltZXN0
YW1wIC0gbV9vbGRlc3ROb25TdGFibGVVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzVGltZXN0YW1w
OwogICAgICAgICBtX29sZGVzdE5vblN0YWJsZVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNUaW1l
c3RhbXAgPSBNb25vdG9uaWNUaW1lKCk7CkBAIC0zNDI5LDcgKzM0MjksNyBAQCB2b2lkIFdlYlBh
Z2U6Omluc3BlY3RvckZyb250ZW5kQ291bnRDaGFuCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDaGFuZ2VJbnNwZWN0b3JGcm9udGVuZENvdW50KGNvdW50KSk7CiB9CiAKLSNp
ZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBXZWJQYWdlOjpwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKQEAg
LTM0NTQsNyArMzQ1NCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRD
aGEKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHZvaWQgV2ViUGFnZTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJv
b2wgYWxsb3dzKQogewogICAgIG1fcGFnZS0+c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKGFsbG93cyk7CkBAIC0zNzczLDcgKzM3NzMsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYW5n
ZVNlbGVjdGVkSW5kZXgoaW50MzJfCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENoYW5nZVNl
bGVjdGVkSW5kZXgoaW5kZXgpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0
aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25EYXRh
KQogewogICAgIGlmICghbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKQEAgLTM4MzMs
NyArMzgzMyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QoKQogewogfQpAQCAtMzg3Miw3ICszODcyLDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYgogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2U6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZy
YW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CkBAIC0zOTYzLDcgKzM5NjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dChGCiAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpj
bGVhclNlbGVjdGlvbigpCiB7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwpAQCAtNDAzMSw3ICs0MDMxLDcgQEAg
dm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci0+bWFpbkZyYW1lRGlkTGF5b3V0KCk7
CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAg
SW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7CiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8
IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgbmV3Q29udGVudFNpemUpOwpAQCAtNTExNiw3ICs1MTE2LDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKAogICAgIGlmICghbV9hc3Npc3RlZE5vZGUpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgfHwgbV9hc3Npc3Rl
ZE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZS0+Y29yZUZyYW1lKCkpIHsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTdG9wQXNzaXN0aW5nTm9kZSgpKTsKICNlbGlmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRFZGl0YWJsZUVs
ZW1lbnRJc0ZvY3VzZWQoZmFsc2UpKTsKQEAgLTUxMzQsNyArNTEzNCw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok4KICAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBu
b2RlOwogICAgICAgICBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uIHw9IG1f
dXNlcklzSW50ZXJhY3Rpbmc7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgaWYgKG5vZGUt
PmRvY3VtZW50KCkud2Via2l0SXNGdWxsU2NyZWVuKCkpCkBAIC01MTY2LDcgKzUxNjYsNyBAQCB2
b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRCbHVyKFdlYkNvcmU6Ok5vCiAgICAgICAgIFJlZlB0cjxX
ZWJQYWdlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5k
aW5nQmx1ck5vdGlmaWNhdGlvbikgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7CiAjZWxpZiBQTEFURk9STShNQUMp
CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZmFsc2UpKTsKQEAgLTUzNTAsNyArNTM1
MCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQKIAogdm9pZCBX
ZWJQYWdlOjp3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmIGZyYW1l
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MzYwLDcgKzUz
NjAsNyBAQCB2b2lkIFdlYlBhZ2U6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVuCiAKIHZvaWQg
V2ViUGFnZTo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmIGZyYW1l
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MzcyLDcgKzUz
NzIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50CiAKIHZvaWQg
V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZnJhbWUtPnNldEZpcnN0TGF5ZXJU
cmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZChkb3duY2FzdDxSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYT4oKm1fZHJhd2luZ0FyZWEpLm5leHRUcmFuc2FjdGlvbklEKCkpOwogICAg
IGNhbmNlbFBvdGVudGlhbFRhcEluRnJhbWUoKmZyYW1lKTsKICNlbmRpZgpAQCAtNTQwNCw3ICs1
NDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcgogICAgICAg
ICBpZiAocGFnZSAmJiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICAgICAg
c2NhbGVQYWdlKDEsIEludFBvaW50KCkpOwogICAgIH0KLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2hhc1JlY2VpdmVkVmlzaWJsZUNvbnRlbnRSZWN0
c0FmdGVyRGlkQ29tbWl0TG9hZCA9IGZhbHNlOwogICAgIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2Vz
cyA9IGZhbHNlOwogICAgIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogI2luY2x1ZGUgIldlYlByaW50T3Bl
cmF0aW9uR3RrLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnRIYXNoLmg+CkBAIC0zMDAsMTMg
KzMwMCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3BlY3RvckZyb250ZW5kQ291bnRDaGFu
Z2VkKHVuc2lnbmVkKTsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
ICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKTsKICAg
ICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAgICAg
dm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldEFsbG93c01l
ZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sKTsKICAgICBib29sIGFsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrOyB9CiAjZW5kaWYKQEAgLTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB3aW5kb3dJc0ZvY3VzZWQoKSBjb25zdDsKICAgICBib29sIHdpbmRvd0FuZFdlYlBh
Z2VBcmVGb2N1c2VkKCkgY29uc3Q7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKik7
CiAgICAgUGFnZUJhbm5lciogaGVhZGVyUGFnZUJhbm5lcigpOwogICAgIHZvaWQgc2V0Rm9vdGVy
UGFnZUJhbm5lcihQYWdlQmFubmVyKik7CkBAIC01NDYsNyArNTQ2LDcgQEAgcHVibGljOgogICAg
IFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5k
aWYKQEAgLTU2MSw3ICs1NjEsNyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXImIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyBy
ZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsgfQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIHNhdmVQYWdlU3RhdGUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKICAgICB2b2lkIHJlc3Rv
cmVQYWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKICNlbmRpZgpAQCAtNTgw
LDcgKzU4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwogICAgIHZvaWQgZXhlY3V0ZUVk
aXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgYXJndW1l
bnQsIENhbGxiYWNrSUQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdDsKQEAgLTY2OCw3ICs2Njgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sKTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAg
ICB2b2lkIGRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRv
dWNoRXZlbnQsIDE+JiBxdWV1ZSk7CiAjZW5kaWYKIApAQCAtODI1LDcgKzgyNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11
dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxi
YWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERjo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCiAKQEAgLTg5NCw3ICs4OTQsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRl
ID0gZmFsc2UpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBkb3VibGUgc2NhbGVGYWN0b3IpOwogICAgIHZvaWQgc2V0TWF4
aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQg
c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CkBAIC0xMTIzLDcgKzExMjMsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJl
c2V0Vmlld3BvcnREZWZhdWx0Q29uZmlndXJhdGlvbihXZWJGcmFtZSogbWFpbkZyYW1lLCBib29s
IGhhc01vYmlsZURvY1R5cGUgPSBmYWxzZSk7CiAgICAgZW51bSBjbGFzcyBab29tVG9Jbml0aWFs
U2NhbGUgeyBObywgWWVzIH07CiAgICAgdm9pZCB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2Vk
KFpvb21Ub0luaXRpYWxTY2FsZSA9IFpvb21Ub0luaXRpYWxTY2FsZTo6Tm8pOwpAQCAtMTE0MSw3
ICsxMTQxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9y
R3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERBVEFfSU5URVJB
Q1RJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCiAgICAgdm9pZCByZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24pOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKTsKICNlbmRpZgpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzA1LDcgKzEzMDUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9v
c2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBpY29uRGF0YSk7CiAjZW5kaWYKIApAQCAtMTM4OCw3ICsxMzg4LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wg
ZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRj
aDsgfQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQodWludDY0X3QsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNv
bnN0OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UodWludDY0
X3QsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0
X3QsIGJvb2wpOwpAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWx3
YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNT
aG93c1ZlcnRpY2FsU2Nyb2xsZXIgeyBmYWxzZSB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2lnbm9yZVZpZXdwb3J0U2NhbGluZ0Nv
bnN0cmFpbnRzIHsgZmFsc2UgfTsKICNlbmRpZgogCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCBwcml2
YXRlOgogICAgIHVpbnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlZlB0
cjxQYWdlQmFubmVyPiBtX2hlYWRlckJhbm5lcjsKICAgICBSZWZQdHI8UGFnZUJhbm5lcj4gbV9m
b290ZXJCYW5uZXI7CiAjZW5kaWYKQEAgLTE1NTAsMTIgKzE1NTAsMTIgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAgICAgUmVmUHRyPFJlbW90
ZVdlYkluc3BlY3RvclVJPiBtX3JlbW90ZUluc3BlY3RvclVJOwogCi0jaWYgKFBMQVRGT1JNKElP
UykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQp
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
ICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZh
bHNlIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX3N0YXJ0aW5nR2VzdHVyZVJhbmdl
OwogI2VuZGlmCkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNQ
ZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdF
ZGl0b3JTdGF0ZVVwZGF0ZSB7IGZhbHNlIH07CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1cnJl
bnRXb3JkUmFuZ2U7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1faW50ZXJhY3Rpb25Ob2Rl
OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdEludGVyYWN0aW9uTG9jYXRpb247CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRXhlY3V0ZUVkaXRD
b21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEtleUV2ZW50KFdlYktpdDo6V2ViS2V5Ym9hcmRF
dmVudCBldmVudCkKICAgICBNb3VzZUV2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZXRWaWV3
cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwg
ZG91YmxlIHNjYWxlRmFjdG9yKQogICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3Jl
OjpGbG9hdFNpemUgc2l6ZSkKICAgICBTZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmlj
ZU9yaWVudGF0aW9uKQpAQCAtMjkxLDcgKzI5MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICAjIE9wZW4gcGFuZWwuCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMsIFN0
cmluZyBkaXNwbGF5U3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgaWNvbkRhdGEpCiAjZW5kaWYK
ICAgICBEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChWZWN0b3I8U3RyaW5nPiBmaWxlVVJMcykK
QEAgLTM1MSw3ICszNTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BE
Rih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgRGVs
YXllZAogI2VuZGlmCiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChT
dHJpbmcgcmVzdWx0KQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXaWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOwogI2VuZGlm
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKIAogICAgIFNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIHNob3Vs
ZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUGxheWJhY2tUYXJnZXRT
ZWxlY3RlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0IHRhcmdldCkKICAgICBQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZSh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQogICAgIFNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGRQbGF5KQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxh
dGZvcm1DQUwKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiAgICAgY2Fz
ZSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M6CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1By
b2Nlc3MoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgaWYgKGxheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyKSB7CiAgICAgICAg
ICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGNvbnRleHQuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICAgICAgICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29udmVydFJlY3Q6
dG9MYXllcjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRhcjovL3Byb2Js
ZW0vMTgzMTY1NDI+LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNCArODksMTQgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lKSBvdmVycmlkZTsKICAgICB2b2lk
IGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIGNvbnN0IFN0cmlu
ZyYga2V5KSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRVcGRhdGUoKSBv
dmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
UmVtb3RlTGF5ZXJUCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywgJlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKICAgICB3ZWJQYWdlLmNvcmVQYWdlKCkt
PnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5z
ZXR0aW5ncygpLnNldERlbGVnYXRlc1BhZ2VTY2FsaW5nKHRydWUpOwogI2VuZGlmCiAgICAgbV9y
b290TGF5ZXItPnNldE5hbWUoImRyYXdpbmcgYXJlYSByb290Iik7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUAogICAgIERlYnVnUGFn
ZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3JlUGFnZSgpKTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCiB7CiAgICAgbV93ZWJQYWdlLnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNj
YWxlRmFjdG9yKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpzZXRWaWV3CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBXZWJDb3JlOjpGbG9h
dFJlY3QgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmV4cG9zZWRDb250ZW50UmVjdCgpIGNv
bnN0CiB7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmll
dygpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnVwZGF0ZVMKIAogICAgIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3QgPSBtX3ZpZXdFeHBvc2Vk
UmVjdDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0KSB7CiAgICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxP
ZmZzZXQgPSBmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihmcmFtZVZpZXctPnNj
cm9sbFBvc2l0aW9uKCkpOwogICAgICAgICBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0LnZhbHVl
KCkubW92ZUJ5KHNjcm9sbE9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9y
dCA8Y29uZmlnLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2ltcG9ydCAiRmluZENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50SU9TLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUGFn
ZS5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlJT1MuaCIKICNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmgiCkBAIC0zMTIwLDQgKzMxMjAsNCBAQCB2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1NlbmRV
c2VyTWVkaWFQZXJtCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVk
ZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCkBAIC0xNzAsNSArMTcw
LDUgQEAgcHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19EUkFXSU5HX0FSRUEoVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEsIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1h
dGlvbikKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oIgpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGEKIAogICAgIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJl
Y3QgPSBtX3ZpZXdFeHBvc2VkUmVjdDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0KSB7CiAgICAgICAgIFNj
cm9sbE9mZnNldCBzY3JvbGxPZmZzZXQgPSBmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZyb21Qb3Np
dGlvbihmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICBtX3Njcm9sbGVkVmll
d0V4cG9zZWRSZWN0LnZhbHVlKCkubW92ZUJ5KHNjcm9sbE9mZnNldCk7CkBAIC04ODgsNCArODg4
LDQgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcAogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgV2ViUGFnZTo6ZGF0YURldGVjdG9yc0RpZEhp
ZGVVSShQYWcKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNl
bGVjdGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXRD
b250ZXh0LnR5cGUoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KQEAgLTE3MSw0ICsx
NzEsNCBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKIG1lc3NhZ2VzIC0+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgewogICAgIFBsYXko
dWludDY0X3QgY29udGV4dElkKQogICAgIFBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmgiCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAog
I2ltcG9ydCAiQXR0YWNobWVudC5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlck1l
c3NhZ2VzLmgiCkBAIC01MTUsNCArNTE1LDQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRQbGF5aW5nTwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CkBAIC0xNjIsNSArMTYyLDUg
QEAgcHJvdGVjdGVkOgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyNpZiAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyIHsKICAgICBSZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlk
ZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKICAgICBSZXF1ZXN0VXBk
YXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogCi0j
aWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQogCiAjaW1wb3J0ICJBdHRhY2htZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1v
dmVDbGllbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjphdktpdEVuYWJsZWQoKTsKICNlbHNlCkBAIC0yMzMsNyArMjMzLDcgQEAgYm9v
bCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZAogCiBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRy
dWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50
ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdl
KQogICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnBhZ2VJRCgpKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwg
aW50ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhp
cy0+bV9wYWdlLT5wYWdlSUQoKSk7CkBAIC01ODUsNCArNTg1LDQgQEAgICAgIGlmIChhdXRvKiBj
b250ZXh0ID0gaW50ZXJmYWNlLT5sYXllcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxOCArNzIsMTggQEAKICNpbXBvcnQg
PHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MuaCIKICNpbXBvcnQgPFVJS2l0L1VJQWNjZXNzaWJp
bGl0eS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oPgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQg
PEFYUnVudGltZS9BWERlZmluZXMuaD4KICNpbXBvcnQgPEFYUnVudGltZS9BWE5vdGlmaWNhdGlv
bkNvbnN0YW50cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogI2RlZmluZSBrQVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uIDAKICNl
bmRpZgogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0ZW5zaW9uSGFu
ZGxlKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNp
b246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByCiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENo
aWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICph
cHBsaWNhdGlvbk5hbWU7CiAgICAgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuZ2V0KCJpbnNwZWN0b3ItcHJvY2VzcyJfcykgPT0gIjEiKQogICAgICAgICBhcHBsaWNhdGlv
bk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIg
SW5zcGVjdG9yIiwgIlZpc2libGUgbmFtZSBvZiBXZWIgSW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3Mu
IFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFy
YW1ldGVycy51aVByb2Nlc3NOYW1lXTsKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9pZCBy
ZWdpc3RlcldpdGhBY2Nlc3NpYmlsaXR5KCkKICNpZiBVU0UoQVBQS0lUKQogICAgIFtOU0FjY2Vz
c2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgc2V0UmVtb3RlVUlBcHA6WUVTXTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICph
Y2Nlc3NpYmlsaXR5QnVuZGxlUGF0aCA9IFsoTlNTdHJpbmcgKilHU1N5c3RlbVJvb3REaXJlY3Rv
cnkoKSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi9TeXN0ZW0vTGlicmFyeS9BY2Nlc3NpYmls
aXR5QnVuZGxlcy9XZWJQcm9jZXNzTG9hZGVyLmF4YnVuZGxlIl07CiAgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CiAgICAgaWYgKCFbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOmFjY2Vzc2liaWxp
dHlCdW5kbGVQYXRoXSBsb2FkQW5kUmV0dXJuRXJyb3I6JmVycm9yXSkKQEAgLTM2Nyw3ICszNjcs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogUmV0YWluUHRyPENG
RGF0YVJlZj4gV2ViUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAog
ewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1ZGl0
X3Rva2VuX3QgYXVkaXRUb2tlbjsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KSk7CiAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpIHx8ICFwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKGF1ZGl0VG9rZW4pKQpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QKICNlbHNlCiAgICAg
TlNCdW5kbGUgKndlYktpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFz
c0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpICYmICFQ
TEFURk9STShJT1NNQUMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElP
U01BQykKICAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0
aChbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQiIG9mVHlwZTpAInNiIl0pOwogI2Vsc2UKICAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRP
dmVycmlkZVNhbmRib3hQcm9maWxlUGF0aChbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6
QCJjb20uYXBwbGUuV2ViUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7CkBAIC01OTQsNyArNTk0LDcg
QEAgdm9pZCBfV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaQogICAgIHJldHVybiBz
ZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaW5mb1N0cmluZyk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0eVByb2Nlc3NTdXNw
ZW5kZWROb3RpZmljYXRpb24oYm9vbCBzdXNwZW5kZWQpCiB7CiAgICAgVUlBY2Nlc3NpYmlsaXR5
UG9zdE5vdGlmaWNhdGlvbihrQVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBAeyBAInBp
ZCIgOiBAKGdldHBpZCgpKSwgQCJzdXNwZW5kZWQiIDogQChzdXNwZW5kZWQpIH0pOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJhcnkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJhcnku
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1MaWJyYXJ5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlNlY0l0ZW1TaGltTGlicmFy
eS5oIgogCkBAIC03MCw0ICs3MCw0IEBAIHZvaWQgV2ViS2l0U2VjSXRlbVNoaW1Jbml0aWFsaXpl
KGNvbnN0IFMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0o
SU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKwogMjAxOC0xMC0xMSAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1VSUkVOVF9BUkNIIHNob3VsZCBub3QgYmUgdXNl
ZCBpbiBSdW4gU2NyaXB0IHBoYXNlLgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgPHBhbC9zcGkvaW9zL1NRTGl0ZTNTUEkuaD4KICNlbmRpZgogCkBAIC0zODgs
NyArMzg4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAg
fSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0
YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkK
IHsKICAgICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCksIDAs
IFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7CkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2luCiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJlYWQgaW4gYWxsIG9yaWdpbnMgZnJvbSB0aGUgZGF0YWJhc2UuIik7CiAKICAg
ICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICB0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNl
KTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIUZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewogICAgICAgICAvLyBJbiB0
aGUgY2FzZSB3aGVyZSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVsZXRlIHRoZSBkYXRhYmFzZSBm
aWxlIChlLmcgc29tZSBvdGhlciBwcm9ncmFtCiAgICAgICAgIC8vIGxpa2UgYSB2aXJ1cyBzY2Fu
bmVyIGlzIGFjY2Vzc2luZyBpdCksIG1ha2Ugc3VyZSB0byByZW1vdmUgYWxsIGVudHJpZXMuCkBA
IC01NDMsMTEgKzU0MywxMSBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2lu
KGNvCiAgICAgfQogCiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB0cnVuY2F0ZURh
dGFiYXNlRmlsZShtX2RhdGFiYXNlKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3Nl
KCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwogICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRo
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24g
MjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMyArNDAsMTMgQEAKICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIC8vIE1hdGNo
IHRoZSBwYXJhbGxlbCBjb25uZWN0aW9uIGNvdW50IHVzZWQgYnkgdGhlIG5ldHdvcmtpbmcgbGF5
ZXIuCiBzdGF0aWMgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhSZXF1ZXN0c0luRmxpZ2h0Rm9yTm9uSFRUUFByb3RvY29scyA9IDIwOwogI2Vsc2UK
IC8vIExpbWl0aW5nIHRoaXMgc2VlbXMgdG8gcmVncmVzcyBwZXJmb3JtYW5jZSBpbiBzb21lIGxv
Y2FsIGNhc2VzIHNvIGxldCdzIGp1c3QgbWFrZSBpdCBsYXJnZS4KQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdQogICAgIFN1YnJlc291cmNl
TG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25z
LCBbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpIG11dGFibGUgewog
ICAgICAgICBpZiAobG9hZGVyKQogICAgICAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQo
KSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IC8vIFNpbmNlIHdlIGRlZmVyIGxvYWRlciBpbml0aWFsaXphdGlvbiB1bnRpbCBzY2hlZHVsaW5n
IG9uIGlPUywgdGhlIGZyYW1lCiAgICAgICAgIC8vIGxvYWQgZGVsZWdhdGUgdGhhdCB3b3VsZCBi
ZSBjYWxsZWQgaW4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgpIG9uCiAgICAgICAgIC8vIG90
aGVyIHBvcnRzIG1pZ2h0IGJlIGNhbGxlZCBpbiBzY2hlZHVsZUxvYWQoKSBpbnN0ZWFkLiBPdXIg
Y29udHJhY3QgdG8KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVMCiB7CiAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyKTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIElmIHRoZXJlJ3Mg
YSB3ZWIgYXJjaGl2ZSByZXNvdXJjZSBmb3IgdGhpcyBVUkwsIHdlIGRvbid0IG5lZWQgdG8gc2No
ZWR1bGUgdGhlIGxvYWQgc2luY2UgaXQgd2lsbCBuZXZlciB0b3VjaCB0aGUgbmV0d29yay4KICAg
ICBpZiAoIWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpICYmIHJlc291cmNlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5hcmNoaXZlUmVzb3VyY2VGb3JVUkwocmVzb3VyY2VMb2FkZXItPmlP
U09yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICByZXNvdXJjZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKCk7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNjaGVkdWxlTAogICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0ID0gaG9zdEZv
clVSTChyZXNvdXJjZUxvYWRlci0+aU9TT3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIENyZWF0ZUlm
Tm90Rm91bmQpOwogI2Vsc2UKICAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3QgPSBob3N0Rm9yVVJM
KHJlc291cmNlTG9hZGVyLT51cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCk7CkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAogICAgIH0KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKChwcmlvcml0eSA+IFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cgfHwgIXJlc291cmNlTG9h
ZGVyLT5pT1NPcmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
fHwgKHByaW9yaXR5ID09IFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cgJiYgIWhhZFJlcXVlc3Rz
KSkgJiYgIWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpKSB7CiAgICAgICAgIC8vIFRyeSB0
byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkuCiAgICAgICAgIHNlcnZl
UGVuZGluZ1JlcXVlc3RzKGhvc3QsIHByaW9yaXR5KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlCiAgICAgSG9zdEluZm9ybWF0aW9u
KiBob3N0ID0gaG9zdEZvclVSTChyZXNvdXJjZUxvYWRlci0+dXJsKCkpOwogICAgIGlmIChob3N0
KQogICAgICAgICBob3N0LT5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJlc291cmNlTG9hZGVyOjp1cmwo
KSBkb2Vzbid0IHN0YXJ0IHJldHVybmluZyB0aGUgY29ycmVjdCB2YWx1ZSB1bnRpbCB0aGUgbG9h
ZCBzdGFydHMuIElmIHdlIGdldCBjYW5jZWxlZCBiZWZvcmUgdGhhdCwgd2UgbmVlZCB0byBsb29r
IGZvciBvcmlnaW5hbFJlcXVlc3QgdXJsIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IFJlc291cmNl
TG9hZGVyOjp1cmwoKSBzaG91bGQgYmUgbWFkZSB0byByZXR1cm4gYSBzZW5zaWJsZSB2YWx1ZSBh
dCBhbGwgdGltZXMuCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlci0+aU9TT3JpZ2luYWxSZXF1ZXN0
KCkuaXNOdWxsKCkpIHsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2VydmVQZW5kCiAKICAgICAgICAgICAgIHJlcXVlc3RzUGVuZGluZy5yZW1vdmVG
aXJzdCgpOwogICAgICAgICAgICAgaG9zdC0+YWRkTG9hZEluUHJvZ3Jlc3MocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpIHsKICAgICAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUubToKKyAgICAg
ICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZS5tOgorICAg
ICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLm06
CisgICAgICAgICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5tOgor
ICAgICAgICAqIE1pc2MvTWVtb3J5TWVhc3VyZS5tbToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICogTWlzYy9XZWJHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAqIE1pc2MvV2ViTlNTdHJpbmdFeHRyYXNJT1Mu
bToKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToKKyAgICAgICAgKFdlYktpdFBs
YXRmb3JtU3lzdGVtUm9vdERpcmVjdG9yeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9w
dXBNZW51SU9TLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlP
Uy5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5
Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblJlY3QubToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZVZpZXdXQUtDb21wYXRpYmlsaXR5Lm06CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtp
ICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW0pTQ10gUmVuYW1lIGNy
ZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdEZvcm1EZWxl
Z2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGb3JtRGVsZWdh
dGUubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5oIgogCkBAIC02
Miw3ICs2Miw3IEBAIC0gKEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICoKICAg
ICByZXR1cm4gWUVTOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVu
dCBzaG91bGRIYW5kbGVFdmVudDooTlNFdmVudCAqKWV2ZW50IGluRnJhbWU6KFdlYkZyYW1lICop
ZnJhbWUKIHsKICAgICByZXR1cm4gWUVTOwpAQCAtODAsNCArODAsNCBAQCAtICh2b2lkKXdpbGxT
ZW5kU3VibWl0RXZlbnRUb0Zvcm06KERPTUhUCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUu
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVz
L1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRGcmFtZUxvYWRE
ZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUu
aCIKIApAQCAtMTU3LDQgKzE1Nyw0IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRMYXkKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9EZWZhdWx0
RGVsZWdhdGVzL1dlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291
cmNlTG9hZERlbGVnYXRlLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLm0J
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIldlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogCkBA
IC0xMDIsNCArMTAyLDQgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKXdlYlZpZXc6KFdlYlZp
ZQogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJS2l0RGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSUtpdERlbGVnYXRlLm0JKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJS2l0RGVsZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRGVmYXVs
dFVJS2l0RGVsZWdhdGUuaCIKIApAQCAtMjkxLDQgKzI5MSw0IEBAIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXdlYlZpZXcgYWRkTWUKIH0KIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9NZW1vcnlNZWFzdXJlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL01pc2MvTWVtb3J5TWVhc3VyZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9NZW1vcnlNZWFzdXJlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiTWVtb3J5TWVhc3VyZS5oIgogCkBAIC04Miw0ICs4Miw0IEBAIE1lbW9yeU1lYXN1
cmU6On5NZW1vcnlNZWFzdXJlKCkKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blByb3ZpZGVyLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyLmgiCiAKQEAgLTIwMiw0ICsyMDIsNCBAQCAtICh2b2lkKXNl
dEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5o
IgogCkBAIC0zNzEsNCArMzcxLDQgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiB9CiBAZW5k
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViTlNTdHJpbmdFeHRyYXNJ
T1MubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYk5TU3Ry
aW5nRXh0cmFzSU9TLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViTlNTdHJpbmdFeHRyYXNJT1MubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViTlNT
dHJpbmdFeHRyYXNJT1MuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCkBAIC0yMTIsNSAr
MjEyLDUgQEAgLSAoTlNVUkwgKilfd2ViX2Jlc3RVUkxGb3JVc2VyVHlwZWRTdHJpbgogCiBAZW5k
CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1
cHBvcnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViVUlLaXRTdXBwb3J0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJVSUtpdFN1cHBvcnQu
aCIKIApAQCAtMTAzLDcgKzEwMyw3IEBAIGludCBXZWJLaXRHZXRMYXN0TGluZUJyZWFrSW5CdWZm
ZXIoVUNoYXIKIAogY29uc3QgY2hhciAqV2ViS2l0UGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5
KHZvaWQpCiB7Ci0jaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZX1NJTVVMQVRPUikKICAgICBzdGF0aWMgY29uc3QgY2hhciAqcGxhdGZvcm1TeXN0ZW1S
b290RGlyZWN0b3J5ID0gbmlsOwogICAgIGlmICghcGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5
KSB7CiAgICAgICAgIGNoYXIgKnNpbXVsYXRvclJvb3QgPSBnZXRlbnYoIklQSE9ORV9TSU1VTEFU
T1JfUk9PVCIpOwpAQCAtMTU0LDQgKzE1NCw0IEBAIENHUGF0aFJlZiBXZWJLaXRDcmVhdGVQYXRo
V2l0aFNocmlua1dyYXAKICAgICByZXR1cm4gQ0dQYXRoUmV0YWluKFBhdGhVdGlsaXRpZXM6OnBh
dGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHJlY3RzLCByYWRpdXMpLnBsYXRmb3JtUGF0aCgpKTsK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvUG9wdXBN
ZW51SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1BvcHVwTWVudUlPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51SU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgIlBvcHVwTWVudUlPUy5oIgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC01MSw0ICs1MSw0IEBAIHZvaWQgUG9wdXBNZW51SU9TOjpkaXNjb25uZWN0
Q2xpZW50KCkKICAgICBtX3BvcHVwQ2xpZW50ID0gMDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVJT1MuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsNCArNDgsNCBAQCBib29sIFNlYXJjaFBvcHVwTWVudUlP
Uzo6ZW5hYmxlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2Vi
Q2hyb21lQ2xpZW50LmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1w
b3J0ICJXZWJDaHJvbWVDbGllbnRJT1MuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQg
IlBvcHVwTWVudUlPUy5oIgpAQCAtMzk1LDQgKzM5NSw0IEBAIGludCBXZWJDaHJvbWVDbGllbnRJ
T1M6OmRldmljZU9yaWVudGF0aW8KIH0KICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBv
c2l0aW9uQ29udGVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIldlYkZpeGVkUG9zaXRpb25Db250ZW50LmgiCiAjaW1wb3J0ICJXZWJGaXhlZFBv
c2l0aW9uQ29udGVudEludGVybmFsLmgiCkBAIC0xOTUsNCArMTk1LDQgQEAgLSAoQk9PTCloYXNG
aXhlZE9yU3RpY2t5UG9zaXRpb25MYXllcnMKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkZyYW1lSU9TLmgiCiAKQEAgLTk1
MCw0ICs5NTAsNCBAQCAtIChDR1JlY3QpZWxlbWVudFJlY3RBdFBvaW50OihDR1BvaW50KXBvCiAK
IEBlbmQKIAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2Vi
R2VvbG9jYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgpA
QCAtNjIsNCArNjIsNCBAQCAtICh2b2lkKWRlYWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50
LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yLmgiCkBAIC0x
MzQsNCArMTM0LDQgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlVwog
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBib29sLCBib29sKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KIAotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViTUlNRVR5cGVSZWdpc3RyeS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJXZWJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKQEAgLTU1LDQgKzU1LDQgQEAgKyAo
Qk9PTClpc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGU6KE5TU3RyaQogCiBAZW5kCiAKLSNlbmRpZiAg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmICAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uUmVjdC5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblJlY3QubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uUmVjdC5tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0
ICJXZWJTZWxlY3Rpb25SZWN0LmgiCiAKQEAgLTIwMSw0ICsyMDEsNCBAQCAtIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uCiAKIEBlbmQKIAotI2VuZGlmICAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlZpc2libGVQb3Np
dGlvbi5oIgogI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uSW50ZXJuYWwuaCIKQEAgLTYyMiw0
ICs2MjIsNCBAQCAtIChXZWJWaXNpYmxlUG9zaXRpb24gKillbmRQb3NpdGlvbgogCiBAZW5kCiAK
LSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViRnJhbWVWaWV3V0FLQ29t
cGF0aWJpbGl0eS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZp
ZXcvV2ViRnJhbWVWaWV3V0FLQ29tcGF0aWJpbGl0eS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYkZyYW1lVmlld1dBS0NvbXBhdGliaWxp
dHkubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRnJhbWVWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYlZpZXdQcml2YXRlLmgiCkBAIC0zOSw0ICszOSw0IEBAIC0gKHZvaWQpZnJhbWVTaXplQ2hh
bmdlZAogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2Vi
UERGVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2Vi
UERGVmlld0lPUy5oIgogI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgiCkBAIC0zOTYs
NCArMzk2LDQgQEAgc3RhdGljIGludCBjb21wYXJlUGFnZVJlY3RzKGNvbnN0IHZvaWQgKgogICAg
IHJldHVybiBDR1JlY3RHZXRNaW5ZKCprZXlSZWN0KSA+IENHUmVjdEdldE1heFkoKmFycmF5UmVj
dCkgPyAxIDogLTE7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcv
V2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViUERGVmlld1BsYWNlaG9sZGVyLmgiCiAKQEAgLTQ3
Niw0ICs0NzYsNCBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgCiAK
IEBlbmQKIAotI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBQTEFURk9STShJ
T1NfRkFNSUxZKSAqLwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
bGFpbldoaXRlVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb2N1
bWVudEludGVybmFsLmg+CiAKIEBjbGFzcyBXZWJEYXRhU291cmNlOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBs
YWluV2hpdGVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBv
cnQgIldlYlBsYWluV2hpdGVWaWV3LmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTgxLDQgKzgxLDQgQEAgLSAoTlNEaWN0aW9uYXJ5
ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbgogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3OCBAQAorMjAxOC0xMC0xOCAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggZnJv
bSBQTEFURk9STShJT1MpIHRvIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgICgt
W0RPTU5vZGUgYm91bmRpbmdCb3hdKToKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTC5tbToKKyAgICAgICAgKiBET00vRE9NSW50ZXJuYWwubW06Cisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKiBET00vV2ViRE9N
T3BlcmF0aW9ucy5tbToKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250
ZXh0TWVudURlbGVnYXRlLm1tOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dEVkaXRpbmdEZWxlZ2F0ZS5tOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dFBvbGljeURlbGVnYXRlLm06CisgICAgICAgICgtW1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cmVxdWVzdDpmcmFtZTpkZWNp
c2lvbkxpc3RlbmVyOl0pOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJ
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVn
YXRlLm1tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSB3ZWJWaWV3Q2xvc2U6XSk6
CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXdGb2N1czpdKToKKyAgICAg
ICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlld1VuZm9jdXM6XSk6CisgICAgICAgICgt
W1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXdJc1Jlc2l6YWJsZTpdKToKKyAgICAgICAgKC1b
V2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpzZXRSZXNpemFibGU6XSk6CisgICAgICAgICgt
W1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6c2V0RnJhbWU6XSk6CisgICAgICAgICgtW1dl
YkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0
aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3Rv
cnkvQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
bW06CisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgICgr
W1dlYkJhY2tGb3J3YXJkTGlzdCBpbml0aWFsaXplXSk6CisgICAgICAgIChidW1wZXJDYXJCYWNr
Rm9yd2FyZEhhY2tOZWVkZWQpOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAg
ICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkSXRlbTpkaXNjYXJkRHVwbGljYXRlOl0pOgor
ICAgICAgICAoLVtXZWJIaXN0b3J5IF9zZW5kTm90aWZpY2F0aW9uOmVudHJpZXM6XSk6CisgICAg
ICAgICgtW1dlYkhpc3RvcnkgbG9hZEZyb21VUkw6ZXJyb3I6XSk6CisgICAgICAgICgtW1dlYkhp
c3Rvcnkgc2F2ZVRvVVJMOmVycm9yOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW06CisgICAgICAgIChXS05vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCk6CisgICAgICAgICgr
W1dlYkhpc3RvcnlJdGVtIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0g
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogSGlzdG9yeS9X
ZWJVUkxzV2l0aFRpdGxlcy5tOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAg
ICgrW1dlYkNhY2hlIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1t
OgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBNaXNjL1dlYkVsZW1lbnREaWN0aW9u
YXJ5Lm1tOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0aWFsaXplXSk6Cisg
ICAgICAgICgrW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGluaXRpYWxpemVMb29rdXBUYWJsZV0pOgor
ICAgICAgICAqIE1pc2MvV2ViSWNvbkRhdGFiYXNlLm1tOgorICAgICAgICAqIE1pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgrW05TU3RyaW5nIF93ZWJraXRfbG9jYWxDYWNo
ZURpcmVjdG9yeVdpdGhCdW5kbGVJZGVudGlmaWVyOl0pOgorICAgICAgICAqIE1pc2MvV2ViS2l0
VmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIE1pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5tbToK
KyAgICAgICAgKFdlYktpdExpbmtlZE9uT3JBZnRlcik6CisgICAgICAgIChXZWJLaXRMaW5rVGlt
ZVZlcnNpb24pOgorICAgICAgICAqIE1pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tOgorICAg
ICAgICAqIE1pc2MvV2ViTlNDb250cm9sRXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU0Nv
bnRyb2xFeHRyYXMubToKKyAgICAgICAgKiBNaXNjL1dlYk5TRXZlbnRFeHRyYXMubToKKyAgICAg
ICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06CisgICAgICAgICogTWlzYy9XZWJO
U0ltYWdlRXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU0ltYWdlRXh0cmFzLm06CisgICAg
ICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICogTWlzYy9XZWJO
U1ByaW50T3BlcmF0aW9uRXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU1ByaW50T3BlcmF0
aW9uRXh0cmFzLm06CisgICAgICAgICogTWlzYy9XZWJOU1ZpZXdFeHRyYXMubToKKyAgICAgICAg
KiBNaXNjL1dlYk5TV2luZG93RXh0cmFzLm06CisgICAgICAgICogUGFuZWxzL1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBQYW5lbHMvV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
OgorICAgICAgICAqIFBhbmVscy9XZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5tOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGluaXRpYWxpemVdKToKKyAgICAg
ICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkphdmFQbHVnSW4u
aDoKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFBsdWdpbnMvV2Vi
UGx1Z2luQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVn
SW5WaWV3V2l0aEFyZ3VtZW50czpmcm9tUGx1Z2luUGFja2FnZTpdKToKKyAgICAgICAgKC1bV2Vi
UGx1Z2luQ29udHJvbGxlciBhZGRQbHVnaW46XSk6CisgICAgICAgICgtW1dlYlBsdWdpbkNvbnRy
b2xsZXIgZGVzdHJveVBsdWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBk
ZXN0cm95QWxsUGx1Z2luc10pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2Uu
bW06CisgICAgICAgICgrW1dlYlBsdWdpbkRhdGFiYXNlIF9kZWZhdWx0UGx1Z0luUGF0aHNdKToK
KyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYlBs
dWdpblBhY2thZ2UgaW5pdFdpdGhQYXRoOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJh
c2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlQWxsRGF0
YWJhc2VzXSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDoK
KyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVu
dCk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViU3RvcmFnZU1hbmFnZXIgZGVsZXRlQWxsT3JpZ2luc10pOgorICAgICAgICAoV2ViS2l0SW5p
dGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKGFwcGxpY2F0aW9uQ2FjaGVCdW5kbGVJZGVudGlm
aWVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp3aW5k
b3dSZWN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNocm9tZUNs
aWVudDo6ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlUG9wdXBNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlU2VhcmNoUG9wdXBNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2hv
dWxkUGFpbnRFbnRpcmVDb250ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c3Vw
cG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
bW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoK1tXZWJVbmRv
U3RlcCBpbml0aWFsaXplXSk6CisgICAgICAgICh1cGRhdGVGb250UGFuZWwpOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpkaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
Y2FuY2VsZWRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVk
aXRpbmcpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNp
b24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvT3JSZWRvU3RlcCk6CisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkZXRh
Y2hlZEZyb21QYXJlbnQyKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDYWNoZVJlc3Bv
bnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUp
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlVmlld1N0YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZSk6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2Fj
aGUpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29u
c3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAg
ICAoK1tXZWJGcmFtZVBvbGljeUxpc3RlbmVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbC5tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAo
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OnByb2dyZXNzRmluaXNoZWQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAqIFdlYklu
c3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lmg6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYk5v
ZGVIaWdobGlnaHQubW06CisgICAgICAgICgtW1dlYk5vZGVIaWdobGlnaHQgaW5pdFdpdGhUYXJn
ZXRWaWV3Omluc3BlY3RvckNvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dlYk5vZGVIaWdobGln
aHQgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJOb2RlSGlnaGxpZ2h0IGF0dGFjaF0pOgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5oOgorICAgICAgICAqIFdl
Ykluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhp
Z2hsaWdodFZpZXcgaW5pdFdpdGhXZWJOb2RlSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBkZWFsbG9jXSk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYk5v
ZGVIaWdobGlnaHRlci5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodGVyIGhpZ2hsaWdo
dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKCtbV2ViQXJj
aGl2ZVByaXZhdGUgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViQ2xpcFZpZXcu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJEYXRh
U291cmNlUHJpdmF0ZTo6V2ViRGF0YVNvdXJjZVByaXZhdGUpOgorICAgICAgICAoK1tXZWJEYXRh
U291cmNlIGluaXRpYWxpemVdKToKKyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNB
bGxvd0ltYWdlVHlwZU9taXNzaW9uOl0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtl
UmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGluZy5tbToKKyAgICAgICAgKENhbGxEZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRGVs
ZWdhdGVSZXR1cm5pbmdGbG9hdCk6CisgICAgICAgIChDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29s
ZWFuKToKKyAgICAgICAgKENhbGxVSURlbGVnYXRlKToKKyAgICAgICAgKENhbGxVSURlbGVnYXRl
UmV0dXJuaW5nRmxvYXQpOgorICAgICAgICAoQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFu
KToKKyAgICAgICAgKENhbGxGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRnJhbWVM
b2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKToKKyAgICAgICAgKENhbGxSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZSk6CisgICAgICAgIChD
YWxsRm9ybURlbGVnYXRlKToKKyAgICAgICAgKENhbGxGb3JtRGVsZWdhdGVSZXR1cm5pbmdCb29s
ZWFuKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbiBpbml0V2l0aENhblByb3ZpZGVBbHBoYTphbHBoYTpj
YW5Qcm92aWRlQmV0YTpiZXRhOmNhblByb3ZpZGVHYW1tYTpnYW1tYTpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRvY3VtZW50SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRvY3Vt
ZW50TG9hZGVyTWFjLm1tOgorICAgICAgICAobmVlZHNEYXRhTG9hZFdvcmthcm91bmQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZvcm1EZWxlZ2F0ZS5tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1do
aWxlT2Zmc2NyZWVuXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF91bm1hcmtBbGxNaXNzcGVsbGlu
Z3NdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNv
bnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpjb250ZW50c09ubHk6XSk6
CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0
cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc2Nyb2xsRE9N
UmFuZ2VUb1Zpc2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFja2dyb3VuZENv
bG9yXSk6CisgICAgICAgICgtW1dlYkZyYW1lIGFjY2Vzc2liaWxpdHlSb290XSk6CisgICAgICAg
IChuZWVkc01pY3Jvc29mdE1lc3NlbmdlckRPTURvY3VtZW50V29ya2Fyb3VuZCk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2V0RG9jdW1lbnRWaWV3Ol0pOgor
ICAgICAgICAoK1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246
XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfdmlld0NsYXNzRm9yTUlNRVR5cGU6XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXZWJG
cmFtZVZpZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfZmlyc3RSZXNw
b25kZXJJc0Zvcm1Db250cm9sXSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBrZXlEb3duOmtl
eURvd246XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfaXNTY3JvbGxhYmxlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgaGl0VGVzdDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
aW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZGVhbGxvY10pOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBhZGRTdWJ2aWV3Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBtb3VzZURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1vdXNlVXA6XSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6c2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxh
Y2tUZXh0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SW5kaWNhdGVMYXllci5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW06CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24ubW06CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKGNhY2hlTW9kZWxGb3JNYWluQnVuZGxl
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6V2ViUHJlZmVyZW5jZXNQcml2YXRl
KToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgaW5pdFdpdGhJZGVudGlmaWVyOnNlbmRDaGFu
Z2VOb3RpZmljYXRpb246aW5pdFdpdGhJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIHN0
YW5kYXJkUHJlZmVyZW5jZXNdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6
ZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfdmFsdWVGb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgt
W1dlYlByZWZlcmVuY2VzIF9zZXRJbnRlZ2VyVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtX
ZWJQcmVmZXJlbmNlcyBfc2V0VW5zaWduZWRJbnRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgt
W1dlYlByZWZlcmVuY2VzIF9zZXRGbG9hdFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2Vi
UHJlZmVyZW5jZXMgX3NldEJvb2xWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZl
cmVuY2VzIF9zZXRMb25nTG9uZ1ZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dl
YlByZWZlcmVuY2VzIF9wb3N0Q2FjaGVNb2RlbENoYW5nZWROb3RpZmljYXRpb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25d
KToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAg
ICAoK1tXZWJSZXNvdXJjZVByaXZhdGUgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0
SXRlcmF0b3IubW06CisgICAgICAgICgrW1dlYlRleHRJdGVyYXRvclByaXZhdGUgaW5pdGlhbGl6
ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKHNob3VsZEVuYWJs
ZUxvYWREZWZlcnJpbmcpOgorICAgICAgICAoc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cyk6Cisg
ICAgICAgIChzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMpOgorICAg
ICAgICAoc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcik6Cisg
ICAgICAgIChzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKToKKyAgICAg
ICAgKHNob3VsZEFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQ
cm90b2NvbCk6CisgICAgICAgIChzaG91bGRBbGxvd1dpbmRvd09wZW5XaXRob3V0VXNlckdlc3R1
cmUpOgorICAgICAgICAoc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9CbGFuayk6CisgICAgICAg
IChzaG91bGRSZXF1aXJlVXNlckdlc3R1cmVUb0xvYWRWaWRlbyk6CisgICAgICAgICgtW1dlYlZp
ZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAg
ICAgICgrW1dlYlZpZXcgX3ZpZXdDbGFzczphbmRSZXByZXNlbnRhdGlvbkNsYXNzOmZvck1JTUVU
eXBlOmFsbG93aW5nUGx1Z2luczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfdmlld0NsYXNzOmFu
ZFJlcHJlc2VudGF0aW9uQ2xhc3M6Zm9yTUlNRVR5cGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
X2Nsb3NlUGx1Z2luRGF0YWJhc2VzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nsb3NlV2l0aEZh
c3RUZWFyZG93bl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jbG9zZV0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9NSU1FVHlwZUZvckZpbGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0U2hvd2lu
Z0luc3BlY3RvckluZGljYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldEZvcm1EZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbmVlZHNQcmVIVE1MNVBhcnNlclF1aXJrc10p
OgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zXSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3VwZGF0ZUFj
dGl2ZVN0YXRlXSk6CisgICAgICAgICgtW19XZWJTYWZlRm9yd2FyZGVyIGZvcndhcmRJbnZvY2F0
aW9uOl0pOgorICAgICAgICAoK1tXZWJWaWV3IGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfcGx1Z2luRm9yTUlNRVR5cGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3BsdWdpbkZv
ckV4dGVuc2lvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfaXNNSU1FVHlwZVJlZ2lzdGVyZWRB
c1BsdWdpbjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBjYW5TaG93TUlNRVR5cGVBc0hUTUw6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX2luaXRXaXRoQXJndW1lbnRzOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGluaXRXaXRoRnJhbWU6ZnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZpZXcgY2xvc2VdKToKKyAgICAgICAg
KC1bV2ViVmlldyB2aWV3RGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBn
b0JhY2tdKToKKyAgICAgICAgKC1bV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBzZXRIb3N0V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGJlY29tZUZp
cnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2NhY2hlTW9kZWxDaGFuZ2VkTm90
aWZpY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9mcmFtZVZpZXdBdFdpbmRvd1BvaW50
Ol0pOgorICAgICAgICAoK1tXZWJWaWV3IF9wcmVmbGlnaHRTcGVsbENoZWNrZXJOb3c6XSk6Cisg
ICAgICAgICgrW1dlYlZpZXcgX3ByZWZsaWdodFNwZWxsQ2hlY2tlcl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGNhbkdvQmFja10pOgorICAgICAgICAoLVtXZWJWaWV3IGNhbkdvRm9yd2FyZF0pOgor
ICAgICAgICAoLVtXZWJWaWV3IHN0b3BMb2FkaW5nOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHJl
bG9hZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5Ol0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnRvRE9N
UmFuZ2U6YWZmaW5pdHk6c3RpbGxTZWxlY3Rpbmc6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHVu
ZG9NYW5hZ2VyXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZF0pOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9yZXRyaWV2ZUtleWJvYXJkVUlNb2RlRnJvbVByZWZlcmVuY2Vz
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9rZXlib2FyZFVJTW9kZV0pOgorICAgICAgICAoTGF5
ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2No
ZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6bW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBmdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3XSk6CisgICAgICAgIChXZWJJbnN0YWxsTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKCtbV2ViVmlld1ByaXZhdGUg
aW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAg
ICgtW1dlYlZpZXdQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oOgorCiAyMDE4LTEwLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzEzNy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS0FwcEtpdFN0dWJzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVz
c2FnZS5oPgpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBOU0FycmF5ICpraXQoY29uc3QgVmVj
dG9yPEludFJlY3QKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRR
dWFkKGNvbnN0IEZsb2F0UXVhZCYgaW5RdWFkKQogewpAQCAtMzA4LDcgKzMwOCw3IEBAIGlkIDxE
T01FdmVudFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXIKIAogQGltcGxlbWVudGF0aW9uIERP
TU5vZGUgKERPTU5vZGVFeHRlbnNpb25zKQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChDR1JlY3QpYm91bmRpbmdCb3gKICNlbHNlCiAtIChOU1JlY3Qp
Ym91bmRpbmdCb3gKQEAgLTMxOCw3ICszMTgsNyBAQCAtIChOU1JlY3QpYm91bmRpbmdCb3gKICAg
ICBub2RlLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiAgICAgYXV0byogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJl
cikKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
cmV0dXJuIENHUmVjdFplcm87CiAjZWxzZQogICAgICAgICByZXR1cm4gTlNaZXJvUmVjdDsKQEAg
LTMzMSw3ICszMzEsNyBAQCAtIChOU0FycmF5ICopbGluZUJveFJlY3RzCiAgICAgcmV0dXJuIFtz
ZWxmIHRleHRSZWN0c107CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogLy8gcXVhZCBpbiBwYWdlIGNvb3JkaW5hdGVzLCB0YWtpbmcgdHJhbnNmb3Jt
cyBpbnRvIGFjY291bnQuIGMuZi4gLSAoTlNSZWN0KWJvdW5kaW5nQm94OwogLSAoV0tRdWFkKWFi
c29sdXRlUXVhZApAQCAtNDkyLDcgKzQ5Miw3IEBAIC0gKERPTU5vZGUgKilwcmV2aW91c0ZvY3Vz
Tm9kZQogICAgIHJldHVybiBraXQocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkucHJldmlvdXNGb2N1
c2FibGVFbGVtZW50KCpjb3JlKHNlbGYpKSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGVuZAogCkBAIC01OTUsNyArNTk1
LDcgQEAgLSAodm9pZClnZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZQogCiBAaW1wbGVt
ZW50YXRpb24gRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9ucykKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dSZWN0KWJvdW5kaW5nQm94CiAjZWxz
ZQogLSAoTlNSZWN0KWJvdW5kaW5nQm94CkBAIC03MTIsNyArNzEyLDcgQEAgLSAoQk9PTClpc0Zv
Y3VzZWQKIAogQGVuZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MTGlua0VsZW1lbnQgKFdlYlByaXZhdGUpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FbGVtZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FbGVtZW50Lm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRWxlbWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIC0gKHVuc2lnbmVkKWNoaWxkRWxlbWVu
dENvdW50CiAgICAgcmV0dXJuIHVud3JhcCgqc2VsZikuY2hpbGRFbGVtZW50Q291bnQoKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dSZWN0
KWJvdW5kc0luUm9vdFZpZXdTcGFjZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXR0
aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAuaD4KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiRE9NSFRNTEVsZW1lbnRJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRvY2FwaXRhbGl6ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oPgpAQCAtNjEsNyArNjEsNyBAQAogLy8gVGhl
c2Ugd2VyZSBvcmlnaW5hbGx5IGhlcmUgYmVjYXVzZSB0aGV5IHdlcmUgaGFuZCB3cml0dGVuIGFu
ZCB0aGUgcmVzdCBnZW5lcmF0ZWQsCiAvLyBidXQgdGhhdCBpcyBubyBsb25nZXIgdHJ1ZS4KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIC0gKHZvaWQpYWJzb2x1dGVQb3Np
dGlvbjooaW50ICopeCA6KGludCAKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBET01IVE1MRG9jdW1lbnQKQEAgLTIwNCw3ICsyMDQsNyBAQCAtICh2
b2lkKV9hY3RpdmF0ZUl0ZW1BdEluZGV4OihpbnQpaW5kZXggCiAKIEBlbmQKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gRE9N
SFRNTElucHV0RWxlbWVudCAoRm9ybVByb21wdEFkZGl0aW9ucykKIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBACiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNkZWZpbmUgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLIDEKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwog
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiRE9NVUlLaXRFeHRlbnNpb25zLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQkod29ya2luZyBjb3B5
KQpAQCAtOTUsNyArOTUsNyBAQCAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZUJ5RmlsdGVyaW5n
U3ViCiAgICAgcmV0dXJuIFt3ZWJBcmNoaXZlIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9PTClpc0hvcml6b250YWxX
cml0aW5nTW9kZQogewogICAgIE5vZGUqIG5vZGUgPSBjb3JlKHNlbGYpOwpAQCAtMjQxLDcgKzI0
MSw3IEBAIC0gKFdlYkZyYW1lICopY29udGVudEZyYW1lCiAKIEBlbmQKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNFdmVudFBoYXNlIHRv
TlNFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBsYXRmb3JtUGhhc2UpCiB7CiAg
ICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7IApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4
dE1lbnVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dl
YkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0
ZS5oIgogCkBAIC0xODksNCArMTg5LDQgQEAgLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcg
Kil3diBjb250ZQogCiBAZW5kCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVm
YXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0RWRpdGluZ0RlbGVnYXRlLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0RWRpdGlu
Z0RlbGVnYXRlLm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdEVkaXRpbmdEZWxlZ2F0ZS5tCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw3ICs5NSw3IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZG9Db20KICAgICByZXR1cm4gTk87CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZAogewog
fQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZh
dWx0UG9saWN5RGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIC0g
KHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBkZWNpZGVQb2wKICAgICAgICAgLy8gQSBmaWxl
IFVSTCBzaG91bGRuJ3QgZmFsbCB0aHJvdWdoIHRvIGhlcmUsIGJ1dCBpZiBpdCBkaWQsCiAgICAg
ICAgIC8vIGl0IHdvdWxkIGJlIGEgc2VjdXJpdHkgcmlzayB0byBvcGVuIGl0LgogICAgICAgICBp
ZiAoIVtbcmVxdWVzdCBVUkxdIGlzRmlsZVVSTF0pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRX
b3Jrc3BhY2VdIG9wZW5VUkw6W3JlcXVlc3QgVVJMXV07CiAjZW5kaWYKICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlE
ZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHRE
ZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIEBpbnRlcmZhY2UgV2ViRGVm
YXVsdFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V2ViVUlEZWxlZ2F0ZT4KIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIElCT3V0bGV0IE5TTWVudSAq
ZGVmYXVsdE1lbnU7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0Rl
ZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVs
dERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTcgKzMyLDE3IEBACiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViVmlldy5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgogI2ltcG9ydCAiV2Vi
S2l0VmVyc2lvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FLV2luZG93Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGVj
bGFyYXRpb25TdG9sZW5Gcm9tQXBwS2l0KQogLSAodm9pZClfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6
KEJPT0wpcmV2ZXJzZWQ7CiBAZW5kCkBAIC03Myw3ICs3Myw3IEBAIC0gKFdlYlZpZXcgKil3ZWJW
aWV3OiAoV2ViVmlldyAqKXd2IGNyZWEKICAgICByZXR1cm4gbmlsOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXZWJWaWV3ICopd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wpdXNlckdlc3R1cmUKIHsKICAgICByZXR1cm4gbmls
OwpAQCAtODYsMjEgKzg2LDIxIEBAIC0gKHZvaWQpd2ViVmlld1Nob3c6IChXZWJWaWV3ICopd3YK
IAogLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2luZG93XSBjbG9zZV07
CiAjZW5kaWYKIH0KIAogLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKIHsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2lu
ZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDp3dl07CiAjZW5kaWYKIH0KIAogLSAodm9pZCl3ZWJW
aWV3VW5mb2N1czogKFdlYlZpZXcgKil3dgogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRvd10gfHwg
W1tbd3Ygd2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pCiAgICAgICAgIFtOU0Fw
cCBfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6RkFMU0VdOwogI2VuZGlmCkBAIC0xNDksNyArMTQ5LDcg
QEAgLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFN0YXR1cwogCiAtIChCT09MKXdl
YlZpZXdJc1Jlc2l6YWJsZTogKFdlYlZpZXcgKil3dgogewotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBOTzsKICNlbHNlCiAgICAgcmV0dXJu
IFtbd3Ygd2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07CkBAIC0xNTgsNyArMTU4LDcgQEAg
LSAoQk9PTCl3ZWJWaWV3SXNSZXNpemFibGU6IChXZWJWaWV3ICopdwogCiAtICh2b2lkKXdlYlZp
ZXc6IChXZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJlc2l6YWJsZQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRo
aXMgZG9lc24ndCBhY3R1YWxseSBjaGFuZ2UgdGhlIHJlc2l6YWJpbGl0eSBvZiB0aGUgd2luZG93
LAogICAgIC8vIG9ubHkgdmlzaWJpbGl0eSBvZiB0aGUgaW5kaWNhdG9yLgogICAgIFtbd3Ygd2lu
ZG93XSBzZXRTaG93c1Jlc2l6ZUluZGljYXRvcjpyZXNpemFibGVdOwpAQCAtMTY3LDcgKzE2Nyw3
IEBAIC0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRSZXNpemEKIAogLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldEZyYW1lOihOU1JlY3QpZnJhbWUKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbd3Ygd2luZG93XSBz
ZXRGcmFtZTpmcmFtZSBkaXNwbGF5OllFU107CiAjZW5kaWYKIH0KQEAgLTE5MSw3ICsxOTEsNyBA
QCAtIChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjCiAKIC0gKE5TU3RyaW5n
ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRo
UHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooTlNTdHJpbmcgKilkZWZhdWx0
VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJKYXZhU2NyaXB0VGV4dElu
cHV0UGFuZWwgKnBhbmVsID0gW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGlu
aXRXaXRoUHJvbXB0OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XTsKICAgICBbcGFuZWwgc2hvd1dp
bmRvdzpuaWxdOwogICAgIE5TU3RyaW5nICpyZXN1bHQ7CkBAIC0yMTcsNyArMjE3LDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50RgogfQogCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNVSW50ZWdlcil3ZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJ
bmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIGlmICghbGlua2Vk
T25PckFmdGVyKFNES1ZlcnNpb246OkZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5
RGVmYXVsdCkpCkBAIC0yNjYsNyArMjY2LDcgQEAgLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIAogICAgIHJldHVybiBuaWw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0
aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6IAogICAgIHZvaWQgcmVt
b3ZlSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2Vi
Q29yZTo6SGlzdG9yeUl0ZW0+PiYgZW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllczsg
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdW5z
aWduZWQgY3VycmVudCgpOwogICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9CYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTEsNyArMjExLDcgQEAgUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6Oml0ZQog
ICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdW5zaWduZWQgQmFj
a0ZvcndhcmRMaXN0OjpjdXJyZW50KCkKIHsKICAgICByZXR1cm4gbV9jdXJyZW50OwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3QubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3
IEBAIC0gKGlkKWluaXRXaXRoQmFja0ZvcndhcmRMaXN0OihSZWY8QmFja0YKIAogKyAodm9pZClp
bml0aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIC0gKHZvaWQpcmVtb3ZlSXRlbTooV2Vi
SGlzdG9yeUl0ZW0gKilpdGUKICAgICBjb3JlKHNlbGYpLT5yZW1vdmVJdGVtKCpjb3JlKGl0ZW0p
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAv
LyBGSVhNRTogTW92ZSBpbnRvIFdlYkNvcmUgdGhlIGNvZGUgdGhhdCBkZWFscyBkaXJlY3RseSB3
aXRoIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdC4KIApAQCAtMTk3LDcgKzE5Nyw3IEBAIC0gKHZv
aWQpc2V0VG9NYXRjaERpY3Rpb25hcnlSZXByZXNlbnRhdGkKICAgICAgICAgY3VycmVudEluZGV4
ID0gbGlzdFNpemUgLSAxOwogICAgIGNvcmVCRkxpc3QtPnNldEN1cnJlbnQoY3VycmVudEluZGV4
KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogLSAoQk9PTCljb250YWluc0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQogewpA
QCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXkoVmVjdG9y
PFIKIAogc3RhdGljIGJvb2wgYnVtcGVyQ2FyQmFja0ZvcndhcmRIYWNrTmVlZGVkKCkgCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMg
Ym9vbCBoYWNrTmVlZGVkID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmZyZWV2ZXJzZS5idW1wZXJjYXIiXSAmJiAKICAgICAg
ICAgIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0JV
TVBFUkNBUl9CQUNLX0ZPUldBUkRfUVVJUkspOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQ2FsZW5kYXJEYXRlU1BJLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVh
ZE1lc3NhZ2UuaD4KICNlbmRpZgogCkBAIC0zMjEsNyArMzIxLDcgQEAgLSAoQk9PTClhZGRJdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWVudHJ5IAogCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFtl
bnRyeSBVUkxTdHJpbmddOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBXZWJIaXN0b3J5SXRlbSAqb2xkRW50cnkgPSBbX2VudHJpZXNCeVVSTCBv
YmplY3RGb3JLZXk6VVJMU3RyaW5nXTsKICAgICBpZiAob2xkRW50cnkpIHsKICAgICAgICAgaWYg
KGRpc2NhcmREdXBsaWNhdGUpCkBAIC03MjgsNyArNzI4LDcgQEAgLSAodm9pZClkZWFsbG9jCiAt
ICh2b2lkKV9zZW5kTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5hbWUgZW50cmllczooTlNBcnJh
eSAqKWVudHJpZXMKIHsKICAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOmVudHJpZXMsIFdlYkhpc3RvcnlJdGVtc0tl
eSwgbmlsXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKG5hbWUsIHNlbGYsIHVzZXJJbmZvKTsKICNlbHNl
ICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0KQEAgLTc5Niw3
ICs3OTYsNyBAQCAtIChCT09MKWxvYWRGcm9tVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooCiAgICAg
ICAgIHJldHVybiBOTzsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYkhpc3RvcnlMb2Fk
ZWROb3RpZmljYXRpb24sIHNlbGYsIG5pbCk7CiAjZWxzZSAgICAgICAgCiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXQpAQCAtODE1LDcgKzgxNSw3IEBAIC0gKEJPT0wp
c2F2ZVRvVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooTlMKIHsKICAgICBpZiAoIVtfaGlzdG9yeVBy
aXZhdGUgc2F2ZVRvVVJMOlVSTCBlcnJvcjplcnJvcl0pCiAgICAgICAgIHJldHVybiBOTzsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRQ
b3N0Tm90aWZpY2F0aW9uKFdlYkhpc3RvcnlTYXZlZE5vdGlmaWNhdGlvbiwgc2VsZiwgbmlsKTsK
ICNlbHNlICAgICAgICAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAK
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAKIE5TU3RyaW5nICpXZWJWaWV3
cG9ydEluaXRpYWxTY2FsZUtleSA9IEAiaW5pdGlhbC1zY2FsZSI7CkBAIC0xMTEsNyArMTExLDcg
QEAgc3RhdGljIEhpc3RvcnlJdGVtTWFwJiBoaXN0b3J5SXRlbVdyYXBwZQogCiB2b2lkIFdLTm90
aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKEhpc3RvcnlJdGVtJikKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0KICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViSGlzdG9yeUl0
ZW1DaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86bmlsXTsKICNlbHNlCkBA
IC0xMjMsNyArMTIzLDcgQEAgdm9pZCBXS05vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5
SQogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgLSAoTlNTdHJp
bmcgKilhbHRlcm5hdGVUaXRsZQogICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoY29yZShf
cHJpdmF0ZSktPmFsdGVybmF0ZVRpdGxlKCkpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TSW1hZ2UgKilpY29uCiB7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTM3MCw3ICszNzAsNyBAQCAtIChpZClp
bml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooCiAgICAgICAgIH0KICAgICB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU051bWJlciAq
c2NhbGVWYWx1ZSA9IFtkaWN0IG9iamVjdEZvcktleTpzY2FsZUtleV07CiAgICAgTlNOdW1iZXIg
KnNjYWxlSXNJbml0aWFsVmFsdWUgPSBbZGljdCBvYmplY3RGb3JLZXk6c2NhbGVJc0luaXRpYWxL
ZXldOwogICAgIGlmIChzY2FsZVZhbHVlICYmIHNjYWxlSXNJbml0aWFsVmFsdWUpCkBAIC00MDks
NyArNDA5LDcgQEAgLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopVVJMIHRpdGxlOihOUwogfQog
CiAvLyBGSVhNRTogVGhlIG9ubHkgaU9TIGRpZmZlcmVuY2UgaGVyZSBzaG91bGQgYmUgd2hldGhl
ciBZRVMgb3IgTk8gaXMgcGFzc2VkIHRvIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGlu
Z0NoaWxkcmVuOgotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiB7CiAgICAgcmV0dXJu
IFtzZWxmIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVuOllFU107CkBA
IC00NDcsNyArNDQ3LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0
aQogICAgICAgICBbcmVzdWx0IHJlbGVhc2VdOwogICAgIH0KICAgICAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW5jbHVkZXNDaGlsZHJlbiAm
JiBjb3JlSXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpIHsKICNlbHNlCiAgICAgaWYgKGNvcmVJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkgewpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKE5TRGljdGlvbmFy
eSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGkKICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OiBjaGls
ZERpY3RzIGZvcktleTpjaGlsZHJlbktleV07CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6Y29yZShfcHJpdmF0ZSktPnNjYWxlKCldIGZvcktleTpzY2FsZUtleV07
CiAgICAgW2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpjb3JlKF9wcml2
YXRlKS0+c2NhbGVJc0luaXRpYWwoKV0gZm9yS2V5OnNjYWxlSXNJbml0aWFsS2V5XTsKIApAQCAt
NTE5LDcgKzUxOSw3IEBAIC0gKE5TVVJMICopVVJMCiAgICAgcmV0dXJuIHVybDsKIH0KIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiArICh2b2lkKV9yZWxl
YXNlQWxsUGVuZGluZ1BhZ2VDYWNoZXMKIHsKIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCAtIChOU0Fy
cmF5ICopX3JlZGlyZWN0VVJMcwogICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNlXTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClf
c2V0U2NhbGU6KGZsb2F0KXNjYWxlIGlzSW5pdGlhbDooQk9PTClhRmxhZwogewogICAgIGNvcmUo
X3ByaXZhdGUpLT5zZXRTY2FsZShzY2FsZSwgYUZsYWcpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIC0g
KHZvaWQpX3NldFNjcm9sbFBvaW50OihDR1BvaW50KXNjcm9sbFAKICAgICBjb3JlKF9wcml2YXRl
KS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsUG9pbnQpKTsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChC
T09MKV9pc0luUGFnZUNhY2hlCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJVUkxzV2l0aFRpdGxlcy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYlVSTHNXaXRoVGl0bGVzLm0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYlVSTHNX
aXRoVGl0bGVzLmgiCiAKQEAgLTEwOCw0ICsxMDgsNCBAQCArKE5TQXJyYXkgKilVUkxzRnJvbVBh
c3RlYm9hcmQ6KE5TUGFzdGViCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViQ2FjaGUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJN
ZW1vcnlNZWFzdXJlLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NhY2hlZEltYWdlLmg+CkBAIC01Miw3ICs1Miw3IEBACiAKICsgKHZvaWQpaW5pdGlh
bGl6ZQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCArICh2b2lkKWVtcHR5CiAgICAgV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuY2xlYXIoKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZCll
bXB0eUluTWVtb3J5UmVzb3VyY2VzCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZ2V0cyBjYWxsZWQg
ZnJvbSBNb2JpbGVTYWZhcmkgYWZ0ZXIgaXQgY2FsbHMgW1dlYlZpZXcKQEAgLTE5NCw3ICsxOTQs
NyBAQCArIChDR0ltYWdlUmVmKWltYWdlRm9yVVJMOihOU1VSTCAqKXVybAogICAgIHJldHVybiBj
YWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOwogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICsgKHZvaWQp
c2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEs
NyArOTEsNyBAQCAtIChOU1VSTFJlcXVlc3QgKilkb3dubG9hZDooTlNVUkxEb3dubG9hCiAKIC0g
KHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVu
Z2UKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFRyeSBwcmV2aW91c2x5IHN0b3JlZCBjcmVkZW50aWFsIGZpcnN0LgogICAgIGlmICghW2No
YWxsZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pIHsKICAgICAgICAgTlNVUkxDcmVkZW50aWFs
ICpjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmRlZmF1bHRDcmVkZW50aWFsU3RvcmFn
ZSgpLmdldChlbXB0eVN0cmluZygpLCBQcm90ZWN0aW9uU3BhY2UoW2NoYWxsZW5nZSBwcm90ZWN0
aW9uU3BhY2VdKSkubnNDcmVkZW50aWFsKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVWYWx1
ZUZvcktleShjb25zdCB2b2lkIAogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhy
ZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC04Myw3ICs4
Myw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiAgICAgYWRkTG9va3VwS2V5KFdl
YkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsKICAgICBhZGRMb29rdXBL
ZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1lKSk7CiAgICAgYWRkTG9v
a3VwS2V5KFdlYkVsZW1lbnRJbWFnZUFsdFN0cmluZ0tleSwgQHNlbGVjdG9yKF9hbHREaXNwbGF5
U3RyaW5nKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEltYWdlS2V5LCBAc2VsZWN0b3IoX2ltYWdlKSk7
CiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1lbnRJbWFnZVJlY3RLZXksIEBzZWxlY3RvcihfaW1h
Z2VSZWN0KSk7CiAjZW5kaWYKQEAgLTE5OSw3ICsxOTksNyBAQCAtIChOU1N0cmluZyAqKV9zcGVs
bGluZ1Rvb2xUaXAKICAgICByZXR1cm4gTlNTdHJpbmdPck5pbChfcmVzdWx0LT5zcGVsbGluZ1Rv
b2xUaXAoZGlyKSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAtIChOU0ltYWdlICopX2ltYWdlCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkljb25E
YXRhYmFzZS5oIgogCkBAIC0xODMsNCArMTgzLDQgQEAgLSAoaWQpZGVsZWdhdGUKIAogQGVuZAog
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgx
LDcgKzE4MSw3IEBAICsgKE5TU3RyaW5nICopX3dlYmtpdF9sb2NhbENhY2hlRGlyZWN0b3IKICAg
ICBOU1N0cmluZyAqY2FjaGVEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5XTsKIAog
ICAgIGlmICghY2FjaGVEaXJlY3RvcnkgfHwgIVtjYWNoZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIGNhY2hlRGlyZWN0b3J5ID0gW05TSG9tZURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzIl07CiAjZW5kaWYK
ICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YktpdFZlcnNpb25DaGVja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICB3aGVuIGFkZGluZyBhIG5ldyB2ZXJzaW9uIGNvbnN0
YW50LgogKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfM18wX0NPTlRFWFRfTUVOVV9UQUdT
IDB4MDIwQTAwMDAgLy8gNTIyLjAuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRI
X0xPQ0FMX1JFU09VUkNFX1NFQ1VSSVRZX1JFU1RSSUNUSU9OIDB4MDIwQTAwMDAgLy8gNTIyLjAu
MAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0FQRVJUVVJFX1FVSVJLIDB4
MDIwQTAwMDAgLy8gNTIyLjAuMApAQCAtNzAsMTAgKzcwLDEwIEBACiAjZGVmaW5lIFdFQktJVF9G
SVJTVF9WRVJTSU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMgMjY2
NSAvLyBpT1MgNy4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSU5TRUNVUkVf
Q09OVEVOVF9CTE9DS0lORyAzNDU0CiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
Q09OVEVOVF9TRUNVUklUWV9QT0xJQ1lfU09VUkNFX1NUQVJfUFJPVE9DT0xfUkVTVFJJQ1RJT04g
MzU1NQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRmlyc3RUb0V4Y2x1ZGVMb2NhbFN0
b3JhZ2VGcm9tQmFja3VwID0gRFlMRF9JT1NfVkVSU0lPTl8xMV8wLAogICAgIEZpcnN0VGhhdERl
ZmF1bHRzVG9QYXNzaXZlVG91Y2hMaXN0ZW5lcnNPbkRvY3VtZW50ID0gRFlMRF9JT1NfVkVSU0lP
Tl8xMV8zLAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0
VmVyc2lvbkNoZWNrcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYktpdFZlcnNpb25DaGVja3MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgaW50IG92ZXJyaWRkZW5XZWJLaXRMaW5rVGltZVZl
cnNpCiAKIEJPT0wgV2ViS2l0TGlua2VkT25PckFmdGVyKGludCB2ZXJzaW9uKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIChXZWJL
aXRMaW5rVGltZVZlcnNpb24oKSA+PSB2ZXJzaW9uKTsKICNlbHNlCiAgICAgaW50MzJfdCBsaW5r
VGltZVZlcnNpb24gPSBXZWJLaXRMaW5rVGltZVZlcnNpb24oKTsKQEAgLTU5LDcgKzU5LDcgQEAg
c3RhdGljIGludCBXZWJLaXRMaW5rVGltZVZlcnNpb24odm9pZCkKICAgICBpZiAob3ZlcnJpZGRl
bldlYktpdExpbmtUaW1lVmVyc2lvbikKICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5XZWJLaXRM
aW5rVGltZVZlcnNpb247CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiBOU1ZlcnNpb25PZkxpbmtUaW1lTGlicmFyeSgiV2ViS2l0Iik7
CiAjZWxzZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82NjI3NzU4PiBOZWVkIHRvIGltcGxlbWVu
dCBXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBOU1N0cmluZyAqV2ViTG9jYWxpemVk
U3RyaW5nKFdlYkxvY2FsaXphCiAgICAgLy8gYW5kIGl0cyB1c2Ugb2YgW05TQnVuZGxlIGxvY2Fs
aXplZFN0cmluZ0ZvcktleTo6Ol0sIHdoaWNoIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHRocmVh
ZC1zYWZlLiBJZgogICAgIC8vIHdlIGRlY2lkZSB3ZSBuZWVkIHRvIHVzZSB0aGlzIG9uIGJhY2tn
cm91bmQgdGhyZWFkcywgd2UnbGwgbmVlZCB0byBhZGQgbG9ja2luZyBoZXJlIGFuZCBtYWtlIHN1
cmUKICAgICAvLyBpdCBkb2Vzbid0IGFmZmVjdCBwZXJmb3JtYW5jZS4KLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0Nv
bnRyb2xFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYk5TQ29udHJvbEV4dHJhcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNDb250cm9sRXh0cmFz
Lm0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TlNDb250cm9sRXh0cmFzLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIldlYk5TQ29udHJvbEV4dHJhcy5oIgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRXZlbnRFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRXZlbnRFeHRyYXMubQkocmV2aXNpb24gMjM3
MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0V2ZW50RXh0cmFzLm0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdl
YktpdExlZ2FjeS9XZWJOU0V2ZW50RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENv
bXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaD4KQEAgLTg0LDQgKzg0LDQgQEAgLSAoQk9PTClfd2Vi
X2lzVGFiS2V5RXZlbnQKIAogQGVuZAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBAaW1wbGVtZW50YXRp
b24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpX3dlYmtpdF9zZXRN
ZXRhZGF0YVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcgcmVmZXJyZXI6KE5TU3RyaW5nICopcmVm
ZXJyZXIgYXRQYXRoOihOU1N0cmluZyAqKXBhdGgKIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgLSAodm9p
ZClfd2Via2l0X3NldE1ldGFkYXRhVVJMOihOU1N0cmluZwogICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOwogfQogCi0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
Ly8gLVtOU0ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6XSByZXR1cm5zIE5PIGlmIHRoZXJl
IGlzIGEgYnJva2VuIHN5bWxpbmsgYXQgdGhlIHBhdGguCiAvLyBTbyB3ZSB1c2UgdGhpcyBmdW5j
dGlvbiBpbnN0ZWFkLCB3aGljaCByZXR1cm5zIFlFUyBpZiB0aGVyZSBpcyBhbnl0aGluZyB0aGVy
ZSwgaW5jbHVkaW5nCkBAIC05MCw3ICs5MCw3IEBAIC0gKE5TU3RyaW5nICopX3dlYmtpdF9wYXRo
V2l0aFVuaXF1ZUZpbGUKICAgICByZXR1cm4gcGF0aDsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsK
ICAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KHByZWZpeCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TSW1hZ2VF
eHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
SW1hZ2VFeHRyYXMuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU0ltYWdlRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgPENvY29hL0NvY29hLmg+CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TSW1hZ2VFeHRyYXMu
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8
V2ViS2l0TGVnYWN5L1dlYk5TSW1hZ2VFeHRyYXMuaD4KIApAQCAtOTAsNCArOTAsNCBAQCAtICh2
b2lkKV93ZWJfZGlzc29sdmVUb0ZyYWN0aW9uOihmbG9hdClkCiAKIEBlbmQKIAotI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4
dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYk5TUGFzdGVib2FyZEV4dHJhcy5oIgogCkBAIC0z
MTgsNCArMzE4LDQgQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbAog
CiBAZW5kCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1ByaW50
T3BlcmF0aW9uRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2Nv
YS9Db2NvYS5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUHJp
bnRPcGVyYXRpb25FeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TUHJpbnRPcGVyYXRpb25FeHRyYXMubQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLm0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldl
Yk5TUHJpbnRPcGVyYXRpb25FeHRyYXMuaCIKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1ZpZXdFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TVmlld0V4dHJhcy5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVmlld0V4dHJhcy5tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJOU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXcuaD4KIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2Vi
TlNQYXN0ZWJvYXJkRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtpdENvbXBhdGliaWxp
dHlEZWNsYXJhdGlvbnMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgogI2VuZGlmCiAK
QEAgLTY3LDcgKzY3LDcgQEAgLSAoV2ViRnJhbWVWaWV3ICopX3dlYl9wYXJlbnRXZWJGcmFtZVZp
ZQogICAgIHJldHVybiAoV2ViRnJhbWVWaWV3ICopW3NlbGYgX3dlYl9zdXBlcnZpZXdPZkNsYXNz
OltXZWJGcmFtZVZpZXcgY2xhc3NdXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAvLyBGSVhNRTogTWFpbCBpcyB0aGUgb25seSBjbGllbnQgb2Yg
X3dlYlZpZXcsIHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIG5vIHZlcnNpb25zIG9mIE1haWwgbmVl
ZCBpdC4KIC0gKFdlYlZpZXcgKilfd2ViVmlldwogewpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKE5T
RHJhZ09wZXJhdGlvbilfd2ViX2RyYWdPcGVyYXRpb25Gb3IKICAgICByZXR1cm4gTlNEcmFnT3Bl
cmF0aW9uTm9uZTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX3dlYl9maXJzdFJlc3BvbmRlcklzU2VsZk9y
RGVzY2VuZGFudFZpZXcKIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCAtIChCT09MKV93ZWJfZmlyc3RS
ZXNwb25kZXJJc1NlbGZPckRlc2NlCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9uIE5TVmlldyAoV2ViRG9jdW1lbnRW
aWV3RXh0cmFzKQogCiAtIChXZWJGcmFtZSAqKV9mcmFtZQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1dpbmRvd0V4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNXaW5kb3dFeHRyYXMubQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1dpbmRvd0V4dHJhcy5tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJO
U1dpbmRvd0V4dHJhcy5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QYW5lbHMv
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVsLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
PENvY29hL0NvY29hLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ3JlZGVudGlhbFN0b3Jh
Z2UuaD4KQEAgLTY5LDQgKzY5LDQgQEAgQGludGVyZmFjZSBXZWJBdXRoZW50aWNhdGlvblBhbmVs
IDogTlNPYgogQGludGVyZmFjZSBXZWJOb25CbG9ja2luZ1BhbmVsIDogTlNQYW5lbAogQGVuZAog
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlv
blBhbmVsLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGFuZWxzL1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGFuZWxzL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaD4KIApAQCAtMjk1LDQgKzI5NSw0IEBAIC0gKEJPT0wpX2Js
b2Nrc0FjdGlvbldoZW5Nb2RhbDooU0VMKXRoZUEKIAogQGVuZAogCi0jZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BhbmVscy9XZWJQYW5lbEF1dGhl
bnRpY2F0aW9uSGFuZGxlci5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QYW5lbHMvV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIubQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5
L1dlYlBhbmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmg+CiAKQEAgLTE2Myw0ICsxNjMsNCBAQCAt
KHZvaWQpX2F1dGhlbnRpY2F0aW9uRG9uZVdpdGhDaGFsbGVuZ2U6CiAKIEBlbmQKIAotI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1
Z2luUGFja2FnZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAKIHR5cGVkZWYgdm9pZCAoKkJQX0NyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVu
Y2VzRnVuY1B0cikodm9pZCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVicy5oPgogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogKyAodm9p
ZClpbml0aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJKYXZhUGx1Z0luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJKYXZhUGx1Z0luLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViSmF2YVBsdWdJbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxKYXZhVk0vam5pLmg+CiAKQEAgLTg1LDQg
Kzg1LDQgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViSmF2YVBsdWdJbikKICAgICAgICBleGNl
cHRpb25EZXNjcmlwdGlvbjooTlNTdHJpbmcgKiopZXhjZXB0aW9uU3RyaW5nOwogCiBAZW5kCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNo
ZWNrLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luQ29udGFpbmVyQ2hlY2subW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2Vi
UGx1Z2luQ29udHJvbGxlciAoU2VjcmV0c0lLbm93KQogLSAoV2ViRnJhbWUgKil3ZWJGcmFtZTsg
Ly8gRklYTUU6IFRoaXMgZmlsZSBjYWxscyAtW1dlYlBsdWdpbkNvbnRyb2xsZXIgd2ViRnJhbWVd
LCB3aGljaCBpcyBub3QgZGVjbGFyZWQgaW4gV2ViUGx1Z2luQ29udHJvbGxlci5oLiAgTWVyZ2Ug
aXNzdWU/ICBBcmUgdGhlIHBsdWctaW4gZmlsZXMgb3V0IG9mIGRhdGU/CiBAZW5kCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRy
b2xsZXIuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAKIEBjbGFzcyBXZWJQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYlZpZXc7CiBAY2xhc3MgV2Vi
RGF0YVNvdXJjZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IEBjbGFzcyBDQUxheWVyOwogI2VuZGlmCiAKQEAgLTU3LDcgKzU3LDcgQEAgQGludGVyZmFjZSBX
ZWJQbHVnaW5Db250cm9sbGVyIDogTlNPYmplYwogLSAodm9pZClhZGRQbHVnaW46KE5TVmlldyAq
KXZpZXc7CiAtICh2b2lkKWRlc3Ryb3lQbHVnaW46KE5TVmlldyAqKXZpZXc7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsgKHZvaWQpYWRkUGx1Z0luVmll
dzooTlNWaWV3ICopdmlldzsKIC0gKEJPT0wpcGx1Z0luc0FyZVJ1bm5pbmc7CiAtIChDQUxheWVy
ICopc3VwZXJsYXllckZvclBsdWdpblZpZXc6KE5TVmlldyAqKXZpZXc7CkBAIC02NSw3ICs2NSw3
IEBAIEBpbnRlcmZhY2UgV2ViUGx1Z2luQ29udHJvbGxlciA6IE5TT2JqZWMKIC0gKHZvaWQpc3Rh
cnRBbGxQbHVnaW5zOwogLSAodm9pZClzdG9wQWxsUGx1Z2luczsKIC0gKHZvaWQpZGVzdHJveUFs
bFBsdWdpbnM7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKXN0b3BQbHVnaW5zRm9yUGFnZUNhY2hlOwogLSAodm9pZClyZXN0b3JlUGx1Z2luc0Zy
b21DYWNoZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJQbHVnaW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYlVJS2l0RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXVkaW9TZXNzaW9u
Lmg+CkBAIC04MSw3ICs4MSw3IEBAIEBpbnRlcmZhY2UgTlNWaWV3IChQbHVnaW5TZWNyZXRzKQog
LSAodm9pZClzZXRDb250YWluaW5nV2luZG93OihOU1dpbmRvdyAqKXc7CiBAZW5kCiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRm9yIGNvbXBhdGli
aWxpdHkgb25seS4KIEBpbnRlcmZhY2UgTlNPYmplY3QgKE9sZFBsdWdpbkFQSSkKICsgKE5TVmll
dyAqKXBsdWdpblZpZXdXaXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHM7CkBA
IC05NSw3ICs5NSw3IEBAIC0gKHZvaWQpcGx1Z2luU3RvcDsKIC0gKHZvaWQpcGx1Z2luRGVzdHJv
eTsKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiBzdGF0aWMgYm9vbCBpc0tpbmRPZkNsYXNzKGlkLCBOU1N0cmluZyogY2xhc3NOYW1lKTsKIHN0
YXRpYyB2b2lkIGluc3RhbGxGbGlwNE1hY1BsdWdJbldvcmthcm91bmRJZk5lY2Vzc2FyeSgpOwog
I2VuZGlmCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgaW5zdGFsbEZsaXA0TWFjUGx1
Z0luV29ya2FybwogCiBzdGF0aWMgTlNNdXRhYmxlU2V0ICpwbHVnaW5WaWV3cyA9IG5pbDsKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbigpCiB7CiAgICAgc3RhdGljIGJvb2wgd2FzQXVkaW9TZXNz
aW9uSW5pdGlhbGl6ZWQ7CkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZUF1ZGlvU2Vzc2lvbigpCiAKIC0gKE5TVmlldyAqKXBsdWdJblZpZXdXaXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6KFdlYlBsdWdpblBhY2th
Z2UgKilwbHVnaW5QYWNrYWdlCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbigpOwogI2VuZGlmCiAKQEAgLTEz
MCw3ICsxMzAsNyBAQCAtIChOU1ZpZXcgKilwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czooTlNECiAK
ICAgICBOU1ZpZXcgKnZpZXcgPSBuaWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB7CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbX2RvY3Vt
ZW50VmlldyBfd2ViVmlld107CiAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKGNvbW1vblZNKCkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKE5TVmlldyAqKXBs
dWdJblZpZXdXaXRoQXJndW1lbnRzOihOU0QKICAgICByZXR1cm4gdmlldzsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZClhZGRQbHVnSW5W
aWV3OihOU1ZpZXcgKil2aWV3CiB7CiAgICAgaWYgKHBsdWdpblZpZXdzID09IG5pbCkKQEAgLTE5
OSw3ICsxOTksNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpcGx1
Z0luc0FyZVJ1bm5pbmcKIHsKICAgICBOU1VJbnRlZ2VyIHBsdWdpblZpZXdDb3VudCA9IFtfdmll
d3MgY291bnRdOwpAQCAtMjMzLDcgKzIzMyw3IEBAIC0gKHZvaWQpc3RvcE9uZVBsdWdpbjooTlNW
aWV3ICopdmlldwogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClzdG9wT25lUGx1Z2luRm9yUGFnZUNhY2hlOihOU1ZpZXcgKil2
aWV3CiB7CiAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1
Z0luU3RvcEZvclBhZ2VDYWNoZSldKSB7CkBAIC0yOTMsNyArMjkzLDcgQEAgLSAodm9pZClzdG9w
QWxsUGx1Z2lucwogICAgIF9zdGFydGVkID0gTk87CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc3RvcFBsdWdpbnNGb3JQYWdlQ2FjaGUK
IHsKICAgICBpZiAoIV9zdGFydGVkKQpAQCAtMzIwLDcgKzMyMCw3IEBAIC0gKHZvaWQpcmVzdG9y
ZVBsdWdpbnNGcm9tQ2FjaGUKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCB2aWV3c0Nv
dW50OyArK2kpCiAgICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
Vmlldzp3ZWJWaWV3IHdpbGxBZGRQbHVnSW5WaWV3Oltfdmlld3Mgb2JqZWN0QXRJbmRleDppXV07
CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIC0gKHZvaWQpYWRkUGx1Z2luOihOU1ZpZXcgKil2aWV3CiB7CkBAIC0zMzEsMTEgKzMz
MSwxMSBAQCAtICh2b2lkKWFkZFBsdWdpbjooTlNWaWV3ICopdmlldwogICAgIAogICAgIGlmICgh
W192aWV3cyBjb250YWluc09iamVjdDp2aWV3XSkgewogICAgICAgICBbX3ZpZXdzIGFkZE9iamVj
dDp2aWV3XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBbW19kb2N1bWVudFZpZXcgX3dlYlZpZXddIGFkZFBsdWdpbkluc3RhbmNlVmlldzp2
aWV3XTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAgICAgQk9PTCBvbGREZWZlcnNDYWxsYmFja3MgPSBbW3NlbGYgd2ViVmlld10g
ZGVmZXJzQ2FsbGJhY2tzXTsKICAgICAgICAgaWYgKCFvbGREZWZlcnNDYWxsYmFja3MpCiAgICAg
ICAgICAgICBbW3NlbGYgd2ViVmlld10gc2V0RGVmZXJzQ2FsbGJhY2tzOllFU107CkBAIC0zNTMs
NyArMzUzLDcgQEAgLSAodm9pZClhZGRQbHVnaW46KE5TVmlldyAqKXZpZXcKICAgICAgICAgICAg
IFt2aWV3IHBsdWdpbkluaXRpYWxpemVdOwogICAgICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW9sZERlZmVyc0NhbGxi
YWNrcykKICAgICAgICAgICAgIFtbc2VsZiB3ZWJWaWV3XSBzZXREZWZlcnNDYWxsYmFja3M6Tk9d
OwogI2VuZGlmCkBAIC0zODksNyArMzg5LDcgQEAgLSAodm9pZClkZXN0cm95UGx1Z2luOihOU1Zp
ZXcgKil2aWV3CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVP
YmplY3Q6dmlld107Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgW1tfZG9jdW1lbnRWaWV3IF93ZWJWaWV3XSByZW1vdmVQbHVnaW5JbnN0YW5j
ZVZpZXc6dmlld107CiAjZW5kaWYKICAgICAgICAgW192aWV3cyByZW1vdmVPYmplY3Q6dmlld107
CkBAIC00MzcsMTIgKzQzNywxMiBAQCAtICh2b2lkKWRlc3Ryb3lBbGxQbHVnaW5zCiAjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVPYmplY3Q6YVZpZXddOwotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtbX2Rv
Y3VtZW50VmlldyBfd2ViVmlld10gcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3OmFWaWV3XTsKICNl
bmRpZgogICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW192aWV3cyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVt
b3ZlRnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5nRGlzcGxheSldOwogI2Vsc2UKICAgICBbX3Zp
ZXdzIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJ2
aWV3KV07CkBAIC00NTMsNyArNDUzLDcgQEAgLSAodm9pZClkZXN0cm95QWxsUGx1Z2lucwogICAg
IF9kb2N1bWVudFZpZXcgPSBuaWw7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpcHJvY2Vzc2luZ1VzZXJHZXN0dXJlCiB7CiAgICAgcmV0
dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKQEAgLTUw
Niw3ICs1MDYsNyBAQCAtICh2b2lkKXdlYlBsdWdJbkNvbnRhaW5lckxvYWRSZXF1ZXN0OihOCiAg
ICAgfQogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKXdlYlBsdWdJbkNvbnRhaW5lcldpbGxTaG93RnVsbFNjcmVlbkZvclZpZXc6KGlkKXBs
dWdJblZpZXcKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW19kYXRhU291cmNlIF93ZWJWaWV3
XTsKQEAgLTUzNSw3ICs1MzUsNyBAQCAtICh2b2lkKXNob3dTdGF0dXM6KE5TU3RyaW5nICopbWVz
c2FnZQogICAgIFtzZWxmIHdlYlBsdWdJbkNvbnRhaW5lclNob3dTdGF0dXM6bWVzc2FnZV07CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlND
b2xvciAqKXdlYlBsdWdJbkNvbnRhaW5lclNlbGVjdGlvbkNvbG9yCiB7CiAgICAgYm9vbCBwcmlt
YXJ5ID0gdHJ1ZTsKQEAgLTYwNSw3ICs2MDUsNyBAQCAtICh2b2lkKXBsdWdpblZpZXdGaW5pc2hl
ZExvYWRpbmc6KE5TVmllCiAKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0tpbmRPZkNsYXNzKGlkIG9iamVjdCwgTlNT
dHJpbmcgKmNsYXNzTmFtZSkKIHsKICAgICBDbGFzcyBjbHMgPSBOU0NsYXNzRnJvbVN0cmluZyhj
bGFzc05hbWUpOwpAQCAtNjk1LDQgKzY5NSw0IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICAg
ICAgaGFzSW5zdGFsbGVkRmxpcDRNYWNQbHVnSW5Xb3JrYXJvdW5kID0gdHJ1ZTsKICAgICB9CiB9
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJh
c2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQ
bHVnaW5EYXRhYmFzZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NT
UEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYlVJS2l0U3VwcG9ydC5oIgogI2Vu
ZGlmCiAKQEAgLTM4Niw3ICszODYsNyBAQCAtICh2b2lkKWRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5j
ZVZpZXdzCiAKICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBQbHVnLWlucyBhcmUg
Zm91bmQgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZS4KICAgICAvLyBJZiB0aGVyZSBhcmUgZHVwbGlj
YXRlcywgdGhlIGZpcnN0IGZvdW5kIHBsdWctaW4gaXMgdXNlZC4KICAgICAvLyBGb3IgZXhhbXBs
ZSwgaWYgdGhlcmUgaXMgYSBRdWlja1RpbWUucGx1Z2luIGluIHRoZSB1c2VycydzIGhvbWUgZGly
ZWN0b3J5CkBAIC0zOTksNyArMzk5LDcgQEAgKyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0
aHMKICAgICAgICAgbmlsXTsKICNlbHNlCiAgICAgLy8gaU9TIHBsdWctaW5zIGFyZSBhbGwgbG9j
YXRlZCBpbiAvU3lzdGVtL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMKLSNpZiAhUExBVEZPUk0o
SU9TX1NJTVVMQVRPUikKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAg
TlNBcnJheSAqc3lzdGVtTGlicmFyeSA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21h
aW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNTeXN0ZW1Eb21haW5NYXNrLCBZRVMpOwogICAgIGlm
ICghc3lzdGVtTGlicmFyeSB8fCBbc3lzdGVtTGlicmFyeSBjb3VudF0gPT0gMCkKICAgICAgICAg
cmV0dXJuIG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1
Z2luUGFja2FnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYlBsdWdpblBhY2thZ2UubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luUGFja2FnZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQCAtIChpZClpbml0V2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU0ZpbGVIYW5kbGUgKmV4ZWN1dGFibGVGaWxlID0gW05TRmls
ZUhhbmRsZSBmaWxlSGFuZGxlRm9yUmVhZGluZ0F0UGF0aDpbbnNCdW5kbGUgZXhlY3V0YWJsZVBh
dGhdXTsKICAgICBOU0RhdGEgKmRhdGEgPSBbZXhlY3V0YWJsZUZpbGUgcmVhZERhdGFPZkxlbmd0
aDo1MTJdOwogICAgIFtleGVjdXRhYmxlRmlsZSBjbG9zZUZpbGVdOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgLSAoQk9PTClfaG9z
dHNMYXllcnNJbldpbmRvd1NlcnZlcjsKIAogKyAodm9pZClpbml0aWFsaXplCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFp
blRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1h
bmFnZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBACiAjaW1wb3J0ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViRGF0YWJhc2VN
YW5hZ2VySW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KQEAgLTU4LDcgKzU4LDcgQEAgTlNTdHJp
bmcgKldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aQogTlNTdHJpbmcgKldlYkRhdGFiYXNl
RGlkTW9kaWZ5RGF0YWJhc2VOb3RpZmljYXRpb24gPSBAIldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0
YWJhc2VOb3RpZmljYXRpb24iOwogTlNTdHJpbmcgKldlYkRhdGFiYXNlSWRlbnRpZmllcktleSA9
IEAiV2ViRGF0YWJhc2VJZGVudGlmaWVyS2V5IjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogQ0ZTdHJpbmdSZWYgV2ViRGF0YWJhc2VPcmlnaW5zRGlkQ2hh
bmdlTm90aWZpY2F0aW9uID0gQ0ZTVFIoIldlYkRhdGFiYXNlT3JpZ2luc0RpZENoYW5nZU5vdGlm
aWNhdGlvbiIpOwogI2VuZGlmCiAKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChOU0RpY3Rpb25hcnkg
KilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TCiAtICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogewog
ICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlQWxsRGF0YWJhc2VzSW1tZWRp
YXRlbHkoKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSByZW1vdmVkIG9uY2UgRGF0YWJhc2VUcmFja2Vy
cyBpbiBtdWx0aXBsZSBwcm9jZXNzZXMKICAgICAvLyBhcmUgaW4gc3luYzogPHJkYXI6Ly9wcm9i
bGVtLzk1Njc1MDA+IFJlbW92ZSBXZWJzaXRlIERhdGEgcGFuZSBpcyBub3Qga2VwdCBpbiBzeW5j
IHdpdGggU2FmYXJpCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJ
dGVtQXRQYXRoOmRhdGFiYXNlc0RpcmVjdG9yeVBhdGgoKSBlcnJvcjpOVUxMXTsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCAtICh2b2lkKWRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZXMKICNlbmRpZgogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBi
b29sIGlzRmlsZUhpZGRlbihOU1N0cmluZyAqZmlsZSkKIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCAr
ICh2b2lkKXNjaGVkdWxlRW1wdHlEYXRhYmFzZVJlbW92YWwKICAgICB9KTsKIH0KIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAZW5k
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERp
ZE1vZGlmeU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikgZmlu
YWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIGRpc3BhdGNoRGlkQWRkTmV3T3JpZ2luKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZERlbGV0ZURhdGFiYXNlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZERlbGV0ZURhdGFi
YXNlT3JpZ2luKCkgZmluYWw7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRhdGFiYXNlT3JpZ2luc0RpZENoYW5nZSgp
OwogCiAgICAgYm9vbCBtX2lzSGFuZGxpbmdOZXdEYXRhYmFzZU9yaWdpbk5vdGlmaWNhdGlvbiB7
IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRp
YyBjb25zdCBDRlN0cmluZ1JlZiBXZWJEYXRhYmFzZU9yaWdpbldhc0FkZGVkTm90aWZpY2F0aW9u
ID0gQ0ZTVFIoImNvbS5hcHBsZS5Nb2JpbGVTYWZhcmlTZXR0aW5ncy5XZWJEYXRhYmFzZU9yaWdp
bldhc0FkZGVkTm90aWZpY2F0aW9uIik7CiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgV2ViRGF0
YWJhc2VXYXNEZWxldGVkTm90aWZpY2F0aW9uID0gQ0ZTVFIoImNvbS5hcHBsZS5Nb2JpbGVTYWZh
cmlTZXR0aW5ncy5XZWJEYXRhYmFzZVdhc0RlbGV0ZWROb3RpZmljYXRpb24iKTsKIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBXZWJEYXRhYmFzZU9yaWdpbldhc0RlbGV0ZWROb3RpZmljYXRpb24g
PSBDRlNUUigiY29tLmFwcGxlLk1vYmlsZVNhZmFyaVNldHRpbmdzLldlYkRhdGFiYXNlT3JpZ2lu
V2FzRGVsZXRlZE5vdGlmaWNhdGlvbiIpOwpAQCAtNTAsNyArNTAsNyBAQCBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQqIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKIH0K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIHZv
aWQgb25OZXdEYXRhYmFzZU9yaWdpbkFkZGVkKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lk
KiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCiB7
CiAgICAgQVNTRVJUKG9ic2VydmVyKTsKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgb25E
YXRhYmFzZU9yaWdpbkRlbGV0ZWQoQ0ZObwogCiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6Oldl
YkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0gQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXREYXJ3aW5Ob3RpZnlDZW50ZXIoKTsgCiAgICAgQ0ZOb3RpZmlj
YXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIHRoaXMsIG9uTmV3RGF0YWJhc2VPcmlnaW5B
ZGRlZCwgV2ViRGF0YWJhc2VPcmlnaW5XYXNBZGRlZE5vdGlmaWNhdGlvbiwgMCwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwogICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCB0aGlzLCBvbkRhdGFiYXNlRGVsZXRlZCwg
V2ViRGF0YWJhc2VXYXNEZWxldGVkTm90aWZpY2F0aW9uLCAwLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CkBAIC04OCw3ICs4OCw3IEBAIFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW4KIAogV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92
ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIHRo
aXMsIDAsIDApOwogI2VuZGlmCiB9CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRh
YmFzZU5vdGlmaWNhdGlvbiBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkgdXNlckluZm86
dXNlckluZm8uZ2V0KCldOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZEFk
ZE5ld09yaWdpbigpCiB7ICAgIApAQCAtMjEzLDQgKzIxMyw0IEBAIHZvaWQgV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50OjpkYXRhYmFzZU8KICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclBvc3ROb3Rp
ZmljYXRpb24oQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCBXZWJEYXRhYmFz
ZU9yaWdpbnNEaWRDaGFuZ2VOb3RpZmljYXRpb24sIDAsIDAsIHRydWUpOwogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFn
ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAg
LSAoTlNBcnJheSAqKW9yaWdpbnMKIC0gKHZvaWQpZGVsZXRlQWxsT3JpZ2lucwogewogICAgIFdl
YktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxPcmlnaW5zKCk7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRo
aXMgbmVlZHMgdG8gYmUgcmVtb3ZlZCBvbmNlIFN0b3JhZ2VUcmFja2VycyBpbiBtdWx0aXBsZSBw
cm9jZXNzZXMKICAgICAvLyBhcmUgaW4gc3luYzogPHJkYXI6Ly9wcm9ibGVtLzk1Njc1MDA+IFJl
bW92ZSBXZWJzaXRlIERhdGEgcGFuZSBpcyBub3Qga2VwdCBpbiBzeW5jIHdpdGggU2FmYXJpCiAg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOltXZWJT
dG9yYWdlTWFuYWdlciBfc3RvcmFnZURpcmVjdG9yeVBhdGhdIGVycm9yOk5VTExdOwpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKICAg
ICBhdXRvICpzdG9yYWdlUGF0aCA9IFtXZWJTdG9yYWdlTWFuYWdlciBfc3RvcmFnZURpcmVjdG9y
eVBhdGhdOwogICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHN0
b3JhZ2VQYXRoLCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU3RvcmFnZVRyYWNr
ZXJDbGllbnQoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFNES1ZlcnNpb246OkZpcnN0VG9FeGNsdWRlTG9j
YWxTdG9yYWdlRnJvbUJhY2t1cCkpCiAgICAgICAgIFtbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0
b3JhZ2VQYXRoXSBzZXRSZXNvdXJjZVZhbHVlOkBZRVMgZm9yS2V5Ok5TVVJMSXNFeGNsdWRlZEZy
b21CYWNrdXBLZXkgZXJyb3I6bmlsXTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSwxMSArNDksMTEgQEAgcHVibGljOgogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNl
bmRpZgogcHJpdmF0ZToKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigidW51c2VkLXByaXZhdGUtZmllbGQiKQog
I2VuZGlmCiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogI2VuZGlmCiAj
aWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hl
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBcHBsaWNhdGlvbkNhY2hlCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBOU1N0
cmluZyAqb3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyOwogCiAvLyBGSVhNRTogVGhpcyB3aWxsIGJl
IHJlbW92ZWQgd2hlbiBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vz
c2FyeSgpCkBAIC02NSw3ICs2NSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVu
dGlmaWVyOigKIAogc3RhdGljIE5TU3RyaW5nICphcHBsaWNhdGlvbkNhY2hlQnVuZGxlSWRlbnRp
ZmllcigpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKG92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIG92ZXJyaWRl
QnVuZGxlSWRlbnRpZmllcjsKICAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9i
aWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29y
ZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25z
dCBmaW5hbDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29u
c3QgZmluYWw7CiAjZW5kaWYKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29u
TG9hZGVyJikgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6Okljb24+IGNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSBvdmVycmlkZTsKIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgZmluYWw7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRk
ZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgZmluYWw7CiAjZW5kaWYKQEAgLTE2MCw3ICsxNjAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBs
b2FkKGNvbnN0IFN0cmluZyYgcGF0aCwgU3RyaW5nICZnZW5lcmF0ZWRGaWxlbmFtZSkgZmluYWw7
CiAgICAgU3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkg
ZmluYWw7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsKICNlbmRp
ZgpAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWaWRlb1RyaWdnZXIg
fAogICAgICAgICAgICAgUGx1Z2luVHJpZ2dlcnwgCiAgICAgICAgICAgICBDYW52YXNUcmlnZ2Vy
IHwKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
ICAgIEFuaW1hdGVkT3BhY2l0eVRyaWdnZXIgfCAvLyBBbGxvdyBvcGFjaXR5IGFuaW1hdGlvbnMg
dG8gdHJpZ2dlciBjb21wb3NpdGluZyBtb2RlIGZvciBpT1M6IDxyZGFyOi8vcHJvYmxlbS83ODMw
Njc3PgogI2VuZGlmCiAgICAgICAgICAgICBBbmltYXRpb25UcmlnZ2VyKTsKQEAgLTIyMCw3ICsy
MjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhi
b29sIGlzVGV4dE9ubHkpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRk
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgLypjb250ZXh0SWQqLykgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50NjRfdCAvKmNv
bnRleHRJZCovKSBmaW5hbDsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcih1aW50
NjRfdCAvKmNvbnRleHRJZCovLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFz
VmlkZW8gKi8pIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBACiAjaW1wb3J0ICJOZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5B
QkxFKEdFT0xPQ0FUSU9OKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShHRU9M
T0NBVElPTikKICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KICNlbmRpZgogCkBAIC0x
MDIsNyArMTAyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUG9pbnRlckxvY2tDb250cm9sbGVyLmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViQ29yZS9XQUtDbGlwVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5k
b3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTEyOSw3
ICsxMjksNyBAQCBOU1N0cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VXYXJuaW5nTWVzc2FnCiBOU1N0
cmluZyAqV2ViQ29uc29sZU1lc3NhZ2VFcnJvck1lc3NhZ2VMZXZlbCA9IEAiRXJyb3JNZXNzYWdl
TGV2ZWwiOwogCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChXZWJOU0FwcGxpY2F0aW9uRGV0YWlscykKIC0g
KE5TQ3Vyc29yICopX2N1cnNvclJlY3RDdXJzb3I7CiBAZW5kCkBAIC0xNjIsNyArMTYyLDcgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNocm9tZURlc3Ryb3llZCgpCiAKIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TUmVjdCB3aW5kb3dS
ZWN0ID0gdG9EZXZpY2VTcGFjZShyZWN0LCBbbV93ZWJWaWV3IHdpbmRvd10pOwogICAgIFtbbV93
ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzZXRGcmFtZTp3
aW5kb3dSZWN0XTsKICNlbmRpZgpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpzZXRXaW5kb3dSZWN0KGNvbnMKIAogRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2lu
ZG93UmVjdCgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3RnJhbWU6bV93ZWJWaWV3XTsKICAgICByZXR1cm4gdG9Vc2VyU3BhY2Uod2lu
ZG93UmVjdCwgW21fd2ViVmlldyB3aW5kb3ddKTsKICNlbHNlCkBAIC0yMDMsNyArMjAzLDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhGb2N1cwogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6dGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSB7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIHRyeWlu
ZyB0byBtb3ZlIGZvY3VzIG91dCBvZiBtX3dlYlZpZXcsIGFuZCBiZWNhdXNlCiAgICAgICAgIC8v
IG1fd2ViVmlldyBtYXkgY29udGFpbiBzdWJ2aWV3cyB3aXRoaW4gaXQsIHdlIGFzayBpdCBmb3Ig
dGhlIG5leHQga2V5CkBAIC00MjUsNyArNDI1LDcgQEAgaW5saW5lIHN0YXRpYyBOU1N0cmluZyAq
c3RyaW5nRm9yTWVzc2FnZQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZCBkZWxlZ2F0ZSA9IFttX3dlYlZpZXcgVUlEZWxlZ2F0
ZV07CiAjZWxzZQogICAgIGlmICghW21fd2ViVmlldyBfYWxsb3dzTWVzc2FnaW5nXSkKQEAgLTQ2
MSw3ICs0NjEsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sCiAg
ICAgICAgIHN0cmluZ0Zvck1lc3NhZ2VMZXZlbChsZXZlbCksIEAiTWVzc2FnZUxldmVsIiwKICAg
ICAgICAgTlVMTF07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBbW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGFzeW5jRm9yd2Fy
ZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOmRpY3Rpb25hcnkgd2l0
aFNvdXJjZTptZXNzYWdlU291cmNlXTsKICNlbHNlCiAgICAgaWYgKHJlc3BvbmRzVG9OZXdTZWxl
Y3RvcikKQEAgLTU5OSw3ICs1OTksNyBAQCBJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZp
ZXdUb1NjcmVlCiAgICAgcmV0dXJuIHI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0
eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHA7CkBAIC03OTEsNyArNzkxLDcgQEAgUmVmUHRyPEljb24+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlSWNvbgogICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKTsK
IH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJz
b3IpCiB7CkBAIC04NTEsMTQgKzg1MSwxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6bWFrZUZp
cnN0UmVzcG9uZGVyCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbmFibGVTdWRkZW5UZXJtaW5h
dGlvbigpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
XTsKICNlbmRpZgogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzYWJsZVN1ZGRlblRlcm1p
bmF0aW9uKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZGlzYWJsZVN1ZGRlblRlcm1pbmF0
aW9uXTsKICNlbmRpZgogfQpAQCAtODc3LDcgKzg3Nyw3IEBAIFN0cmluZyBXZWJDaHJvbWVDbGll
bnQ6OmdlbmVyYXRlUmVwbGFjZW0KICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVG
b3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOnBhdGhd
OwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmZvcm1EaWRGb2N1c05vZGU6KSwga2l0KCZlbGVtZW50KSk7CkBAIC05MDEsNyArOTAxLDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1BbGlnbm1lbgogCiBSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQmIGNsaWVudCkgY29uc3QKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvcHVwTWVu
dU1hYygmY2xpZW50KSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTEwLDcgKzkx
MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWUKIAogUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50JiBjbGllbnQpIGNvbnN0CiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZWFyY2hQb3B1cE1lbnVNYWMoJmNsaWVudCkpOwogI2Vsc2UKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51PiBXZWJDaHJvCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRQYWludEVudGly
ZUNvbnRlbnRzKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIE5TVmlldyAqZG9jdW1lbnRW
aWV3ID0gW1tbbV93ZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwpA
QCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0
aW4KIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIURlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5nczo6YXZLaXRFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpA
QCAtMTAyNyw3ICsxMDI3LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNj
cmVlbgogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQ6d2l0aEtleWJvYXJkOik7CiAgICAgaWYgKFtbbV93ZWJWaWV3IFVJRGVs
ZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBDYWxs
VUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oZmFsc2UsIG1fd2ViVmlldywgc2VsZWN0b3IsIGtp
dChjb25zdF9jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPigmZWxlbWVudCkpLCB3aXRoS2V5Ym9hcmQp
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0
dXJuIFttX3dlYlZpZXcgX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6Y29uc3RfY2FzdDxX
ZWJDb3JlOjpFbGVtZW50Kj4oJmVsZW1lbnQpIHdpdGhLZXlib2FyZDp3aXRoS2V5Ym9hcmRdOwog
I2Vsc2UKICAgICByZXR1cm4gTk87CkBAIC0xMDQyLDcgKzEwNDIsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yCiAgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2Vi
Vmlldywgc2VsZWN0b3IsIGtpdCgmZWxlbWVudCksIGxpc3RlbmVyKTsKICAgICAgICAgW2xpc3Rl
bmVyIHJlbGVhc2VdOwogICAgIH0KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGVsc2UKICAgICAgICAgW21fd2ViVmlldyBfZW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudDomZWxlbWVudF07CiAjZW5kaWYKQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckUKICAgICAgICAgQ2FsbFVJRGVsZWdh
dGUobV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5lcik7CiAgICAgICAg
IFtsaXN0ZW5lciByZWxlYXNlXTsKICAgICB9Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCiAgICAgICAgIFttX3dlYlZpZXcgX2V4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudDplbGVtZW50XTsKICNlbmRpZgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aQogCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1
aW50NjRfdCBjb250ZXh0SWQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKQEAgLTI3
OCw0ICsyNzgsNCBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lCiAg
ICAgfQogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0kKIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50
KCkKIHsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRl
RWRpdERyYWcoCiAgICAgW21fd2ViVmlldyBfZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9u
XTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkg
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV0FLQXBwS2l0U3R1YnMuaD4KICNlbmRp
ZgogCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsKICAgICB2b2lkIG92ZXJmbG93U2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKCkgZmluYWwgeyB9OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzdGFydERlbGF5aW5nQW5kQ29hbGVzY2lu
Z0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wRGVsYXlp
bmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKICAgICBi
b29sIGhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkgZmluYWw7CkBAIC0xNzgsNyArMTc4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyB7IGZhbHNlIH07
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IG1fdGV4dENoZWNraW5n
UmVxdWVzdDsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgbV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzRGVsYXllZENvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb24geyBmYWxzZSB9
OwogI2VuZGlmCkBAIC0yMTksNyArMjE5LDcgQEAgaW5saW5lIFdlYkNvcmU6OkVBZmZpbml0eSBj
b3JlKE5TU2VsZWN0aQogICAgIHJldHVybiBXZWJDb3JlOjpFQWZmaW5pdHk6OlVQU1RSRUFNOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGlubGlu
ZSBib29sIFdlYkVkaXRvckNsaWVudDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1w
b3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkZyYW1lVmlldy5oIgpAQCAt
MTAwLDEzICsxMDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNTcGVsbENoZWNrZXJEZXRh
aWxzKQogLSAoTlNTdHJpbmcgKilsYW5ndWFnZUZvcldvcmRSYW5nZTooTlNSYW5nZSlyYW5nZSBp
blN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilv
cnRob2dyYXBoeTsKIEBlbmQKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApCisjaWYgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTAxMzAwKQogQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKFdlYk5TQXR0cmlidXRlZFN0
cmluZ0RldGFpbHMpCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJvbVJhbmdl
OihOU1JhbmdlKXJhbmdlIGRvY3VtZW50OihET01Eb2N1bWVudCAqKWRvY3VtZW50IGRvY3VtZW50
QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBzdWJyZXNvdXJjZXM6KE5TQXJy
YXkgKiopc3VicmVzb3VyY2VzOwogQGVuZApAQCAtMTM4LDcgKzEzOCw3IEBAIC0gKFVuZG9TdGVw
JilzdGVwOwogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUNvbnRpbnVvdXNTcAogICAgIFttX3dlYlZpZXcgdG9n
Z2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc6bmlsXTsKIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKQogewpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFMKIAogc3RhdGljIHZvaWQgdXBkYXRlRm9udFBh
bmVsKFdlYlZpZXcgKndlYlZpZXcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnZpZXcgPSBbW1t3
ZWJWaWV3IHNlbGVjdGVkRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBpZiAo
W3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAgICAgICAgWyhXZWJI
VE1MVmlldyAqKXZpZXcgX3VwZGF0ZUZvbnRQYW5lbF07CkBAIC0zMTQsMTQgKzMxNCwxNCBAQCBi
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0CiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpkaWRCZWdpbkVkaXRpbmcoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0
aW9uIG9iamVjdDptX3dlYlZpZXddOwogI2Vsc2UKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0
aW9uKFdlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24sIG1fd2ViVmlldywgbmlsKTsK
ICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRl
bnRDaGFuZ2VOb3RpZmljYXRpb25zKCkKIHsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6c3RvcERlbGF5aW5nQW5kQ29hCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkKIHsKICAgICB1cGRhdGVGb250UGFuZWwobV93ZWJWaWV3
KTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bV93ZWJWaWV3XTsgICAgCiAjZWxz
ZQogICAgIGlmIChtX2RlbGF5aW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMpIHsKQEAgLTM2
Niw3ICszNjYsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlCiAg
ICAgICAgIG1fbGFzdEVkaXRvclN0YXRlV2FzQ29udGVudEVkaXRhYmxlID0gWyhXZWJIVE1MVmll
dyAqKWRvY3VtZW50VmlldyBfaXNFZGl0YWJsZV0gPyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRh
YmxlOjpZZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpObzsKICAgICB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1F
OiBUaGlzIHF1aXJrIGlzIG5lZWRlZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzUwMDk2MjU+IC0g
V2UgY2FuIHBoYXNlIGl0IG91dCBvbmNlIEFwZXJ0dXJlIGNhbiBhZG9wdCB0aGUgbmV3IGJlaGF2
aW9yIG9uIHRoZWlyIGVuZAogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9G
SVJTVF9WRVJTSU9OX1dJVEhPVVRfQVBFUlRVUkVfUVVJUkspICYmIFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5BcGVy
dHVyZSJdKQogICAgICAgICByZXR1cm47CkBAIC0zOTIsMTQgKzM5MiwxNCBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlzY2FyZGVkQ29tcG9zaXRpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
YW5jZWxlZENvbXBvc2l0aW9uKCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFtbTlNUZXh0SW5wdXRDb250ZXh0IGN1cnJlbnRJbnB1dENvbnRl
eHRdIGRpc2NhcmRNYXJrZWRUZXh0XTsKICNlbmRpZgogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6ZGlkRW5kRWRpdGluZygpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uIG9iamVj
dDptX3dlYlZpZXddOwogI2Vsc2UKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZp
ZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIG5pbCk7CkBAIC00MDgsNyAr
NDA4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdl
YkVkaXRvckNsaWVudDo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttX3dlYlZpZXcg
X2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQ6W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF1dOwogI2Vu
ZGlmCiB9CkBAIC00MjksNyArNDI5LDcgQEAgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6cmVwbGFj
ZW1lbnRVUkxGbwogICAgIHJldHVybiB7IH07CiB9CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKQogCiAvLyBGSVhNRTogUmVtb3ZlIGJvdGggdGhpcyBzdHViIGFuZCB0
aGUgcmVhbCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cgb25jZSB3ZSBkb24ndCBuZWVk
IHRoZSByZWFsIHZlcnNpb24gb24gYW55IHN1cHBvcnRlZCBwbGF0Zm9ybS4KIC8vIFRoaXMgc3R1
YiBpcyBub3QgdXNlZCBvdXRzaWRlIFdlYktpdCwgYnV0IGl0J3MgaGVyZSBzbyB3ZSB3b24ndCBn
ZXQgYSBsaW5rZXIgZXJyb3IuCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIE5TRGljdGlvbmFy
eSAqYXR0cmlidXRlc0ZvckF0dHJpYgogICAgICAgICBbZXhjbHVkZWRFbGVtZW50cyBhZGRPYmpl
Y3Q6QCJvYmplY3QiXTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgTlNFeGNsdWRlZEVsZW1l
bnRzRG9jdW1lbnRBdHRyaWJ1dGUgPSBAIkV4Y2x1ZGVkRWxlbWVudHMiOwogI2VuZGlmCiAKQEAg
LTQ5NCw3ICs0OTQsNyBAQCB2b2lkIF9XZWJDcmVhdGVGcmFnbWVudChEb2N1bWVudCYgZG9jdW1l
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBwYXN0ZWJvYXJk
TmFtZS5pc0VtcHR5KCkgPyBuaWwgOiBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpw
YXN0ZWJvYXJkTmFtZV07CiAgICAgW21fd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpw
YXN0ZWJvYXJkXTsKICNlbmRpZgpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpyZWdpc3RlclVuZG9PclJlZG8KIHsKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdl
ciA9IFttX3dlYlZpZXcgdW5kb01hbmFnZXJdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2hpbGUgd2UgYXJlIHVuZG9pbmcsIHdlIHNob3Vs
ZG4ndCBiZSBhc2tlZCB0byByZWdpc3RlciBhbm90aGVyIFVuZG8gb3BlcmF0aW9uLCB3ZSBzaG91
bGRuJ3QgZXZlbiBiZSB0b3VjaGluZyB0aGUgRE9NLgogICAgIC8vIEJ1dCBqdXN0IGluIGNhc2Ug
dGhpcyBoYXBwZW5zLCByZXR1cm4gdG8gYXZvaWQgcHV0dGluZyB0aGUgdW5kbyBtYW5hZ2VyIGlu
dG8gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgogICAgIC8vIFNhbWUgZm9yIGJlaW5nIGFza2VkIHRv
IHJlZ2lzdGVyIGEgUmVkbyBvcGVyYXRpb24gaW4gdGhlIG1pZHN0IG9mIGFub3RoZXIgUmVkby4K
QEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVkbygpCiB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkK
IHsKICAgICBhdXRvKiBmcmFtZSA9IGRvd25jYXN0PE5vZGU+KGV2ZW50LT50YXJnZXQoKSktPmRv
Y3VtZW50KCkuZnJhbWUoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYkhUTUxWaWV3ICp3ZWJIVE1MVmlldyA9IChXZWJIVE1MVmlldyAqKVtb
a2l0KGZyYW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgaWYgKFt3ZWJIVE1MVmll
dyBfaW50ZXJwcmV0S2V5RXZlbnQ6ZXZlbnQgc2F2aW5nQ29tbWFuZHM6Tk9dKQogICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKQEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVuCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpo
YW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU3dp
dGNoIHRvIFdlYktpdDIgbW9kZWwsIGludGVycHJldGluZyB0aGUgZXZlbnQgYmVmb3JlIGl0J3Mg
c2VudCBkb3duIHRvIFdlYkNvcmUuCiAgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxOb2RlPihl
dmVudC0+dGFyZ2V0KCkpLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgV2ViSFRNTFZpZXcgKndl
YkhUTUxWaWV3ID0gKFdlYkhUTUxWaWV3ICopW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9jdW1l
bnRWaWV3XTsKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERp
ZENoYW5nZUluVGV4CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKCFVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1Vz
ZXJUeXBpbmdHZXN0dXJlKCkgfHwgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6OmZvY3VzZWRF
bGVtZW50QXRHZXN0dXJlU3RhcnQoKSAhPSBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5n
ZUluVGV4CiAgICAgQ2FsbEZvcm1EZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih0ZXh0RGlk
Q2hhbmdlSW5UZXh0QXJlYTppbkZyYW1lOiksIHRleHRBcmVhRWxlbWVudCwga2l0KGVsZW1lbnQt
PmRvY3VtZW50KCkuZnJhbWUoKSkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpoYXNSaWNobHlFZGl0YWJs
ZVNlbGVjdGlvbigpCiB7CkBAIC05NTQsOSArOTU0LDkgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gV2ViRWRpdG9yQ2xpZQogICAgIHJldHVybiByZXN1bHRzOwogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBib29sIFdlYkVkaXRvckNs
aWVudDo6cGVyZm9ybVR3b1N0ZXBEcm9wKERvY3VtZW50RnJhZ21lbnQmLCBSYW5nZSYsIGJvb2wp
CiB7CkBAIC0xMTg0LDcgKzExODQsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nl
c0ZvcldvcmQoCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxTZXRJ
bnB1dE1ldGhvZFN0YXRlKCkKIHsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV2ViRWRpdG9y
U3BlbGxDaGVja1Jlc3BvbmRlciA6IE5TT2JqZWN0CiB7CkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGluCiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNT
RVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdCA9
ICZyZXF1ZXN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIz
NzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikg
ZmluYWw7CiAgICAgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IGZpbmFsOwotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgZm9yY2VMYXlvdXRPblJl
c3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIGZvcmNlTGF5b3V0
Rm9yTm9uSFRNTCgpIGZpbmFsOwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlJikgZmluYWw7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Q
cm9wZXJ0aWVzKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKSBmaW5hbDsKICNlbmRpZgogCkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZy
YW1lKikgZmluYWw7CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJh
bWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBmaW5hbDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZv
ckNhY2hlZEZyYW1lKCkgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHNob3VsZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcsNyArMTM3LDcgQEAKICNpbXBvcnQgIldlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XQUtDbGlwVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtTY3JvbGxWaWV3Lmg+
CkBAIC0xNjUsNyArMTY1LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogQGludGVyZmFjZSBXZWJIVE1MVmlldyAoSW5pdCkKIC0gKGlkKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZTsKIEBlbmQKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpCiAgICAgcmV0dXJuIFt2aWV3IGlzS2luZE9mQ2xh
c3M6W1dlYkhUTUxWaWV3IGNsYXNzXV07CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0
T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+
ICp2aWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgZG9jdW1lbnRWaWV3
XTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hl
ZEZyb21QCiB7CiAgICAgLy9yZW1vdmUgYW55IE5ldFNjYXBlIHBsdWdpbnMgdGhhdCBhcmUgY2hp
bGRyZW4gb2YgdGhpcyBmcmFtZSBiZWNhdXNlIHRoZXkgYXJlIGFib3V0IHRvIGJlIGRldGFjaGVk
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmll
dyByZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXdzRm9yOihtX3dlYkZyYW1lLmdldCgpKV07CiAjZW5k
aWYKICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2V0V2ViRnJhbWU6
bmlsXTsgLy8gbmVlZGVkIGZvciBub3cgdG8gYmUgY29tcGF0aWJsZSB3LyBvbGQgYmVoYXZpb3IK
QEAgLTMyOCw3ICszMjgsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZExvCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQo
KSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVu
dGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoaW1wbGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGVGdW5jKSB7CiAgICAgICAgIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2ViVGhyZWFk
KGltcGxlbWVudGF0aW9ucy0+d2ViVGhyZWFkRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6ZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlOnJlc3BvbnNlOmxlbmd0aDpmcm9tRGF0YVNvdXJjZTopLCByZXF1ZXN0
Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpLCByZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCksIGxlbmd0aCwgZGF0YVNvdXJjZShsb2FkZXIpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6YXNzaWduSWRlbnRpZgogCiAgICAgUmV0YWluUHRyPGlkPiBvYmplY3Q7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50
YXRpb25zLT53ZWJUaHJlYWRJZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMpIHsKICAgICAgICAgb2Jq
ZWN0ID0gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoaW1wbGVtZW50YXRpb25z
LT53ZWJUaHJlYWRJZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJUaHJlYWRXZWJWaWV3OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpmcm9tRGF0YVNvdXJj
ZTopLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRU
UEJvZHkpLCBkYXRhU291cmNlKGxvYWRlcikpOwogICAgIH0gZWxzZQpAQCAtMzc5LDcgKzM3OSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICNlbmRpZgogCiAg
ICAgTlNVUkxSZXF1ZXN0ICpuZXdVUkxSZXF1ZXN0ID0gY3VycmVudFVSTFJlcXVlc3Q7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+d2ViVGhyZWFkV2lsbFNlbmRSZXF1ZXN0RnVuYykgewogICAgICAgICBuZXdVUkxS
ZXF1ZXN0ID0gKE5TVVJMUmVxdWVzdCAqKUNhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2ViVGhy
ZWFkKGltcGxlbWVudGF0aW9ucy0+d2ViVGhyZWFkV2lsbFNlbmRSZXF1ZXN0RnVuYywgd2ViVmll
dywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSwgW3dlYlZpZXcgX29iamVjdEZvcklkZW50
aWZpZXI6aWRlbnRpZmllcl0sIGN1cnJlbnRVUkxSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSwgZGF0YVNvdXJjZShsb2FkZXIpKTsKICAgICB9IGVsc2UKQEAgLTQxOCw3
ICs0MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAg
ICAgIH0KICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbd2ViVmlldyBob3N0V2luZG93XSA/IFt3ZWJW
aWV3IGhvc3RXaW5kb3ddIDogW3dlYlZpZXcgd2luZG93XTsKICAgICBbW1dlYlBhbmVsQXV0aGVu
dGljYXRpb25IYW5kbGVyIHNoYXJlZEhhbmRsZXJdIHN0YXJ0QXV0aGVudGljYXRpb246d2ViQ2hh
bGxlbmdlIHdpbmRvdzp3aW5kb3ddOwogI2VuZGlmCkBAIC00NDUsNyArNDQ1LDcgQEAgYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYQogfQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CkBAIC00NzgsNyArNDc4
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYlJlc291
cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50
YXRpb25zLT53ZWJUaHJlYWREaWRSZWNlaXZlUmVzcG9uc2VGdW5jKSB7CiAgICAgICAgIGlmIChp
ZCByZXNvdXJjZSA9IFt3ZWJWaWV3IF9vYmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXJdKQog
ICAgICAgICAgICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoaW1wbGVtZW50
YXRpb25zLT53ZWJUaHJlYWREaWRSZWNlaXZlUmVzcG9uc2VGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVGhyZWFkV2ViVmlldzpyZXNvdXJjZTpkaWRSZWNlaXZlUmVzcG9uc2U6ZnJvbURhdGFT
b3VyY2U6KSwgcmVzb3VyY2UsIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgZGF0YVNvdXJjZShs
b2FkZXIpKTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3
aWxsQ2FjaGVSZXNwCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFt
ZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGlt
cGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0
aW9ucyh3ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZFdpbGxDYWNoZVJlc3BvbnNl
RnVuYykgewogICAgICAgICBpZiAoaWQgcmVzb3VyY2UgPSBbd2ViVmlldyBfb2JqZWN0Rm9ySWRl
bnRpZmllcjppZGVudGlmaWVyXSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndl
YlRocmVhZFdpbGxDYWNoZVJlc3BvbnNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVh
ZFdlYlZpZXc6cmVzb3VyY2U6d2lsbENhY2hlUmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSwgcmVz
b3VyY2UsIHJlc3BvbnNlLCBkYXRhU291cmNlKGxvYWRlcikpKTsKQEAgLTUxNSw3ICs1MTUsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiB7CiAgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3Vy
Y2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdH
ZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaW1wbGVtZW50YXRp
b25zLT53ZWJUaHJlYWREaWRSZWNlaXZlQ29udGVudExlbmd0aEZ1bmMpIHsKICAgICAgICAgaWYg
KGlkIHJlc291cmNlID0gW3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0p
CiAgICAgICAgICAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1l
bnRhdGlvbnMtPndlYlRocmVhZERpZFJlY2VpdmVDb250ZW50TGVuZ3RoRnVuYywgd2ViVmlldywg
QHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3VyY2U6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGg6ZnJvbURhdGFTb3VyY2U6KSwgcmVzb3VyY2UsIChOU0ludGVnZXIpZGF0YUxlbmd0aCwgZGF0
YVNvdXJjZShsb2FkZXIpKTsKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUlt
cGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZERpZEZpbmlz
aExvYWRpbmdGcm9tRGF0YVNvdXJjZUZ1bmMpIHsKICAgICAgICAgaWYgKGlkIHJlc291cmNlID0g
W3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0pCiAgICAgICAgICAgICBD
YWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndlYlRo
cmVhZERpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rv
cih3ZWJUaHJlYWRXZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJj
ZTopLCByZXNvdXJjZSwgZGF0YVNvdXJjZShsb2FkZXIpKTsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNv
dXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMt
PndlYlRocmVhZERpZEZhaWxMb2FkaW5nV2l0aEVycm9yRnJvbURhdGFTb3VyY2VGdW5jKSB7CiAg
ICAgICAgIGlmIChpZCByZXNvdXJjZSA9IFt3ZWJWaWV3IF9vYmplY3RGb3JJZGVudGlmaWVyOmlk
ZW50aWZpZXJdKQogICAgICAgICAgICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJl
YWQoaW1wbGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRGYWlsTG9hZGluZ1dpdGhFcnJvckZyb21E
YXRhU291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlRocmVhZFdlYlZpZXc6cmVzb3Vy
Y2U6ZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6ZnJvbURhdGFTb3VyY2U6KSwgcmVzb3VyY2UsIChO
U0Vycm9yICopZXJyb3IsIGRhdGFTb3VyY2UobG9hZGVyKSk7CkBAIC02MjAsNyArNjIwLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAgIFdlYkZyYW1lTG9h
ZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dl
dEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBs
ZW1lbnRhdGlvbnMtPmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lRnVuYykKICAg
ICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkQ2hhbmdlTG9j
YXRpb25XaXRoaW5QYWdlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpk
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW3dlYlZp
ZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBkaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2VGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogfQpAQCAt
NjYxLDcgKzY2MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbEMK
ICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0
aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3
KTsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT53aWxsQ2xvc2VGcmFtZUZ1bmMpCiAgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPndpbGxDbG9zZUZyYW1lRnVu
Yywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6d2lsbENsb3NlRnJhbWU6KSwgbV93ZWJGcmFt
ZS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW1t3ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgd2ls
bENsb3NlRnJhbWU6bV93ZWJGcmFtZS5nZXQoKV07CiAjZW5kaWYKIH0KQEAgLTY3MiwxMSArNjcy
LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3QKICAgICBtX3dl
YkZyYW1lLT5fcHJpdmF0ZS0+cHJvdmlzaW9uYWxVUkwgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkp
LT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpOwog
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmll
dyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W1t3ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogCkBA
IC03MTAsNyArNzEwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
bwogICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT51cmwgPSBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+
cHJvdmlzaW9uYWxVUkw7CiAgICAgbV93ZWJGcmFtZS0+X3ByaXZhdGUtPnByb3Zpc2lvbmFsVVJM
ID0gbnVsbHB0cjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3
IGRpZENvbW1pdExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsKICNlbmRpZgogICAgIApA
QCAtNzI0LDcgKzcyNCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmEKICAgICBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+cHJvdmlzaW9uYWxVUkwgPSBudWxscHRyOwog
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmll
dyBfZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjplcnJvciBmb3JGcmFtZTptX3dlYkZy
YW1lLmdldCgpXTsKICNlbmRpZgogCkBAIC03NDAsMTQgKzc0MCwxNCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgQVNTRVJUKCFtX3dlYkZyYW1lLT5fcHJp
dmF0ZS0+cHJvdmlzaW9uYWxVUkwpOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZp
ZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfZGlkRmFpbExvYWRXaXRoRXJyb3I6ZXJyb3IgZm9y
RnJhbWU6bV93ZWJGcmFtZS5nZXQoKV07CiAjZW5kaWYKIAogICAgIFdlYkZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1l
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVGdW5jKQogICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmFpbExvYWRXaXRoRXJyb3I6
Zm9yRnJhbWU6KSwgKE5TRXJyb3IgKillcnJvciwgbV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3ZWJWaWV3IF9VSUtp
dERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgZGlkRmFpbExvYWRXaXRoRXJyb3I6
KChOU0Vycm9yICopZXJyb3IpIGZvckZyYW1lOm1fd2ViRnJhbWUuZ2V0KCldOwogI2VuZGlmCiAK
QEAgLTc1OCw3ICs3NTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQo
KSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZCB3ZWJUaHJlYWREZWwgPSBbd2ViVmlldyBfd2ViTWFpbERlbGVnYXRlXTsKICAgICBpZiAoW3dl
YlRocmVhZERlbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJ0aHJlYWRfd2ViVmll
dzpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTopXSkgewogICAgICAgICBbd2ViVGhyZWFk
RGVsIF93ZWJ0aHJlYWRfd2ViVmlldzp3ZWJWaWV3IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lOm1fd2ViRnJhbWUuZ2V0KCldOwpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBBU1NFUlQoIW1fd2ViRnJhbWUtPl9wcml2
YXRlLT5wcm92aXNpb25hbFVSTCk7CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyhtX3dlYkZyYW1lLmdldCgpKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFt3ZWJWaWV3IF9kaWRGaW5pc2hMb2FkRm9yRnJhbWU6bV93ZWJGcmFt
ZS5nZXQoKV07CiAjZWxzZQogICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0g
d2ViVmlldzp3ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JGcmFtZTptX3dlYkZyYW1lLmdldCgpXTsK
QEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7
CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRh
dGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmll
dyk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoaW1wbGVtZW50YXRpb25zLT53ZWJUaHJlYWREaWRMYXlvdXRGdW5jKQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbnMtPndlYlRocmVhZERp
ZExheW91dEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJUaHJlYWRXZWJWaWV3OmRpZExheW91
dDopLCBraXRMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKICNlbHNlCkBAIC04MTIsNyAr
ODEyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAg
ICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJhbWVGdW5jKQogICAgICAg
ICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RMYXlv
dXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RMYXlvdXRJ
bkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZEZpcnN0TGF5b3V0SW5GcmFtZTptX3dlYkZyYW1lLmdl
dCgpXTsKICNlbmRpZgogIApAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpz
Y3JvbGxWaWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZp
ZXddOwogICAgICAgICBpZiAoW2dldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgZHJhd3NCYWNr
Z3JvdW5kXSkKICAgICAgICAgICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpZRVNd
OwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IFtzY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWNdOwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwogI2VuZGlmCkBAIC04MzEsNyAr
ODMxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAg
ICAvLyBkb3VibGUgZHV0eSB3aXRoIHRoZSBuZXcgZGlkTGF5b3V0IEFQSS4KICAgICAgICAgaWYg
KGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1
bmMpCiAgICAgICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5k
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXc6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZTopLCBtX3dl
YkZyYW1lLmdldCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgaWYgKFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFtZS5nZXQoKSkK
ICAgICAgICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6bV93ZWJGcmFtZS5n
ZXQoKV07CiAjZW5kaWYKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzdGFydERvd25sb2FkCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFu
Z2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFNob3VsZCBkbyB0aGlzIG9u
bHkgaW4gbWFpbiBmcmFtZSBjYXNlLCByaWdodD8KICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1l
LmdldCgpKSBfd2lsbENoYW5nZVZhbHVlRm9yS2V5Ol9XZWJNYWluRnJhbWVUaXRsZUtleV07CiAj
ZW5kaWYKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxs
Q2hhbmdlVGl0CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogU2hvdWxkIGRvIHRoaXMgb25seSBpbiBtYWlu
IGZyYW1lIGNhc2UsIHJpZ2h0PwogICAgIFtnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpIF9k
aWRDaGFuZ2VWYWx1ZUZvcktleTpfV2ViTWFpbkZyYW1lVGl0bGVLZXldOwogI2VuZGlmCkBAIC0x
MDAzLDcgKzEwMDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRs
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoRnJhbWVWaWV3ICp2aWV3ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+dmlldygpKQogICAg
ICAgICB2aWV3LT5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwogI2VuZGlmCkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxICiB7
CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJMKCkpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkQ29tcAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIExldCBVSUtpdCBoYW5kbGUg
dGhlIHNjcm9sbCBwb2ludCBmb3IgdGhlIG1haW4gZnJhbWUuCiAgICAgV2ViRnJhbWUgKndlYkZy
YW1lID0gbV93ZWJGcmFtZS5nZXQoKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyh3ZWJGcmFtZSk7ICAgCkBAIC0xMjU5LDcgKzEyNTksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpyZXN0b3JlVmlld1N0CiAgICAgaWYgKCFjdXJyZW50SXRlbSkKICAgICAgICAgcmV0
dXJuOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gTGV0IFVJS2l0IGhhbmRsZSB0aGUgc2Nyb2xsIHBvaW50IGZvciB0aGUgbWFpbiBmcmFtZS4K
ICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBtX3dlYkZyYW1lLmdldCgpOwogICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBnZXRXZWJWaWV3KHdlYkZyYW1lKTsgICAKQEAgLTEyOTEsNyArMTI5MSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG8KIAogICAgIFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsVmlldyA9IFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2Vi
RnJhbWVWaWV3IF9zY3JvbGxWaWV3XTsKICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91
bmQ6Tk9dOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW3Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3Rp
Y2l0eU5vbmVdOwogICAgIFtzY3JvbGxWaWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5
Ok5TU2Nyb2xsRWxhc3RpY2l0eU5vbmVdOwogI2VuZGlmCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgd29yayB0aGF0IGlzIHRyaWdnZXJlZCBieSBy
ZXNpZ25pbmcgZmlyc3QgcmVwb25kZXIgY2FuIGdldCBkb25lLgogICAgIC8vIFRoZSBtYWluIGV4
YW1wbGUgd2hlcmUgdGhpcyBjYW1lIHVwIGlzIHRoZSB0ZXh0RGlkRW5kRWRpdGluZyB0aGF0IGlz
IHNlbnQgdG8gdGhlCiAgICAgLy8gRm9ybXNEZWxlZ2F0ZSAoMzIyMzQxMykuIFdlIG5lZWQgdG8g
ZG8gdGhpcyBiZWZvcmUgX2RldGFjaENoaWxkcmVuLCBzaW5jZSB0aGF0IHdpbGwKQEAgLTEzNjQs
NyArMTM2NCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBuc1VSTCA9IFtuc1VSTCBfd2Vi
a2l0X2Nhbm9uaWNhbGl6ZV07CiAgICAgaWYoIW5zVVJMKQogICAgICAgICByZXR1cm47Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtbbnNVUkwg
YWJzb2x1dGVTdHJpbmddIGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2F2ZVBsYXRmb3JtRAogewogICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
PihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9wIGFs
bCBwbHVnaW5zLgogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUu
Z2V0KCkpOwogICAgIFt3ZWJWaWV3IF9zdG9wQWxsUGx1Z0luc0ZvclBhZ2VDYWNoZV07CkBAIC0x
MzkwLDcgKzEzOTAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
CiAgICAgQVNTRVJUKGNhY2hlZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsKICAgICBbY2FjaGVk
VmlldyBzZXREYXRhU291cmNlOmRhdGFTb3VyY2UoY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVy
KCkpXTsKICAgICAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIGNsZWFuIHVwIHdlYmtpdCBwbHVnaW4gaW5zdGFuY2VzIGJlZm9yZSBXZWJIVE1M
VmlldyBnZXRzIGZyZWVkLgogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOwogICAgIFt3ZWJWaWV3IHJlbW92ZVBsdWdpbkluc3RhbmNlVmlld3NGb3I6
KG1fd2ViRnJhbWUuZ2V0KCkpXTsKQEAgLTEzOTksNyArMTM5OSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0MKICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndl
YkZyYW1lVmlldyBfc2V0RG9jdW1lbnRWaWV3OmNhY2hlZFZpZXddOwogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpCiB7CiAgICAgLy8g
V2hlbiBlbnRlcmluZyB0aGUgUGFnZUNhY2hlIHRoZSBEb2N1bWVudCBpcyBkZXRhY2hlZCBhbmQg
dGhlIHBsdWdpbiB2aWV3IG1heQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNpdGlvblRvQwogewogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3Vy
Y2UgPSBbbV93ZWJGcmFtZS5nZXQoKSBfZGF0YVNvdXJjZV07CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHdpbGxQcm9kdWNlSFRNTFZpZXc7
CiAgICAgLy8gRmFzdCBwYXRoIHRoYXQgc2tpcHMgaW5pdGlhbGl6YXRpb24gb2Ygb2JqYyBjbGFz
cyBvYmplY3RzLgogICAgIGlmIChbZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5yZXNwb25z
ZU1JTUVUeXBlKCkgPT0gInRleHQvaHRtbCIpCkBAIC0xNDMxLDcgKzE0MzEsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9DCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IERvbid0IHN1cHByZXNzIHNjcm9sbGJhcnMgYmVmb3JlIHRoZSB2aWV3IGNyZWF0aW9uIGlmIHdl
J3JlIG1ha2luZyB0aGUgdmlldyBmb3IgYSBub24tSFRNTCB2aWV3LgogICAgIGlmICghd2lsbFBy
b2R1Y2VIVE1MVmlldykKICAgICAgICAgW1ttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVW
aWV3IF9zY3JvbGxWaWV3XSBzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDpOTyByZXBhaW50T25VbnN1
cHByZXNzOk5PXTsKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0MKICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmll
dyBfaW5zdGFsbF07CiAKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgY29yZVZpZXctPnNldERlbGVnYXRl
c1Njcm9sbGluZyh0cnVlKTsKICNlbmRpZgogICAgICAgICBjb3JlVmlldy0+c2V0UGFyZW50Vmlz
aWJsZSh0cnVlKTsKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFNhdmVUb1BhZ2UKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9y
ZUZyb21QYWdlQ2FjaGUoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0
KCkpOwogICAgIGlmIChbd2ViVmlldyBtYWluRnJhbWVdID09IG1fd2ViRnJhbWUuZ2V0KCkpCiAg
ICAgICAgIFtbd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld0RpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlOndlYlZpZXddOwpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgU3RyaW5nIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoYwogTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxv
YWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIEZvcm1TdGF0ZSogZm9ybVN0YXRlKSBjb25zdAogewogICAgIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MgPSAwOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byBrZXlTdGF0ZUV2ZW50RGF0YSA9IGFjdGlvbi5rZXlTdGF0ZUV2ZW50RGF0YSgp
OwogICAgIGlmIChrZXlTdGF0ZUV2ZW50RGF0YSAmJiBrZXlTdGF0ZUV2ZW50RGF0YS0+aXNUcnVz
dGVkKSB7CiAgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50RGF0YS0+Y3RybEtleSkKQEAgLTE3NzEs
NyArMTc3MSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXQUtWaWV3IChVSUtpdFNlY3JldHNX
ZWJLaXRLbm93c0Fib3V0U2VlVUlXZWJQbHVnSW5WaWV3KQogLSAoUGxhdGZvcm1MYXllciAqKXBs
dWdpbkxheWVyOwogLSAoQk9PTCl3aWxsUHJvdmlkZVBsdWdpbkxheWVyOwpAQCAtMTgxMiw3ICsx
ODEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgW3BsYXRmb3JtV2lkZ2V0KCkgZGV0YWNoUGx1
Z2luTGF5ZXJdOwogICAgIH0KIH07Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
IApAQCAtMTkxMyw3ICsxOTEzLDcgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZQogICAgIGludCBlcnJvckNvZGUgPSAwOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmll
dzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopOwogI2VuZGlmCiAKQEAgLTE5MjYsMTEgKzE5MjYs
MTEgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZQogICAgIC8vIGVt
YmVkcyBpdHMgcGx1Zy1pbi4gVGhpcyBzaXRlLXNwZWNpZmljIGhhY2sgd29ya3MgYXJvdW5kIHRo
ZSBpc3N1ZSBieQogICAgIC8vIGNvbnZlcnRpbmcgdGhlIHBhcmFtZXRlciBuYW1lcyB0byBsb3dl
cmNhc2UgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUKICAgICAvLyBwbHVnLWluLgotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKTsKICNlbmRpZgogICAgIE5TTXV0YWJsZUFycmF5ICph
dHRyaWJ1dGVLZXlzID0ga2l0KHBhcmFtTmFtZXMpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5zZXR0aW5ncygp
Lm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LXNua3AiKSkgewogICAgICAgICBmb3IgKE5TVUlu
dGVnZXIgaSA9IDA7IGkgPCBbYXR0cmlidXRlS2V5cyBjb3VudF07ICsraSkKICAgICAgICAgICAg
IFthdHRyaWJ1dGVLZXlzIHJlcGxhY2VPYmplY3RBdEluZGV4Omkgd2l0aE9iamVjdDpbW2F0dHJp
YnV0ZUtleXMgb2JqZWN0QXRJbmRleDppXSBsb3dlcmNhc2VTdHJpbmddXTsKQEAgLTE5NjksNyAr
MTk2OSw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmUKICAgICAK
ICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gW1twbHVnaW5VUkwgcGF0aF0gcGF0aEV4dGVuc2lv
bl07CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoIXBsdWdpblBhY2thZ2UgJiYgW2V4dGVuc2lvbiBsZW5ndGhdKQogI2Vsc2UKICAgICBpZiAo
IXBsdWdpblBhY2thZ2UgJiYgW2V4dGVuc2lvbiBsZW5ndGhdICYmICFbTUlNRVR5cGUgbGVuZ3Ro
XSkKQEAgLTIwMzUsNyArMjAzNSw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmUKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHZpZXcpOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1
Z2luV2lkZ2V0SU9TKHZpZXcpKTsKICNlbHNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVn
aW5XaWRnZXQodmlldykpOwpAQCAtMjE5OCw3ICsyMTk4LDcgQEAgUmVmPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IFdlYkZyYW1lTG9hZAogICAgIHJldHVybiBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNob3VsZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0IAogewogICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpAQCAtMjMw
MSw3ICsyMzAxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaQog
CiAgICAgQVNTRVJUKCFtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCk7CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdlYktpdCAxLCB3aGlj
aCBvbmx5IHN1cHBvcnRzIG9uZSBpY29uIHBlciBwYWdlIFVSTCwgdHJhZGl0aW9uYWxseSBoYXMg
cHJlZmVycmVkIHRoZSBsYXN0IGljb24gaW4gY2FzZSBvZiBtdWx0aXBsZSBpY29ucyBsaXN0ZWQu
CiAgICAgLy8gVG8gcHJlc2VydmUgdGhhdCBiZWhhdmlvciB3ZSB3YWxrIHRoZSBsaXN0IGJhY2t3
YXJkcy4KICAgICBmb3IgKGF1dG8gaWNvbiA9IGljb25zLnJiZWdpbigpOyBpY29uICE9IGljb25z
LnJlbmQoKTsgKytpY29uKSB7CkBAIC0yMzIwLDcgKzIzMjAsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpCiAjZW5kaWYKIH0KIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFn
ZShJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogewogICAgIEFTU0VSVChzaXplLndpZHRoKTsK
QEAgLTIzNDIsMTEgKzIzNDIsMTEgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdldE5TSW1hZ2UoSW1h
Z2UqIGltYQogICAgIH0KICAgICByZXR1cm4gbnNJbWFnZTsKIH0KLSNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwog
ICAgIEFTU0VSVChjYWxsYmFja0lEID0gbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwogICAg
IG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEID0gMDsKQEAgLTIzNzIsNyArMjM3Miw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGkKIAogKyAodm9pZClpbml0aWFs
aXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBACiAjaW1wb3J0IDxwYWwvU2Vzc2lvbklELmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KICNpbXBvcnQgPFdlYktpdExlZ2Fj
eS9XZWJGcmFtZUxvYWREZWxlZ2F0ZS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BV
cGRhdGluZygpIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5Tb3VyY2Uu
CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAjZWxzZQpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAKICNpbXBvcnQgPFdlYkNvcmUv
R2VvbG9jYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNv
cmUvV0FLUmVzcG9uZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViQ29yZVRocmVhZFJ1
bi5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4K
IHsKICAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKQEAgLTYyLDcgKzYyLDcg
QEAgLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKQogQGVuZAogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZh
Y2UgV2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXIgOiBOU09iamVj
dCA8V2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXI+IHsKIEBwcml2
YXRlCiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwpAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoCiAgICAgW1ttX3dl
YlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHVucmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107
CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIHdhbnRzSGln
aEFjY3VyYWN5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTExMCw3
ICsxMTAsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAKICAg
ICBpZiAoIWZyYW1lKSB7CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBXZWJHZQogICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2Nh
dGlvblByb3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcgogCiAtIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYp
Z2VvbG9jYXRpb24KQEAgLTIzNiw2ICsyMzYsNiBAQCAtICh2b2lkKWluaXRpYWxpemF0aW9uRGVu
aWVkV2ViVmlldzooV2ViCiAgICAgbV9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsK
IH0KIEBlbmQKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24o
KSBvdmVycmlkZTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7
CiAKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2F2ZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzLCBib29sIGJh
c2U2NEVuY29kZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJWaWV3ICptX2luc3BlY3RlZFdlYlZp
ZXc7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IG1fZnJvbnRl
bmRXaW5kb3dDb250cm9sbGVyOwogICAgIFN0cmluZyBtX2luc3BlY3RlZFVSTDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkphdmFTY3JpcHRUZXh0SW5w
dXRQYW5lbC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJKYXZhU2NyaXB0VGV4
dElucHV0UGFuZWwubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLmgiCiAKQEAgLTc0LDQgKzc0
LDQgQEAgLSAoSUJBY3Rpb24pcHJlc3NlZE9LOihpZClzZW5kZXIKIAogQGVuZAogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBAIC0gKHZvaWQpZGVueQogICAgICAg
ICBfY2FsbGJhY2stPmhhbmRsZUV2ZW50KE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6
RGVuaWVkKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCA8V2ViQ29yZS9JY29uLmg+CiAjZW5kaWYKIApAQCAtNzIsNyArNzIsNyBAQCAtICh2b2lkKWNo
b29zZUZpbGVuYW1lczooTlNBcnJheSAqKWZpbGVuCiAgICAgX2Nob29zZXIgPSBudWxscHRyOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZv
aWQpY2hvb3NlRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgZGlzcGxheVN0cmluZzooTlNT
dHJpbmcgKilkaXNwbGF5U3RyaW5nIGljb25JbWFnZTooQ0dJbWFnZVJlZilpbWFnZVJlZgogewpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3Jl
OjpQYXN0ZWJvYXJkU3RyYXRlZ3kKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDcgKzE5OCw3IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbUQK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRh
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5n
ZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlcywgaW5kZXgpOwpAQCAtMjU4LDQg
KzI1OCw0IEBAIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVMKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGluZGV4KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNs
aWVudC5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcHJvZ3Jlc3NUcmFja2Vy
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlk
ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5tbQkocmV2
aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAjaW1wb3J0ICJXZWJGcmFtZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5h
bC5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKIApAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NUCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogdm9pZCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OndpbGxDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcygpCiB7CiAgICAgW21fd2ViVmlldyBfd2lsbENoYW5nZVZhbHVlRm9yS2V5Ol9XZWJF
c3RpbWF0ZWRQcm9ncmVzc0tleV07CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50OjpkaWRDaGFuZ2UKIAogdm9pZCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6
OnByb2dyZXNzU3RhcnRlZChXZWJDb3JlOjpGcmFtZSYgb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1l
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpXZWJWaWV3UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uIG9iamVjdDptX3dlYlZpZXddOwog
I2Vsc2UKICAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc1N0YXJ0
ZWROb3RpZmljYXRpb24sIG1fd2ViVmlldywgbmlsKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBX
ZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ6OnByb2dyZXNzUwogCiB2b2lkIFdlYlByb2dyZXNzVHJh
Y2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJW
aWV3UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om1fd2ViVmlld107
CiAjZWxzZQogICAgIE5TTnVtYmVyICpwcm9ncmVzcyA9IFtOU051bWJlciBudW1iZXJXaXRoRmxv
YXQ6W21fd2ViVmlldyBlc3RpbWF0ZWRQcm9ncmVzc11dOwpAQCAtODcsNyArODcsNyBAQCB2b2lk
IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFCiAKIHZvaWQgV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50Ojpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVmlld1Byb2dyZXNzRmlu
aXNoZWROb3RpZmljYXRpb24gb2JqZWN0Om1fd2ViVmlld107CiAjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRh
KCkuZGF0YWJhc2VJZGVudGlmaWVyKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TU3RyaW5nICopdG9TdHJpbmcKIHsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+dG9TdHJpbmcoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9y
L1dlYk5vZGVIaWdobGlnaHQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTQgKzI2LDE0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5o
PgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dBS0FwcEtpdFN0dWJzLmg+CiAjaW1wb3J0IDxXZWJL
aXRMZWdhY3kvV0FLVmlldy5oPgogI2VuZGlmCiAKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0Vmll
dzsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBX
ZWJWaWV3OwogI2VuZGlmCiAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgV2ViSGlnaGxpZ2h0TGF5ZXIgOiBD
QUxheWVyIHsKICAgICBXZWJOb2RlSGlnaGxpZ2h0VmlldyAqX3ZpZXc7CiAgICAgV2ViVmlldyAq
X3dlYlZpZXc7CkBAIC01Miw3ICs1Miw3IEBAIEBpbnRlcmZhY2UgV2ViSGlnaGxpZ2h0TGF5ZXIg
OiBDQUxheWVyIHsKIAogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0IDogTlNPYmplY3Qgewog
ICAgIE5TVmlldyAqX3RhcmdldFZpZXc7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU1dpbmRvdyAqX2hpZ2hsaWdodFdpbmRvdzsKICNlbHNlCiAg
ICAgV2ViSGlnaGxpZ2h0TGF5ZXIgKl9oaWdobGlnaHRMYXllcjsKQEAgLTc0LDcgKzc0LDcgQEAg
QGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0IDogTlNPYmplY3QgewogCiAtIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyKilpbnNwZWN0b3JDb250cm9sbGVyOwogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc2V0TmVlZHNVcGRhdGVJ
blRhcmdldFZpZXdSZWN0OihOU1JlY3QpcmVjdDsKICNlbHNlCiAtICh2b2lkKXNldE5lZWRzRGlz
cGxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2Rl
SGlnaGxpZ2h0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYklu
c3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJGcmFtZVByaXZhdGUuaCIK
ICNpbXBvcnQgIldlYkhUTUxWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3LmgiCkBAIC00MywxNCAr
NDMsMTQgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0
IChGaWxlSW50ZXJuYWwpCiAtIChOU1JlY3QpX2NvbXB1dGVIaWdobGlnaHRXaW5kb3dGcmFtZTsK
IC0gKHZvaWQpX3JlcG9zaXRpb25IaWdobGlnaHRXaW5kb3c7CiBAZW5kCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9u
IFdlYkhpZ2hsaWdodExheWVyCiAKIC0gKGlkKWluaXRXaXRoSGlnaGxpZ2h0VmlldzooV2ViTm9k
ZUhpZ2hsaWdodFZpZXcgKil2aWV3IHdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3CkBAIC05MCw3
ICs5MCw3IEBAIC0gKGlkKWluaXRXaXRoVGFyZ2V0VmlldzooTlNWaWV3ICopdGFyZ2UKICAgICBf
dGFyZ2V0VmlldyA9IFt0YXJnZXRWaWV3IHJldGFpbl07CiAgICAgX2luc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpbnQgc3R5bGVNYXNrID0gTlNXaW5kb3dTdHlsZU1hc2tC
b3JkZXJsZXNzOwogICAgIE5TUmVjdCBjb250ZW50UmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVj
dEZvckZyYW1lUmVjdDpbc2VsZiBfY29tcHV0ZUhpZ2hsaWdodFdpbmRvd0ZyYW1lXSBzdHlsZU1h
c2s6c3R5bGVNYXNrXTsKICAgICBfaGlnaGxpZ2h0V2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tp
bmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CkBAIC0xMTcsNyArMTE3LDcgQEAg
LSAoaWQpaW5pdFdpdGhUYXJnZXRWaWV3OihOU1ZpZXcgKil0YXJnZQogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IEFTU0VSVCghX2hpZ2hsaWdodFdpbmRvdyk7CiAjZWxzZQogICAgIEFTU0VSVCghX2hpZ2hsaWdo
dExheWVyKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCAtICh2b2lkKWF0dGFjaAogICAgIEFTU0VSVChf
dGFyZ2V0Vmlldyk7CiAgICAgQVNTRVJUKFtfdGFyZ2V0VmlldyB3aW5kb3ddKTsKIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKF9oaWdo
bGlnaHRXaW5kb3cpOwogCiAgICAgaWYgKCFfaGlnaGxpZ2h0V2luZG93IHx8ICFfdGFyZ2V0Vmll
dyB8fCAhW190YXJnZXRWaWV3IHdpbmRvd10pCkBAIC0xNjksNyArMTY5LDcgQEAgLSAoaWQpZGVs
ZWdhdGUKIAogLSAodm9pZClkZXRhY2gKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghX2hpZ2hsaWdodFdpbmRvdykgewogI2Vsc2UKICAg
ICBpZiAoIV9oaWdobGlnaHRMYXllcikgewpAQCAtMTgxLDcgKzE4MSw3IEBAIC0gKHZvaWQpZGV0
YWNoCiAgICAgaWYgKF9kZWxlZ2F0ZSAmJiBbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2lsbERldGFjaFdlYk5vZGVIaWdobGlnaHQ6KV0pCiAgICAgICAgIFtfZGVsZWdh
dGUgd2lsbERldGFjaFdlYk5vZGVIaWdobGlnaHQ6c2VsZl07CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpu
b3RpZmljYXRpb25DZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07
CiAgICAgW25vdGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNWaWV3
RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW25vdGlmaWNhdGlv
bkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNWaWV3Qm91bmRzRGlkQ2hhbmdlTm90
aWZpY2F0aW9uIG9iamVjdDpuaWxdOwpAQCAtMjAzLDcgKzIwMyw3IEBAIC0gKHZvaWQpZGV0YWNo
CiAgICAgLy8gV2UgZGlkbid0IHJldGFpbiBfaGlnaGxpZ2h0VmlldywgYnV0IHdlIGRvIG5lZWQg
dG8gdGVsbCBpdCB0byBmb3JnZXQgYWJvdXQgdXMsIHNvIGl0IGRvZXNuJ3QKICAgICAvLyB0cnkg
dG8gc2VuZCBvdXIgZGVsZWdhdGUgbWVzc2FnZXMgYWZ0ZXIgd2UndmUgYmVlbiBkZWFsbG9jJ2Vk
LCBlLmcuCiAgICAgW19oaWdobGlnaHRWaWV3IGRldGFjaEZyb21XZWJOb2RlSGlnaGxpZ2h0XTsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBpT1Mg
ZGlkIHJldGFpbiB0aGUgaGlnaGxpZ2h0VmlldywgYW5kIHdlIHNob3VsZCByZWxlYXNlIGl0IGhl
cmUuCiAgICAgW19oaWdobGlnaHRWaWV3IHJlbGVhc2VdOwogI2VuZGlmCkBAIC0yMjEsNyArMjIx
LDcgQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICBfZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAtICh2b2lkKXNldE5lZWRzVXBkYXRlSW5UYXJnZXRWaWV3UmVjdDooTlNSZWN0KXJlY3QK
IHsKICAgICBBU1NFUlQoX3RhcmdldFZpZXcpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIC0gKEluc3Bl
Y3RvckNvbnRyb2xsZXIqKWluc3BlY3RvckNvbnRyb2wKIAogQGVuZAogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBXZWJOb2Rl
SGlnaGxpZ2h0IChGaWxlSW50ZXJuYWwpCiAKIC0gKE5TUmVjdClfY29tcHV0ZUhpZ2hsaWdodFdp
bmRvd0ZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2Vi
Tm9kZUhpZ2hsaWdodFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVNoYXBlTGF5ZXIuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XQUtBcHBL
aXRTdHVicy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dBS1ZpZXcuaD4KQEAgLTM2LDcgKzM2
LDcgQEAKIAogQGludGVyZmFjZSBXZWJOb2RlSGlnaGxpZ2h0VmlldyA6IE5TVmlldyB7CiAgICAg
V2ViTm9kZUhpZ2hsaWdodCAqX3dlYk5vZGVIaWdobGlnaHQ7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNNdXRhYmxlQXJyYXkgKl9sYXllcnM7IC8v
IENBU2hhcGVMYXllcnMuCiAjZW5kaWYKIH0KQEAgLTQ1LDcgKzQ1LDcgQEAgQGludGVyZmFjZSBX
ZWJOb2RlSGlnaGxpZ2h0VmlldyA6IE5TVmlldwogLSAoV2ViTm9kZUhpZ2hsaWdodCAqKXdlYk5v
ZGVIaWdobGlnaHQ7CiAtICh2b2lkKWRldGFjaEZyb21XZWJOb2RlSGlnaGxpZ2h0OwogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWxheW91dFN1
YmxheWVyczooQ0FMYXllciAqKXBhcmVudExheWVyOwogI2VuZGlmCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5v
ZGVIaWdobGlnaHRWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGlj
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2Vv
bWV0cnlVdGlsaXRpZXMuaD4KQEAgLTQ1LDcgKzQ1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJOb2RlSGlnaGxpZ2h0VmlldwogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9yZW1vdmVBbGxMYXll
cnMKIHsKICAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycykKQEAgLTYyLDcg
KzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhXZWJOb2RlSGlnaGxpZ2h0OihXZWJOb2RlSAogCiAgICAg
X3dlYk5vZGVIaWdobGlnaHQgPSBbd2ViTm9kZUhpZ2hsaWdodCByZXRhaW5dOwogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX2xheWVycyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwogI2VuZGlmCiAKQEAgLTcyLDcgKzcyLDcgQEAgLSAo
aWQpaW5pdFdpdGhXZWJOb2RlSGlnaGxpZ2h0OihXZWJOb2RlSAogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgW3NlbGYgZGV0YWNoRnJvbVdlYk5vZGVIaWdobGlnaHRdOwotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtzZWxmIF9yZW1vdmVBbGxMYXllcnNd
OwogICAgIFtfbGF5ZXJzIHJlbGVhc2VdOwogI2VuZGlmCkBAIC05MCw3ICs5MCw3IEBAIC0gKEJP
T0wpaXNGbGlwcGVkCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdCAK
IHsKICAgICBpZiAoX3dlYk5vZGVIaWdobGlnaHQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRlci5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVj
dG9yL1dlYk5vZGVIaWdobGlnaHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZCloaWdobGlnaHQKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBzY3JvbGx2aWV3J3Mg
Y29udGVudCB2aWV3IHN0YXlzIGFyb3VuZCBiZXR3ZWVuIHBhZ2UgbmF2aWdhdGlvbnMsIHNvIHRh
cmdldCBpdC4KICAgICBOU1ZpZXcgKnZpZXcgPSBbW1tbW19pbnNwZWN0ZWRXZWJWaWV3IG1haW5G
cmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGVuY2xvc2luZ1Njcm9sbFZpZXddIGNvbnRl
bnRWaWV3XTsKICNlbHNlCkBAIC03Miw3ICs3Miw3IEBAIC0gKHZvaWQpaGlnaGxpZ2h0CiAgICAg
ICAgIFtfY3VycmVudEhpZ2hsaWdodCBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW19jdXJy
ZW50SGlnaGxpZ2h0IGF0dGFjaF07CiAgICAgfSBlbHNlIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbW19jdXJyZW50SGlnaGxpZ2h0IGhp
Z2hsaWdodFZpZXddIHNldE5lZWRzRGlzcGxheTpZRVNdOwogI2Vsc2UKICAgICAgICAgW19jdXJy
ZW50SGlnaGxpZ2h0IHNldE5lZWRzRGlzcGxheV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgLSAodm9pZClzZXRDb3JlQXJjaGl2ZTooUmVmPExlZ2FjeVdlYkFy
YwogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkNsaXBWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJDbGlwVmlldy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkNsaXBWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJQREZWaWV3
SU9TLmgiCiAjZW5kaWYKIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbG9h
ZGVyKFdURk1vdmUobG9hZGVyKSkKICAgICAgICAgLCByZXByZXNlbnRhdGlvbkZpbmlzaGVkTG9h
ZGluZyhOTykKICAgICAgICAgLCBpbmNsdWRlZEluV2ViS2l0U3RhdGlzdGljcyhOTykKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLCBfZGF0YVNv
dXJjZURlbGVnYXRlKG5pbCkKICNlbmRpZgogICAgIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJs
aWM6CiAgICAgUmV0YWluUHRyPGlkPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+ID4gcmVwcmVz
ZW50YXRpb247CiAgICAgQk9PTCByZXByZXNlbnRhdGlvbkZpbmlzaGVkTG9hZGluZzsKICAgICBC
T09MIGluY2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TT2JqZWN0PFdlYkRhdGFTb3VyY2VQcml2YXRlRGVs
ZWdhdGU+ICpfZGF0YVNvdXJjZURlbGVnYXRlOwogI2VuZGlmCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CkBAIC0xNTEsNyArMTUxLDcgQEAgKyAoQ2xhc3MpX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1F
VHlwZQogKyAodm9pZClpbml0aWFsaXplCiB7CiAgICAgaWYgKHNlbGYgPT0gW1dlYkRhdGFTb3Vy
Y2UgY2xhc3NdKSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIC0gKHZvaWQpX2Fk
ZFN1YmZyYW1lQXJjaGl2ZXM6KE5TQXJyYXkgKikKICAgICAgICAgdG9Qcml2YXRlKF9wcml2YXRl
KS0+bG9hZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29yZUxlZ2FjeVdl
YkFyY2hpdmVdKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIC0gKE5TRmlsZVdyYXBwZXIgKilfZmlsZVdyYXBwZXJGb3JVUkw6KE5TVVJMICop
VVJMCiB7CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZDooQgogICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZChmbGFnKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihO
U1N0cmluZyAqKWVuY29kaW5nCiB7CiAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5z
ZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CkBAIC0yMjIsNyArMjIy
LDcgQEAgLSAoTlNPYmplY3Q8V2ViRGF0YVNvdXJjZVByaXZhdGVEZWxlZ2F0ZQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAtIChOU0RpY3Rpb25hcnkgKilfcXVpY2tMb29rQ29udGVudAogewogI2lmIFVTRShRVUlD
S19MT09LKQpAQCAtMjc4LDExICsyNzgsMTEgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9y
ZXBUeXBlc0FsbG93SQogICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0
IiB3ZSBkb24ndCBib3RoIHJlZ2lzdGVyaW5nIGl0LgogICAgICAgICBCT09MIG9taXRQREZTdXBw
b3J0ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpA
IldlYktpdE9taXRQREZTdXBwb3J0Il07CiAgICAgICAgIGlmICghb21pdFBERlN1cHBvcnQpCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIFdlYlBE
RlJlcHJlc2VudGF0aW9uIChbV2ViVmlldyBfZ2V0UERGUmVwcmVzZW50YXRpb25DbGFzc10pCiAj
ZW5kaWYKICAgICAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLCBbV2ViUERGUmVw
cmVzZW50YXRpb24gY2xhc3NdLCBbV2ViUERGUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5
cGVzXSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjdW5k
ZWYgV2ViUERGUmVwcmVzZW50YXRpb24KICNlbmRpZgogICAgIH0KQEAgLTM3Niw3ICszNzYsNyBA
QCAtICh2b2lkKV9tYWtlUmVwcmVzZW50YXRpb24KIHsKICAgICBDbGFzcyByZXBDbGFzcyA9IFtb
c2VsZiBjbGFzc10gX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1FVHlwZTpbc2VsZiBfcmVzcG9u
c2VNSU1FVHlwZV0gYWxsb3dpbmdQbHVnaW5zOltbW3NlbGYgX3dlYlZpZXddIHByZWZlcmVuY2Vz
XSBhcmVQbHVnSW5zRW5hYmxlZF1dOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKFtyZXBDbGFzcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9yZXByZXNlbnRhdGlvbkNsYXNzRm9yV2ViRnJhbWU6KV0pCiAgICAgICAgIHJlcENsYXNz
ID0gW3JlcENsYXNzIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3JlcHJlc2VudGF0aW9uQ2xh
c3NGb3JXZWJGcmFtZTopIHdpdGhPYmplY3Q6W3NlbGYgd2ViRnJhbWVdXTsKICNlbmRpZgpAQCAt
MzkwLDcgKzM5MCw3IEBAIC0gKHZvaWQpX21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAgaWQ8V2Vi
RG9jdW1lbnRSZXByZXNlbnRhdGlvbj4gcmVwcmVzZW50YXRpb24gPSB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5yZXByZXNlbnRhdGlvbi5nZXQoKTsKICAgICBbcmVwcmVzZW50YXRpb24gc2V0RGF0YVNv
dXJjZTpzZWxmXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldFJlc3BvbnNlTUlNRVR5cGUoW3Nl
bGYgX3Jlc3BvbnNlTUlNRVR5cGVdKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hpbmcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dBS0FwcEtp
dFN0dWJzLmg+CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgV2ViUmVzb3VyY2VE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uCiAgICAgSU1QIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VGdW5jOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBJTVAgY29ubmVjdGlvblByb3BlcnRpZXNGdW5jOwogICAgIElN
UCB3ZWJUaHJlYWREaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2VGdW5jOwogICAgIElNUCB3
ZWJUaHJlYWREaWRGYWlsTG9hZGluZ1dpdGhFcnJvckZyb21EYXRhU291cmNlRnVuYzsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvCiAg
ICAgSU1QIGRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZERldGVjdFhTU0Z1
bmM7CiAgICAgSU1QIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUZ1bmM7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSU1QIHdlYlRocmVhZERpZExh
eW91dEZ1bmM7CiAjZW5kaWYKIH07CkBAIC0xNDUsNyArMTQ1LDcgQEAgQk9PTCBDYWxsVUlEZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4oQk9PTCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCk7CiBCT09MIENhbGxVSURlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbihCT09MLCBXZWJWaWV3ICosIFNFTCwgaWQsIEJPT0wpOwogQk9PTCBD
YWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgV2ViVmlldyAqLCBTRUwsIGlkLCBC
T09MLCBpZCk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBC
T09MIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBXZWJWaWV3ICosIFNFTCwg
aWQsIGlkLCBCT09MKTsKICNlbmRpZgogCkBAIC0xNTYsNyArMTU2LDcgQEAgaWQgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElN
UCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgaWQpOwogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRl
KElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgaWQsIGlkKTsKIGlkIENhbGxGcmFtZUxvYWRE
ZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgTlNUaW1lSW50ZXJ2YWwsIGlkLCBpZCk7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBpZCBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGRvdWJsZSk7CiBpZCBDYWxs
RnJhbWVMb2FkRGVsZWdhdGVJbldlYlRocmVhZChJTVAsIFdlYlZpZXcgKiwgU0VMLCBOU1VJbnRl
Z2VyKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZShJTVAsIFdlYlZpZXcKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZp
ZXcgKiwgU0VMLCBpZCwgaWQsIGlkLCBpZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUo
SU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNl
TG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBpZCBDYWxsUmVz
b3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVhZChJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQp
OwogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoSU1QLCBXZWJWaWV3ICos
IFNFTCwgaWQsIGlkLCBpZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVJbldlYlRocmVh
ZChJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkLCBpZCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQgIldlYlZpZXdEYXRh
LmgiCiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKQEAgLTc4
LDcgKzc4LDcgQEAgV2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogVwogLy8g
cHJldmVudGluZyBtb3JlIE9iakMgbWVzc2FnZSBkaXNwYXRjaCBhbmQgY29tcGVuc2F0aW5nIGZv
ciB0aGUgZXhwZW5zZSBvZiB0aGUgQHRyeS9AY2F0Y2guCiAKIHR5cGVkZWYgZmxvYXQgKCpPYmpD
TXNnU2VuZEZQUmV0KShpZCwgU0VMLCAuLi4pOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaWYgZGVmaW5lZChfX2kzODZfXykKIHN0YXRpYyBjb25zdCBP
YmpDTXNnU2VuZEZQUmV0IG9iamNfbXNnU2VuZF9mbG9hdF9yZXR1cm4gPSByZWludGVycHJldF9j
YXN0PE9iakNNc2dTZW5kRlBSZXQ+KG9iamNfbXNnU2VuZF9mcHJldCk7CiAjZWxzZQpAQCAtODgs
NyArODgsNyBAQCBzdGF0aWMgY29uc3QgT2JqQ01zZ1NlbmRGUFJldCBvYmpjX21zZ1NlCiAKIHN0
YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBT
RUwgc2VsZWN0b3IpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKQEAgLTEyMSw3ICsx
MjEsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzCiAKIHN0YXRp
YyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwg
c2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAt
MTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnMK
IAogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdh
dGUsIFNFTCBzZWxlY3RvciwgTlNSZWN0IHJlY3QpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBA
dHJ5IHsKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShX
ZWJWaWV3ICpzCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYs
IGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRl
bGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERl
bGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dCwgQk9PTCBib29sZWFuKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC0yNTks
NyArMjU5LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqcwogCiBz
dGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwg
U0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxl
Z2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIGlubGlu
ZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqcwogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxl
Z2F0ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3Qs
IE5TVUludGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAt
MzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnMK
IAogc3RhdGljIGlubGluZSBmbG9hdCBDYWxsRGVsZWdhdGVSZXR1cm5pbmdGbG9hdChXZWJWaWV3
ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yKQogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiAwLjBmOwog
ICAgIEB0cnkgewpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgQ2FsbERl
bGVnYXRlUmV0dXJuaW4KIAogc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxlZ2F0ZVJldHVybmlu
Z0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2Vs
ZWN0b3IpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVj
dG9yXSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBAdHJ5IHsKQEAgLTM5MCw3ICszOTAs
NyBAQCBzdGF0aWMgaW5saW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nCiAKIHN0YXRpYyBp
bmxpbmUgQk9PTCBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVn
YXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICBAdHJ5IHsKQEAgLTQyMSw3ICs0MjEsNyBAQCBzdGF0aWMgaW5s
aW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nCiAKIHN0YXRpYyBpbmxpbmUgQk9PTCBDYWxs
RGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBpZCBk
ZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QsIEJPT0wgYm9vbGVhbikKIHsKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdh
dGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIEB0cnkgewpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyBpbmxp
bmUgQk9PTCBDYWxsRGVsZWdhdGVSZXR1cm5pbmcKIAogc3RhdGljIGlubGluZSBCT09MIENhbGxE
ZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRl
IHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICBAdHJ5IHsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgaW5saW5l
IEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVn
YXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIEJPT0wgYm9vbGVhbikK
IHsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNl
bGVjdG9yXSkKQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgaW5saW5lIEJPT0wgQ2FsbERlbGVn
YXRlUmV0dXJuaW5nCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1l
bnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvcikKIHsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC01NTQsNyArNTU0LDcg
QEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlk
IGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC01ODgsNyArNTg4LDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVn
YXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgQHRyeSB7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIGlubGluZSBpZCBD
YWxsRGVsZWdhdGUoSU1QIGltcGxlbQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlSW5X
ZWJUaHJlYWQoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwg
U0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyKQogewogICAgIGlmICghZGVsZWdh
dGUpCkBAIC02NjksMTEgKzY2OSwxMSBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZUlu
V2ViVGhyZWFkCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxE
ZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBT
RUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAtNzA2LDcgKzcwNiw3IEBAIHN0YXRpYyBpbmxp
bmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW0KICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxl
Z2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwg
c2VsZWN0b3IsIGlkIG9iamVjdCwgZG91YmxlIGRvdWJsZTEpCiB7CiAgICAgaWYgKCFkZWxlZ2F0
ZSkKQEAgLTczNCw3ICs3MzQsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAg
aW1wbGVtCiAKIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlv
biwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwg
aWQgb2JqZWN0MiwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7CkBAIC03NzAsNyArNzcwLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVs
ZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdDEsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMsIGlkIG9iamVjdDQpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlbGVnYXRl
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewpAQCAtODA3LDcgKzgwNyw3IEBAIHN0
YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW0KIAogc3RhdGljIGlubGluZSBp
ZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxl
Z2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVnZXIgaW50ZWdlciwgaWQgb2Jq
ZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7CkBAIC04
NDEsNyArODQxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQog
I2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVn
ZXIgaW50ZWdlcjEsIGludCBpbnRlZ2VyMiwgaWQgb2JqZWN0MikKICNlbHNlCiBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZUluV2ViVGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2Vy
IGludGVnZXIxLCBpbnQgaW50ZWdlcjIsIGlkIG9iamVjdDIpCkBAIC04NzEsNyArODcxLDcgQEAg
c3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogCiBzdGF0aWMgaW5saW5l
IGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIE5TSW50ZWdlciBp
bnRlZ2VyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICBAdHJ5IHsKQEAgLTkwNiw3ICs5MDYsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0
ZShJTVAgaW1wbGVtCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChJ
TVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdDEsIE5TSW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyKQogewogICAgIGlm
ICghZGVsZWdhdGUpCkBAIC05MzEsNyArOTMxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVs
ZWdhdGVJbldlYlRocmVhZAogfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBp
ZCBvYmplY3QxLCBOU0ludGVnZXIgaW50ZWdlcjEsIGlkIG9iamVjdDIsIE5TSW50ZWdlciBpbnRl
Z2VyMiwgaWQgb2JqZWN0MykKICNlbHNlCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZUlu
V2ViVGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2VyIGludGVnZXIxLCBpZCBvYmplY3Qy
LCBOU0ludGVnZXIgaW50ZWdlcjIsIGlkIG9iamVjdDMpCkBAIC05NDcsNyArOTQ3LDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZAogICAgIHJldHVybiBuaWw7CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGlj
IGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxm
LCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBOU0ludGVnZXIgaW50ZWdl
ciwgaWQgb2JqZWN0MiwgaWQgb2JqZWN0MywgaWQgb2JqZWN0NCkKICNlbHNlCiBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZUluV2ViVGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2Vy
IGludGVnZXIsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMsIGlkIG9iamVjdDQpCkBAIC05NjUsNyAr
OTY1LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGVJbldlYlRocmVhZAogCiBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNl
bGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5TVGltZUludGVydmFs
IGludGVydmFsLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHN0YXRpYyBpbmxp
bmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW0KIAogaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmll
dyAqc2VsZiwgU0VMIHNlbGVjdG9yKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJp
dmF0ZS0+VUlEZWxlZ2F0ZSwgc2VsZWN0b3IpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVn
YXRlKHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxlY3Rv
cik7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxm
LCBTRUwgc2VsCiAKIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rv
ciwgaWQgb2JqZWN0KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+VUlE
ZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdCk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdh
dGUoc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9y
LCBvYmplY3QpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmll
dyAqc2VsZiwgU0VMIHNlbAogCiBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwg
c2VsZWN0b3IsIGlkIG9iamVjdCwgQk9PTCBib29sZWFuKQogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxm
LCBzZWxmLT5fcHJpdmF0ZS0+VUlEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdCwgYm9vbGVhbik7
CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVG
b3JTZWxlY3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QsIGJvb2xlYW4pOwpAQCAtMTAy
OSw3ICsxMDI5LDcgQEAgaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbAog
CiBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TUmVjdCBy
ZWN0KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+VUlEZWxlZ2F0ZSwg
c2VsZWN0b3IsIHJlY3QpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKHNlbGYsIFtz
ZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxlY3RvciwgcmVjdCk7CkBA
IC0xMDM4LDcgKzEwMzgsNyBAQCBpZCBDYWxsVUlEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwg
c2VsCiAKIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0MSwgaWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgc2VsZi0+X3ByaXZh
dGUtPlVJRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKICNlbHNlCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZShzZWxmLCBbc2VsZiBfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNl
bGVjdG9yXSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwpAQCAtMTA0Nyw3ICsxMDQ3LDcg
QEAgaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbAogCiBpZCBDYWxsVUlE
ZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVj
dDIsIGlkIG9iamVjdDMpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKHNlbGYsIHNlbGYtPl9wcml2YXRlLT5V
SURlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CiAjZWxzZQog
ICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3Rv
cjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKQEAgLTEw
NTYsNyArMTA1Niw3IEBAIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWwK
IAogaWQgQ2FsbFVJRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmpl
Y3QsIE5TVUludGVnZXIgaW50ZWdlcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoc2VsZiwgc2VsZi0+X3By
aXZhdGUtPlVJRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QsIGludGVnZXIpOwogI2Vsc2UKICAg
ICByZXR1cm4gQ2FsbERlbGVnYXRlKHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6
c2VsZWN0b3JdLCBzZWxlY3Rvciwgb2JqZWN0LCBpbnRlZ2VyKTsKQEAgLTEwNjUsNyArMTA2NSw3
IEBAIGlkIENhbGxVSURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWwKIAogZmxvYXQgQ2Fs
bFVJRGVsZWdhdGVSZXR1cm5pbmdGbG9hdChXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IpCiB7
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1
cm4gQ2FsbERlbGVnYXRlUmV0dXJuaW5nRmxvYXQoc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJRGVs
ZWdhdGUsIHNlbGVjdG9yKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmlu
Z0Zsb2F0KHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0b3I6c2VsZWN0b3JdLCBzZWxl
Y3Rvcik7CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBmbG9hdCBDYWxsVUlEZWxlZ2F0ZVJldHVybmlu
Z0Zsb2F0KFdlYlZpCiAKIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wg
cmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IpCiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlUmV0
dXJuaW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5VSURlbGVnYXRlLCBz
ZWxlY3Rvcik7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFu
KHJlc3VsdCwgc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JTZWxlY3RvcjpzZWxlY3Rvcl0sIHNl
bGVjdG9yKTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5p
bmdCb29sZWFuKEJPT0wKIAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9P
TCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0KQogewotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENh
bGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4ocmVzdWx0LCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+
VUlEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdCk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVs
ZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3VsdCwgc2VsZiwgW3NlbGYgX1VJRGVsZWdhdGVGb3JT
ZWxlY3RvcjpzZWxlY3Rvcl0sIHNlbGVjdG9yLCBvYmplY3QpOwpAQCAtMTA5Miw3ICsxMDkyLDcg
QEAgQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTAogCiBCT09MIENhbGxV
SURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgV2ViVmlldyAqc2VsZiwgU0VM
IHNlbGVjdG9yLCBpZCBvYmplY3QsIEJPT0wgYm9vbGVhbikKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1
cm5pbmdCb29sZWFuKHJlc3VsdCwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGUsIHNl
bGVjdG9yLCBvYmplY3QsIGJvb2xlYW4pOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0
b3I6c2VsZWN0b3JdLCBzZWxlY3Rvciwgb2JqZWN0LCBib29sZWFuKTsKQEAgLTExMDEsNyArMTEw
MSw3IEBAIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wKIAogQk9PTCBD
YWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYs
IFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0LCBCT09MIGJvb2xlYW4sIGlkIG9iamVjdDIpCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4g
Q2FsbERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIHNlbGYtPl9wcml2YXRl
LT5VSURlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0LCBib29sZWFuLCBvYmplY3QyKTsKICNlbHNl
CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4ocmVzdWx0LCBzZWxmLCBb
c2VsZiBfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNlbGVjdG9yXSwgc2VsZWN0b3IsIG9iamVjdCwg
Ym9vbGVhbiwgb2JqZWN0Mik7CkBAIC0xMTEwLDE0ICsxMTEwLDE0IEBAIEJPT0wgQ2FsbFVJRGVs
ZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wKIAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmlu
Z0Jvb2xlYW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2Jq
ZWN0MSwgaWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3Vs
dCwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBv
YmplY3QyKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4o
cmVzdWx0LCBzZWxmLCBbc2VsZiBfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOnNlbGVjdG9yXSwgc2Vs
ZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdC
b29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEsIGlkIG9iamVjdDIsIEJPT0wgYm9vbGVhbikKIHsKICAgICByZXR1cm4gQ2FsbERlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbihyZXN1bHQsIHNlbGYsIFtzZWxmIF9VSURlbGVnYXRlRm9yU2VsZWN0
b3I6c2VsZWN0b3JdLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0MiwgYm9vbGVhbik7CkBAIC0x
MTI2LDcgKzExMjYsNyBAQCBCT09MIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09M
CiAKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcg
KnNlbGYsIFNFTCBzZWxlY3RvcikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNl
bGYsIHNlbGYtPl9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZSwgc2VsZWN0b3IpOwogI2Vsc2UK
ICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfZnJh
bWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvcik7CkBAIC0xMTM1LDcgKzExMzUsNyBA
QCBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0CiAKIGlkIENhbGxGcmFt
ZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxl
Y3RvciwgTlNVSW50ZWdlciBpbnRlZ2VyKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlv
biwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3RvciwgaW50
ZWdlcik7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNl
bGYsIFtzZWxmIF9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBpbnRlZ2Vy
KTsKQEAgLTExNDQsNyArMTE0NCw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwg
V2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QpCiB7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRl
KGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGUs
IHNlbGVjdG9yLCBvYmplY3QpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxl
bWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxl
Y3Rvciwgb2JqZWN0KTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxl
Z2F0ZShJTVAgaW1wbGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBs
ZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBv
YmplY3QyKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3By
aXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Mik7CiAj
ZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxm
IF9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3Qy
KTsKQEAgLTExNjIsNyArMTE2Miw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwg
V2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBv
YmplY3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3By
aXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2Jq
ZWN0Myk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNl
bGYsIFtzZWxmIF9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3Qx
LCBvYmplY3QyLCBvYmplY3QzKTsKQEAgLTExNzEsNyArMTE3MSw3IEBAIGlkIENhbGxGcmFtZUxv
YWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXQKIAogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElN
UCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3Qx
LCBpZCBvYmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0KQogewotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShp
bXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBz
ZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAjZWxzZQogICAg
IHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxmIF9mcmFtZUxv
YWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3Qz
LCBvYmplY3Q0KTsKQEAgLTExODAsMTQgKzExODAsMTQgQEAgaWQgQ2FsbEZyYW1lTG9hZERlbGVn
YXRlKElNUCBpbXBsZW1lbnRhdAogCiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxl
bWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIE5TVGlt
ZUludGVydmFsIGludGVydmFsLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzKQogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxl
Z2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVn
YXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZXJ2YWwsIG9iamVjdDIsIG9iamVjdDMpOwogI2Vs
c2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBf
ZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZXJ2YWws
IG9iamVjdDIsIG9iamVjdDMpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVt
ZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0LCBkb3VibGUg
ZG91YmxlMSkKIHsKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxm
LCBbc2VsZiBfZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0LCBk
b3VibGUxKTsKQEAgLTExOTcsNyArMTE5Nyw3IEBAIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJ
TVAgaW1wbGVtZW50YXQKIEJPT0wgQ2FsbEZyYW1lTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVh
bihCT09MIHJlc3VsdCwgSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2Vs
ZWN0b3IpCiB7CiAgICAgQHRyeSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKikoaWQs
IFNFTCwgV2ViVmlldyAqKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+ZnJhbWVMb2Fk
RGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKICNlbHNlCiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIFdlYlZpZXcgKik+KG9iamNfbXNnU2VuZCkoW3Nl
bGYgX2ZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIHNlbGYpOwpAQCAtMTIx
MCw3ICsxMjEwLDcgQEAgQk9PTCBDYWxsRnJhbWVMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZQog
CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERl
bGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9n
cmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0Mik7CiAjZWxzZQogICAgIHJl
dHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIFtzZWxmIF9yZXNvdXJjZUxv
YWREZWxlZ2F0ZUZvcndhcmRlcl0sIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKQEAgLTEy
MTksNyArMTIxOSw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW4K
IAogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3Qz
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUt
PnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIG9i
amVjdDMpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBz
ZWxmLCBbc2VsZiBfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2Jq
ZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBpZCBDYWxsUmVz
b3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVuCiAKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0MSwgaWQgb2JqZWN0MiwgaWQgb2JqZWN0MywgaWQgb2JqZWN0NCkKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVs
ZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dy
ZXNzRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0
KTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwg
W3NlbGYgX3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIG9iamVjdDEs
IG9iamVjdDIsIG9iamVjdDMsIG9iamVjdDQpOwpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgaWQgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbgogCiBpZCBDYWxsUmVzb3VyY2VMb2Fk
RGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3Is
IGlkIG9iamVjdDEsIE5TSW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyKQogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIENhbGxEZWxl
Z2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jl
c3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOwogI2Vsc2UK
ICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBbc2VsZiBfcmVz
b3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXJdLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZWdlciwg
b2JqZWN0Mik7CkBAIC0xMjQ2LDE0ICsxMjQ2LDE0IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZShJTVAgaW1wbGVtZW4KIAogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBs
ZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBv
YmplY3QyLCBOU0ludGVnZXIgaW50ZWdlciwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUo
aW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVs
ZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKICNl
bHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgW3NlbGYg
X3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVj
dDIsIGludGVnZXIsIG9iamVjdDMpOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZUluV2Vi
VGhyZWFkKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBp
ZCBvYmplY3QxLCBpZCBvYmplY3QyKQogewogICAgIHJldHVybiBDYWxsRGVsZWdhdGVJbldlYlRo
cmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jl
c3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwpAQCAtMTI4Myw3ICsxMjgz
LDcgQEAgaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlSW5XZWJUaHJlYWQoSU1QIAogewogICAgIHJl
dHVybiBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+
X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3RvciwgaW50ZWdlcik7CiB9Ci0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEJP
T0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwg
SU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEpCiB7CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0
ZVJldHVybmluZ0JvCiAKIGlkIENhbGxTY3JpcHREZWJ1Z0RlbGVnYXRlKElNUCBpbXBsZW1lbnRh
dGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3Qy
LCBOU0ludGVnZXIgaW50ZWdlciwgaWQgb2JqZWN0MykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5zY3JpcHREZWJ1Z0RlbGVnYXRlLCBzZWxl
Y3Rvciwgb2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7CiAjZWxzZQogICAgIHJl
dHVybiBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+
X3ByaXZhdGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3Qy
LCBpbnRlZ2VyLCBvYmplY3QzKTsKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGlkIENhbGxTY3JpcHRE
ZWJ1Z0RlbGVnYXRlKElNUCBpbXBsZW1lbnQKIAogaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUo
SU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEsIE5TSW50ZWdlciBpbnRlZ2VyMSwgaWQgb2JqZWN0MiwgTlNJbnRlZ2VyIGludGVnZXIyLCBp
ZCBvYmplY3QzKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+
X3ByaXZhdGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBpbnRlZ2Vy
MSwgb2JqZWN0MiwgaW50ZWdlcjIsIG9iamVjdDMpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbERl
bGVnYXRlSW5XZWJUaHJlYWQoaW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5z
Y3JpcHREZWJ1Z0RlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgaW50ZWdlcjEsIG9iamVjdDIs
IGludGVnZXIyLCBvYmplY3QzKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIGlkIENhbGxTY3JpcHRE
ZWJ1Z0RlbGVnYXRlKElNUCBpbXBsZW1lbnQKIAogaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUo
SU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEsIE5TSW50ZWdlciBpbnRlZ2VyLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0
KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUt
PnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBpbnRlZ2VyLCBvYmplY3Qy
LCBvYmplY3QzLCBvYmplY3Q0KTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZUluV2Vi
VGhyZWFkKGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+c2NyaXB0RGVidWdE
ZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIsIG9iamVjdDMsIG9i
amVjdDQpOwpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgaWQgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUo
SU1QIGltcGxlbWVudAogCiBpZCBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShJTVAgaW1wbGVtZW50
YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgTlNJbnRlZ2Vy
IGludGVnZXIxLCBpbnQgaW50ZWdlcjIsIGlkIG9iamVjdDIpCiB7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGlt
cGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+c2NyaXB0RGVidWdEZWxlZ2F0ZSwg
c2VsZWN0b3IsIG9iamVjdDEsIGludGVnZXIxLCBpbnRlZ2VyMiwgb2JqZWN0Mik7CiAjZWxzZQog
ICAgIHJldHVybiBDYWxsRGVsZWdhdGVJbldlYlRocmVhZChpbXBsZW1lbnRhdGlvbiwgc2VsZiwg
c2VsZi0+X3ByaXZhdGUtPnNjcmlwdERlYnVnRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBp
bnRlZ2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOwpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgaWQgQ2Fs
bEhpc3RvcnlEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpbwogCiBpZCBDYWxsRm9ybURlbGVnYXRl
KFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2JqZWN0MikKIHsK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlkIGRl
bGVnYXRlID0gc2VsZi0+X3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRl
IHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0
dXJuIG5pbDsKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmll
dyAqc2VsZiwgU0VMIHMKIAogaWQgQ2FsbEZvcm1EZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwg
c2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIGlkIG9iamVjdDMpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZCBkZWxlZ2F0ZSA9
IHNlbGYtPl9wcml2YXRlLT5mb3JtRGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCBpZCBDYWxsRm9ybURlbGVnYXRlKFdlYlZpZXcgKnNlbGYs
IFNFTCBzCiAKIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9y
LCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplY3QzLCBpZCBvYmplY3Q0LCBpZCBvYmpl
Y3Q1KQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWQgZGVsZWdhdGUgPSBzZWxmLT5fcHJpdmF0ZS0+Zm9ybURlbGVnYXRlOwogICAgIGlmICgh
ZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAg
ICAgICByZXR1cm4gbmlsOwpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgaWQgQ2FsbEZvcm1EZWxlZ2F0
ZShXZWJWaWV3ICpzZWxmLCBTRUwgcwogCiBCT09MIENhbGxGb3JtRGVsZWdhdGVSZXR1cm5pbmdC
b29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVj
dDEsIFNFTCBzZWxlY3RvckFyZywgaWQgb2JqZWN0MikKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlkIGRlbGVnYXRlID0gc2VsZi0+X3ByaXZh
dGUtPmZvcm1EZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmll
bnRhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsNyAr
NzIsNyBAQCAtIChpZClpbml0V2l0aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5QCiAgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2UgZG9u
J3QgdXNlIHRoaXMgQVBJLCBidXQgbWFrZSBzdXJlIHRoYXQgaXQgY29tcGlsZXMgd2l0aCB0aGUg
bmV3CiAgICAgLy8gY29tcGFzcyBwYXJhbWV0ZXJzLgogICAgIG1faW50ZXJuYWwgPSBbW1dlYkRl
dmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0
aW9uOkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJvdmlkZUFscGhh
LCBhbHBoYSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0KGNhblByb3Zp
ZGVHYW1tYSwgZ2FtbWEpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCldOwpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1bWVudEludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1bWVudEludGVy
bmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRG9jdW1lbnRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViSFRNTFZpZXcuaD4KICNpbXBvcnQgPFdlYktpdExl
Z2FjeS9XZWJWaWV3UHJpdmF0ZS5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgIWRlZmluZWQoSUJBY3Rpb24pCiAjZGVmaW5lIElCQWN0aW9uIHZv
aWQKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEb2N1
bWVudExvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFdlYkRvY3VtZW50TG9hZGVyTWFjOjpXZWJEb2N1
bWVudExvYWRlck0KIAogc3RhdGljIGlubGluZSBib29sIG5lZWRzRGF0YUxvYWRXb3JrYXJvdW5k
KFdlYlZpZXcgKndlYlZpZXcpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBuZWVkc1dvcmthcm91bmQgPSAhV2ViS2l0TGlu
a2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfQURPQkVfSU5TVEFMTEVS
X1FVSVJLKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBbW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYWRv
YmUuSW5zdGFsbGVycy5TZXR1cCJdOwogICAgIHJldHVybiBuZWVkc1dvcmthcm91bmQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
d0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
d0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgIldlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlRnJhbWVWaWV3Lmg+CkBAIC02NSw0ICs2NSw0IEBAIEBpbnRlcmZhY2UgV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3IChXZWIKIC0gKEJPT0wpaW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiBAZW5k
CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGb3JtRGVsZWdh
dGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZv
cm1EZWxlZ2F0ZS5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZvcm1EZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIC0gKEJPT0wpdGV4dEZpZWxkOihET01IVE1MSW5wdXRFbGVtZW50ICoKICAgICByZXR1cm4g
Tk87CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAgICAKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkgICAgCiAtIChCT09MKXRleHRGaWVsZDooRE9NSFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQg
c2hvdWxkSGFuZGxlRXZlbnQ6KE5TRXZlbnQgKilldmVudCBpbkZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lCiB7CiAgICAgcmV0dXJuIE5POwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L21hcmt1cC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJXZWJNYWlsRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlLmgiCiAj
aW1wb3J0ICJXZWJVSUtpdERlbGVnYXRlLmgiCkBAIC0yMzEsNyArMjMxLDcgQEAgVGV4dERpcmVj
dGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvciBjbwogICAgIHJldHVybiBUZXh0RGlyZWN0aW9u
U3VibWVudU5ldmVySW5jbHVkZWQ7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRp
b25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKQEAgLTM0Myw3ICsz
NDMsNyBAQCAtIChCT09MKV9pc0luY2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzCiAgICAgcmV0dXJu
IF9wcml2YXRlICYmIF9wcml2YXRlLT5pbmNsdWRlZEluV2ViS2l0U3RhdGlzdGljczsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TVVJM
ICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAKICsgKHZvaWQpX2NyZWF0ZU1haW5GcmFtZVdp
dGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFnZTooUGFnZSopcGFnZSBmcmFtZVZpZXc6KFdlYkZy
YW1lVmlldyAqKWZyYW1lVmlldyBzdHlsZTooTlNTdHJpbmcgKilzdHlsZQpAQCAtNDI0LDcgKzQy
NCw3IEBAIC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGUKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhzZWxmKTsKICAgICBCT09MIGRyYXdzQmFja2dy
b3VuZCA9IFt3ZWJWaWV3IGRyYXdzQmFja2dyb3VuZF07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0NvbG9yICpiYWNrZ3JvdW5kQ29sb3IgPSBb
d2ViVmlldyBiYWNrZ3JvdW5kQ29sb3JdOwogI2Vsc2UKICAgICBDR0NvbG9yUmVmIGJhY2tncm91
bmRDb2xvciA9IFt3ZWJWaWV3IGJhY2tncm91bmRDb2xvcl07CkBAIC00MzcsMTMgKzQzNywxMyBA
QCAtICh2b2lkKV91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlCiAgICAgICAgIFdlYkZy
YW1lICp3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CiAgICAgICAgIGlmICghZHJhd3NCYWNrZ3JvdW5k
KQogICAgICAgICAgICAgW1tbd2ViRnJhbWUgZnJhbWVWaWV3XSBfc2Nyb2xsVmlld10gc2V0RHJh
d3NCYWNrZ3JvdW5kOk5PXTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBbW1t3ZWJGcmFtZSBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XSBzZXRC
YWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsKICNlbmRpZgogCiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICB2aWV3LT5zZXRU
cmFuc3BhcmVudCghZHJhd3NCYWNrZ3JvdW5kKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgICAgIENvbG9yIGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihb
YmFja2dyb3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9y
U3BhY2VdKTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApA
QCAtNDc3LDcgKzQ3Nyw3IEBAIC0gKHZvaWQpX3VubWFya0FsbEJhZEdyYW1tYXIKIAogLSAodm9p
ZClfdW5tYXJrQWxsTWlzc3BlbGxpbmdzCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVG
cmFtZTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgewogICAgICAgICBpZiAoRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCkBAIC01NTgsNyArNTU4LDcgQEAg
LSAoV2ViRGF0YVNvdXJjZSAqKV9kYXRhU291cmNlCiAgICAgcmV0dXJuIGRhdGFTb3VyY2UoX3By
aXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoQk9PTClfaXNDb21t
aXR0aW5nCiB7CkBAIC02MDUsNyArNjA1LDcgQEAgLSAoT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
KV9wYWludEJlaGF2aQogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFwLCB3
ZSBjb3VsZCBiZSBzbmFwc2hvdHRpbmcgb3IgZHJhd2luZyBpbnRvIGEgbGF5ZXItYmFja2VkIHZp
ZXcuCiAgICAgaWYgKFdlYkhUTUxWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBfd2ViSFRNTERv
Y3VtZW50Vmlld10pIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgcmV0dXJuIFtbZG9jdW1lbnRWaWV3IHdpbmRvd10gaXNJblNuYXBzaG90dGlu
Z1BhaW50XSA/IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyA6IFBhaW50QmVoYXZpb3I6Ok5v
cm1hbDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYxOSw3ICs2MTksNyBAQCAtIChP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4pX3BhaW50QmVoYXZpCiAKIC0gKHZvaWQpX2RyYXdSZWN0
OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoW1tOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gaXNGbGlwcGVkXSk7CiAKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtNjMwLDcgKzYzMCw3IEBAIC0gKHZvaWQp
X2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c08KICNlbmRpZgogICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KGN0eCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBjb3JlKHNlbGYpOwogICAgIGlm
IChXZWJDb3JlOjpQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgY29udGV4dC5z
ZXRJc0FjY2VsZXJhdGVkQ29udGV4dChwYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQoKSk7CkBAIC02OTcsNyArNjk3LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcgogICAgIEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVu
dCgpKTsKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHByb3RlY3Qoc2VsZik7IC8vIEV4ZWN1dGlu
ZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAgICAgCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKFdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBqc2NMb2NrKGV4
ZWMpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3IKICAgICBpZiAoIXJlc3VsdCB8fCAoIXJlc3VsdC5pc0Jvb2xlYW4oKSAmJiAhcmVz
dWx0LmlzU3RyaW5nKCkgJiYgIXJlc3VsdC5pc051bWJlcigpKSkKICAgICAgICAgcmV0dXJuIEAi
IjsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKS5nbG9i
YWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICNlbmRpZgpAQCAtNzM5LDcgKzczOSw3IEBAIC0g
KHZvaWQpX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW4KICAgICBOb2RlICpzdGFydE5v
ZGUgPSBjb3JlKFtyYW5nZSBzdGFydENvbnRhaW5lcl0pOwogICAgICAgICAKICAgICBpZiAoc3Rh
cnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkgewotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+
c2Nyb2xsUmVjdFRvVmlzaWJsZShlbmNsb3NpbmdJbnRSZWN0KHJhbmdlUmVjdCksIGluc2lkZUZp
eGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGln
blRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsKICNlbHNlCiAgICAgICAgIFJl
bmRlckxheWVyKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIo
KTsKQEAgLTc1NCw3ICs3NTQsNyBAQCAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZToo
RE9NUmFuCiAgICAgfQogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5n
ZSB3aXRoSW5zZXQ6KENHRmxvYXQpaW5zZXQKIHsKICAgICBib29sIGluc2lkZUZpeGVkID0gZmFs
c2U7IC8vIEZJWE1FOiBnZXQgdmlhIGZpcnN0UmVjdEZvclJhbmdlKCkuCkBAIC03ODQsNyArNzg0
LDcgQEAgLSAoQk9PTClfbmVlZHNMYXlvdXQKICAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+dmlldygpID8gX3ByaXZhdGUtPmNvcmVGcmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpIDog
ZmFsc2U7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogLSAoRE9NUmFuZ2UgKilfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjooRnJhbWVT
ZWxlY3Rpb246OkVBbHRlcmF0aW9uKWFsdGVyYXRpb24gZGlyZWN0aW9uOihTZWxlY3Rpb25EaXJl
Y3Rpb24pZGlyZWN0aW9uIGdyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkK
IHsKICAgICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuaXNOb25lKCkpCkBA
IC0xMDE4LDcgKzEwMTgsNyBAQCAtICh2b2lkKV9zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnM6KEJP
T0wpCiAgICAgX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyA9IHNob3VsZENyZWF0ZVJl
bmRlcmVyczsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAtIChOU0NvbG9yICopX2JvZHlCYWNrZ3JvdW5kQ29sb3IKICNlbHNlCiAtIChDR0NvbG9y
UmVmKV9ib2R5QmFja2dyb3VuZENvbG9yCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCAtIChDR0NvbG9y
UmVmKV9ib2R5QmFja2dyb3VuZENvbG9yCiAgICAgQ29sb3IgY29sb3IgPSBib2R5UmVuZGVyZXIt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKICNlbHNlCiAgICAgcmV0dXJuIGNhY2hlZENHQ29s
b3IoY29sb3IpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgLSAoV2ViRnJhbWVMb2FkVHlwZSlfbG9h
ZFR5cGUKICAgICByZXR1cm4gdG9XZWJGcmFtZUxvYWRUeXBlKF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLmxvYWRUeXBlKCkpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChCT09MKW5lZWRzTGF5b3V0CiB7CiAgICAgLy8gTmVlZGVkIGZv
ciBNYWlsIDxyZGFyOi8vcHJvYmxlbS82MjI4MDM4PgpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgLSAo
RE9NUmFuZ2UgKilfc2VsZWN0aW9uUmFuZ2VGb3JQb2ludDooQwogICAgIHJldHVybiByYW5nZTsK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAtIChOU1JhbmdlKV9zZWxlY3RlZE5TUmFuZ2UKIHsKQEAgLTExOTMsNyArMTE5Myw3
IEBAIC0gKHZvaWQpX3JlY3Vyc2l2ZV9wYXVzZU51bGxFdmVudHNGb3JBbGwKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHVuc2ln
bmVkKWZvcm1FbGVtZW50c0NoYXJhY3RlckNvdW50CiB7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCAt
ICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFdlYkFyY2hpdmU6CiAgICAgW3NlbGYgX3JlcGxh
Y2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6ZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0
UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOk5PXTsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIC0gKHZvaWQpcmVzZXRUZXh0QXV0b3Np
emluZ0JlZm9yZUxheW91dApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgLSAodm9pZClfcmVwbGFjZVNl
bGVjdGlvbldpdGhGcmFnbWVudDooRAogICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigp
LnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoKmNvcmUoZnJhZ21lbnQpLCBzZWxlY3RSZXBs
YWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKIH0KIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClyZW1vdmVVbmNoYW5nZWFibGVT
dHlsZXMKIHsKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5yZW1vdmVVbmNoYW5n
ZWFibGVTdHlsZXMoKTsKQEAgLTE5ODEsNyArMTk4MSw3IEBAIC0gKHZvaWQpX3JlcGxhY2VTZWxl
Y3Rpb25XaXRoTWFya3VwU3RyaW4KICAgICBbc2VsZiBfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudDpmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJl
cGxhY2U6c21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6Tk9dOwogfQogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIERldGVybWluZXMgd2hldGhlciB3aGl0
ZXNwYWNlIG5lZWRzIHRvIGJlIGFkZGVkIGFyb3VuZCBhU3RyaW5nIHRvIHByZXNlcnZlIHByb3Bl
ciBzcGFjaW5nIGFuZAogLy8gcHVuY3R1YXRpb24gd2hlbiBpdCdzIGluc2VydGVkIGludG8gdGhl
IHJlY2VpdmVyJ3MgdGV4dCBvdmVyIGNoYXJSYW5nZS4gUmV0dXJucyBieSByZWZlcmVuY2UKIC8v
IGluIGJlZm9yZVN0cmluZyBhbmQgYWZ0ZXJTdHJpbmcgYW55IHdoaXRlc3BhY2UgdGhhdCBzaG91
bGQgYmUgYWRkZWQsIHVubGVzcyBlaXRoZXIgb3IgYm90aCBhcmUKQEAgLTIwMzksNyArMjAzOSw3
IEBAIC0gKHZvaWQpX3NtYXJ0SW5zZXJ0Rm9yU3RyaW5nOihOU1N0cmluZyAKICAgICBpZiAoYWZ0
ZXJTdHJpbmcgJiYgYWRkVHJhaWxpbmdTcGFjZSAmJiAhaGFzV2hpdGVzcGFjZUF0RW5kKQogICAg
ICAgICAqYWZ0ZXJTdHJpbmcgPSBAIiAiOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkg
KilfY2FjaGVhYmlsaXR5RGljdGlvbmFyeQogewpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgLSAoSlND
b250ZXh0ICopX2phdmFTY3JpcHRDb250ZXh0Rm9yU2NyaQogfQogI2VuZGlmCiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRBbGxvd3NT
Y3JvbGxlcnNUb092ZXJsYXBDb250ZW50OihCT09MKWZsYWcKIHsKICAgICBBU1NFUlQoW1tbc2Vs
ZiBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XSBpc0tpbmRPZkNsYXNzOltXZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXcgY2xhc3NdXSk7CkBAIC0yMjA1LDcgKzIyMDUsNyBAQCAtIChpZClhY2Nlc3NpYmls
aXR5Um9vdAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpIHsKICAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxl
QWNjZXNzaWJpbGl0eSgpOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
ICAgIEFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHko
W1tOU0FwcCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5oYW5j
ZWRVc2VySW50ZXJmYWNlQXR0cmlidXRlXSBib29sVmFsdWVdKTsKICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC0yMjg0LDcgKzIyODQsNyBAQCAtIChOU0FycmF5
ICopX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTCiAgICAgcmV0dXJuIHBhZ2VzOwogfQogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvclRleHQ6KE5TU3RyaW5nICopdGV4dAog
ewpAQCAtMjMzOCw3ICsyMzM4LDcgQEAgLSAodm9pZClfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6
KE5TU3RyaQogICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoeyB0aXRsZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEpTVmFs
dWVSZWYpanNXcmFwcGVyRm9yTm9kZTooRE9NTm9kZSAqKW5vZGUgaW5TY3JpcHRXb3JsZDooV2Vi
U2NyaXB0V29ybGQgKil3b3JsZAogewpAQCAtMjQxNCw3ICsyNDE0LDcgQEAgLSAoV2ViVmlldyAq
KXdlYlZpZXcKIAogc3RhdGljIGJvb2wgbmVlZHNNaWNyb3NvZnRNZXNzZW5nZXJET01Eb2N1bWVu
dFdvcmthcm91bmQoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgbmVlZHNXb3Jr
YXJvdW5kID0gTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkgJiYgW1tbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICop
a0NGQnVuZGxlVmVyc2lvbktleV0gY29tcGFyZTpAIjcuMSIgb3B0aW9uczpOU051bWVyaWNTZWFy
Y2hdID09IE5TT3JkZXJlZEFzY2VuZGluZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzcyNjApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBXZWJWaWV3ICpraXQoV2ViQ29yZTo6UGFnZSop
OwogV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgY29yZShXZWJLaXRFZGl0YWJsZUxpbmtC
ZWhhdmlvcik7CiBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9y
IGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7CiAKLSNpZiBk
ZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBQTEFURk9STShJT1MpCisjaWYgZGVmaW5lZChfX2NwbHVz
cGx1cykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gdmVj
dG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KE5TQXJyYXkgKik7CiAjZW5kaWYKIApAQCAtOTMs
NyArOTMsNyBAQCBAaW50ZXJmYWNlIFdlYkZyYW1lUHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBC
T09MIGluY2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4g
dXJsOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHJvdmlzaW9uYWxVUkw7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQk9PTCBpc0NvbW1pdHRpbmc7
CiAjZW5kaWYKIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBAaW50ZXJmYWNlIFdlYkZyYW1lIChXZWJJ
bnRlcm5hbCkKIC8vIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAtIChXZWJEYXRhU291cmNlICop
X2RhdGFTb3VyY2U7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICsgKHZvaWQpX2NyZWF0ZU1haW5GcmFtZVdpdGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFn
ZTooV2ViQ29yZTo6UGFnZSopcGFnZSBmcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZyYW1lVmll
dyBzdHlsZTooTlNTdHJpbmcgKilzdHlsZTsKIAogLSAoQk9PTClfaXNDb21taXR0aW5nOwpAQCAt
MTU2LDExICsxNTYsMTEgQEAgQGludGVyZmFjZSBXZWJGcmFtZSAoV2ViSW50ZXJuYWwpCiAtIChO
U1JlY3QpX2NhcmV0UmVjdEF0UG9zaXRpb246KGNvbnN0IFdlYkNvcmU6OlBvc2l0aW9uJilwb3Mg
YWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHk7CiAtIChOU1JlY3QpX2ZpcnN0
UmVjdEZvckRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlOwogLSAodm9pZClfc2Nyb2xsRE9NUmFu
Z2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2U7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9N
UmFuZ2UgKilyYW5nZSB3aXRoSW5zZXQ6KENHRmxvYXQpaW5zZXQ7CiAjZW5kaWYKIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChET01SYW5nZSAqKV9y
YW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOihXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVj
dGlvbilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFu
dWxhcml0eTsKICNlbmRpZgogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooV2ViQ29yZTo6
UmFuZ2UqKXJhbmdlOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZVZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQREZWaWV3SU9TLmgi
CiAjaW1wb3J0ICJXZWJVSUtpdERlbGVnYXRlLmgiCkBAIC04NCw3ICs4NCw3IEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgTlNXaW5kb3cgKFdpbmRvd1ByaXZhdGUpCiAtIChCT09M
KV9uZWVkc1RvUmVzZXREcmFnTWFyZ2luczsKIC0gKHZvaWQpX3NldE5lZWRzVG9SZXNldERyYWdN
YXJnaW5zOihCT09MKXM7CkBAIC0xNTgsNyArMTU4LDcgQEAgLSAodm9pZClfc2V0RG9jdW1lbnRW
aWV3OihOU1ZpZXcgPFdlYkRvYwogICAgIGNvcmUoW3NlbGYgX3dlYlZpZXddKS0+ZHJhZ0NvbnRy
b2xsZXIoKS5zZXREaWRJbml0aWF0ZURyYWcoZmFsc2UpOwogI2VuZGlmCiAgICAgCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc3Ygc2V0U3VwcHJl
c3NMYXlvdXQ6WUVTXTsKICAgICAKICAgICAvLyBJZiB0aGUgb2xkIHZpZXcgaXMgdGhlIGZpcnN0
IHJlc3BvbmRlciwgdHJhbnNmZXIgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byB0aGUgbmV3IHZp
ZXcgYXMgCkBAIC0xNzIsNyArMTcyLDcgQEAgLSAodm9pZClfc2V0RG9jdW1lbnRWaWV3OihOU1Zp
ZXcgPFdlYkRvYwogICAgIFt3aW5kb3cgX3NldE5lZWRzVG9SZXNldERyYWdNYXJnaW5zOk5PXTsK
ICNlbmRpZgogICAgIFtzdiBzZXREb2N1bWVudFZpZXc6dmlld107Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2luZG93IF9zZXROZWVkc1RvUmVz
ZXREcmFnTWFyZ2luczpyZXNldERyYWdNYXJnaW5zXTsKIAogICAgIGlmIChtYWtlTmV3Vmlld0Zp
cnN0UmVzcG9uZGVyKQpAQCAtMjczLDExICsyNzMsMTEgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFy
eSAqKV92aWV3VHlwZXNBbGxvdwogICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBk
ZWZhdWx0IiB3ZSBkb24ndCBib3RoZXIgcmVnaXN0ZXJpbmcgaXQuCiAgICAgICAgIEJPT0wgb21p
dFBERlN1cHBvcnQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29s
Rm9yS2V5OkAiV2ViS2l0T21pdFBERlN1cHBvcnQiXTsKICAgICAgICAgaWYgKCFvbWl0UERGU3Vw
cG9ydCkKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZp
bmUgV2ViUERGVmlldyAoW1dlYlZpZXcgX2dldFBERlZpZXdDbGFzc10pCiAjZW5kaWYKICAgICAg
ICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcywgW1dlYlBERlZpZXcgY2xhc3NdLCBb
V2ViUERGVmlldyBzdXBwb3J0ZWRNSU1FVHlwZXNdKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICN1bmRlZiBXZWJQREZWaWV3CiAjZW5kaWYKICAgICB9CkBA
IC0zMDUsNyArMzA1LDcgQEAgLSAoQ2xhc3MpX3ZpZXdDbGFzc0Zvck1JTUVUeXBlOihOU1N0cmlu
ZwogewogICAgIENsYXNzIHJldFZhbCA9IFtbc2VsZiBjbGFzc10gX3ZpZXdDbGFzc0Zvck1JTUVU
eXBlOk1JTUVUeXBlIGFsbG93aW5nUGx1Z2luczpbW1tzZWxmIF93ZWJWaWV3XSBwcmVmZXJlbmNl
c10gYXJlUGx1Z0luc0VuYWJsZWRdXTsKIAotI2lmIFBMQVRGT1JNKElPUykgICAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAgIAogICAgIGlmIChbcmV0VmFsIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3JlcHJlc2VudGF0aW9uQ2xhc3NGb3JXZWJGcmFtZTopXSkKICAgICAgICAgcmV0
VmFsID0gW3JldFZhbCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXByZXNlbnRhdGlvbkNs
YXNzRm9yV2ViRnJhbWU6KSB3aXRoT2JqZWN0OltzZWxmIHdlYkZyYW1lXV07CiAjZW5kaWYKQEAg
LTM2OSw3ICszNjksNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKICAgICAg
ICAgLy8gTm90ZTogV2UgYWxzbyBkbyB0aGlzIGluIFdlYkhpc3RvcnlJdGVtJ3MgaW5pdCBtZXRo
b2QuCiAgICAgICAgIFdlYkNvcmU6Om5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCA9IFdLTm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJ
UlNUX1ZFUlNJT05fV0lUSF9NQUlOX1RIUkVBRF9FWENFUFRJT05TKSkKICAgICAgICAgICAgIHNl
dERlZmF1bHRUaHJlYWRWaW9sYXRpb25CZWhhdmlvcihMb2dPbkZpcnN0VGhyZWFkVmlvbGF0aW9u
LCBUaHJlYWRWaW9sYXRpb25Sb3VuZE9uZSk7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCAtIChpZClp
bml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKIAogICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dyAqc2Nyb2xsVmlldyA9IFtbV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6
ZS5oZWlnaHQpXTsKICAgICBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2Nyb2xs
VmlldyBzZXREZWxlZ2F0ZTpzZWxmXTsKICNlbHNlCiAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVu
dFZpZXc6W1tbV2ViQ2xpcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91
bmRzXV0gYXV0b3JlbGVhc2VdXTsKQEAgLTQxOCw3ICs0MTgsNyBAQCAtICh2b2lkKWRlYWxsb2Mg
CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChCT09MKXNjcm9sbFZpZXc6KFdBS1Njcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IHNob3VsZFNjcm9sbFRvUG9pbnQ6KENHUG9pbnQpcG9pbnQKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwpAQCAtNTA0LDcgKzUwNCw3IEBAIC0gKEJPT0wp
aXNPcGFxdWUKIAogLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKIHsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghW3NlbGYgZG9jdW1l
bnRWaWV3XSkKICNlbHNlCiAgICAgaWYgKCFbc2VsZiBkb2N1bWVudFZpZXddIHx8IFtbc2VsZiBk
b2N1bWVudFZpZXddIGZyYW1lXS5zaXplLmhlaWdodCA9PSAwIHx8IFtbc2VsZiB3ZWJGcmFtZV0g
X2lzQ29tbWl0dGluZ10pCkBAIC01MTIsNyArNTEyLDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNS
ZWN0KXJlY3QKICAgICB7CiAgICAgICAgIC8vIE5lZWQgdG8gcGFpbnQgb3Vyc2VsdmVzIGlmIHRo
ZXJlJ3Mgbm8gZG9jdW1lbnRWaWV3IHRvIGRvIGl0IGluc3RlYWQuCiAgICAgICAgIGlmIChbW3Nl
bGYgX3dlYlZpZXddIGRyYXdzQmFja2dyb3VuZF0pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgW1tbc2VsZiBfd2ViVmlld10gYmFj
a2dyb3VuZENvbG9yXSBzZXRdOwogICAgICAgICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNl
CkBAIC01MjQsNyArNTI0LDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICB9
IGVsc2UgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgaWYgKFtbc2VsZiBfc2Nyb2xsVmlld10g
ZHJhd3NCYWNrZ3JvdW5kXSkgewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgICAgICBbW05TQ29sb3IgY3lhbkNvbG9yXSBzZXRdOwogICAgICAg
ICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCkBAIC04NTAsNyArODUwLDcgQEAgLSAodm9p
ZClzY3JvbGxMaW5lRG93bjooaWQpc2VuZGVyCiAKIC0gKEJPT0wpX2ZpcnN0UmVzcG9uZGVySXNG
b3JtQ29udHJvbAogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHJldHVybiBOTzsKICNlbHNlCiAgICAgTlNSZXNwb25kZXIgKmZpcnN0UmVzcG9uZGVy
ID0gW1tzZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdOwpAQCAtODYzLDcgKzg2Myw3IEBAIC0g
KEJPT0wpX2ZpcnN0UmVzcG9uZGVySXNGb3JtQ29udHJvbAogI2VuZGlmCiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIFVubGlrZSBPUyBYIFdlYktp
dCwgb24gaU9TLCB1bmhhbmRsZWQgbW91c2UgZXZlbnRzIGFyZSBmb3J3YXJkZWQgdG8gYWxsb3cg
Zm9yIHNjcm9sbGluZy4KIC8vIFNpbmNlIG1vdXNlIGV2ZW50cyB3ZXJlIGZvcndhcmRlZCB0byB0
aGlzIFdlYkZyYW1lVmlldywgdGhpcyBtZWFucyB0aGF0IHRoZSBzdWJ2aWV3cyBkaWRuJ3QKIC8v
IGhhbmRsZSB0aGUgZXZlbnQuIFBhc3MgdGhlIGV2ZW50cyB0byB0aGUgbmV4dCBzY3JvbGwgdmll
dy4KQEAgLTg4Nyw3ICs4ODcsNyBAQCAtICh2b2lkKW1vdXNlVXA6KFdlYkV2ZW50ICopZXZlbnQK
IH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50CiAjZWxzZQogLSAodm9pZClrZXlE
b3duOihXZWJFdmVudCAqKWV2ZW50CkBAIC05MDAsNyArOTAwLDcgQEAgLSAodm9pZClrZXlEb3du
OihXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgYXV0b21hdGljYWxs
eSBiZWNhdXNlIG1vc3Qgb2YgdGhlIGtleXMgaGFuZGxlZCBoZXJlIGFyZSB0cmFuc2xhdGVkIGlu
dG8gbW92ZVhYWCBjb21tYW5kcywgd2hpY2ggYXJlIG5vdCBoYW5kbGVkCiAgICAgLy8gYnkgRWRp
dG9yIHdoZW4gZm9jdXMgaXMgbm90IGluIGVkaXRhYmxlIGNvbnRlbnQuCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICpjaGFyYWN0
ZXJzID0gW2V2ZW50IGNoYXJhY3RlcnNdOwogICAgIGludCBtb2RpZmllckZsYWdzID0gW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdOwogI2Vsc2UKQEAgLTk4Miw3ICs5ODIsNyBAQCAtICh2b2lkKWtleURv
d246KFdlYkV2ZW50ICopZXZlbnQKICAgICAgICAgICAgICAgICAgICAgY2FsbFN1cGVyID0gWUVT
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgICAgICBp
ZiAoKCFbc2VsZiBhbGxvd3NTY3JvbGxpbmddICYmICFbc2VsZiBfbGFyZ2VzdFNjcm9sbGFibGVD
aGlsZF0pIHx8CiAgICAgICAgICAgICAgICAgICAgIFtbW3NlbGYgd2luZG93XSBmaXJzdFJlc3Bv
bmRlcl0gaXNLaW5kT2ZDbGFzczpbTlNQb3BVcEJ1dHRvbiBjbGFzc11dKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIExldCBhcnJvdyBrZXlzIGdvIHRocm91Z2ggdG8gcG9wIHVwIGJ1dHRvbnMK
QEAgLTEwMDcsNyArMTAwNyw3IEBAIC0gKHZvaWQpa2V5RG93bjooV2ViRXZlbnQgKilldmVudAog
ICAgICAgICAgICAgICAgICAgICBjYWxsU3VwZXIgPSBZRVM7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIGlmICgoIVtzZWxmIGFsbG93c1Njcm9s
bGluZ10gJiYgIVtzZWxmIF9sYXJnZXN0U2Nyb2xsYWJsZUNoaWxkXSkgfHwKICAgICAgICAgICAg
ICAgICAgICAgW1tbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBpc0tpbmRPZkNsYXNzOltO
U1BvcFVwQnV0dG9uIGNsYXNzXV0pIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IGFycm93
IGtleXMgZ28gdGhyb3VnaCB0byBwb3AgdXAgYnV0dG9ucwpAQCAtMTA5OCw3ICsxMDk4LDcgQEAg
LSAoTlNWaWV3ICopX3dlYmNvcmVfZWZmZWN0aXZlRmlyc3RSZXNwbwogICAgIHJldHVybiB2aWV3
ID8gW3ZpZXcgX3dlYmNvcmVfZWZmZWN0aXZlRmlyc3RSZXNwb25kZXJdIDogW3N1cGVyIF93ZWJj
b3JlX2VmZmVjdGl2ZUZpcnN0UmVzcG9uZGVyXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKWNhblByaW50SGVhZGVyc0FuZEZvb3Rl
cnMKIHsKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbc2VsZiBfc2Nyb2xsVmlld10gZG9j
dW1lbnRWaWV3XTsKQEAgLTExNDksNyArMTE0OSw3IEBAIC0gKGZsb2F0KV9hcmVhCiAKIC0gKEJP
T0wpX2lzU2Nyb2xsYWJsZQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ID0gW3Nl
bGYgX3Njcm9sbFZpZXddOwogICAgIHJldHVybiBbc2Nyb2xsVmlldyBob3Jpem9udGFsU2Nyb2xs
aW5nQWxsb3dlZF0gfHwgW3Njcm9sbFZpZXcgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkXTsKICNl
bHNlCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCAtIChDbGFzcylfY3VzdG9tU2Nyb2xsVmlld0NsYXNz
CiAgICAgcmV0dXJuIFtfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3IGNsYXNzXTsKIH0KIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRD
dXN0b21TY3JvbGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiB7CiAgICAgaWYgKCFjdXN0
b21DbGFzcykKQEAgLTEyNzAsNiArMTI3MCw2IEBAIC0gKHZvaWQpX3NldEN1c3RvbVNjcm9sbFZp
ZXdDbGFzczooQ2xhc3MKICAgICBbb2xkU2Nyb2xsVmlldyByZWxlYXNlXTsKICAgICBbZG9jdW1l
bnRWaWV3IHJlbGVhc2VdOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgJKHJl
dmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgpAQCAtNzQsNCArNzQsNCBAQCBAaW50ZXJmYWNlIFdlYkZ1
bGxTY3JlZW5Db250cm9sbGVyIDogTlNXCiAtICh2b2lkKWNsb3NlOwogQGVuZAogCi0jZW5kaWYg
Ly8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLmgiCiAKQEAgLTYwMSw0ICs2MDEsNCBAQCAtICh2b2lkKV9z
dGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0CiBAZW5kCiAKIAotI2VuZGlmIC8qIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykgKi8KKyNlbmRpZiAvKiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAqLwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNyAr
MjU4LDcgQEAgLSAoRE9NRG9jdW1lbnQgKilET01Eb2N1bWVudAogICAgIHJldHVybiBbW19wcml2
YXRlLT5kYXRhU291cmNlIHdlYkZyYW1lXSBET01Eb2N1bWVudF07CiB9CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopYXR0cmlidXRlZFRleHQKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTlNNZW51U1BJLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViVUlLaXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlFdmVudENvZGVz
SU9TLmg+CkBAIC0xNzEsNyArMTcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW50ZXJmYWNlIE5TT2JqZWN0
IChBY2Nlc3NpYmlsaXR5KQogLSAoaWQpYWNjZXNzaWJpbGl0eUhpdFRlc3Q6KE5TUG9pbnQpcG9p
bnQ7CkBAIC03MjgsNyArNzI4LDcgQEAgLSAodm9pZClfcmVjdXJzaXZlOihCT09MKXJlY3Vyc2VY
IGRpc3BsYQogI2VuZGlmCiAjZW5kaWYKIC0gKHZvaWQpX3NldERyYXdzT3duRGVzY2VuZGFudHM6
KEJPT0wpZHJhd3NPd25EZXNjZW5kYW50czsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYTooaWQp
c2VuZGVyOwogI2VuZGlmCiBAZW5kCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIENhY2hlZElt
YWdlQ2xpZW50JiBwcm9taXNlZERhdGFDbAogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViTWFy
a2VkVGV4dFVwZGF0ZWROb3RpZmljYXRpb24gPSBAIldlYk1hcmtlZFRleHRVcGRhdGVkIjsKICNl
bmRpZgogCkBAIC04ODcsNyArODg3LDcgQEAgQGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViTlNU
ZXh0SW5wdXRTdQogLSAodm9pZClfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZTsKIC0gKHZvaWQpX3Vw
ZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRNYXJrZWRUZXh0OihpZClzdHJp
bmcgc2VsZWN0ZWRSYW5nZTooTlNSYW5nZSluZXdTZWxSYW5nZTsKIC0gKHZvaWQpZG9Db21tYW5k
QnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yOwogI2VuZGlmCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCAr
IChOU0FycmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzCiAgICAgcmV0dXJuIFtXZWJIVE1M
UmVwcmVzZW50YXRpb24gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzXTsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6
KFdlYkV2ZW50ICopZXZlbnQKIHsKQEAgLTE3NDksNyArMTc0OSw3IEBAIC0gKE5TVmlldyAqKWhp
dFRlc3Q6KE5TUG9pbnQpcG9pbnQKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NlZCkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgQk9PTCBjYXB0dXJlSGl0c09uU3Vidmlld3M7CiAgICAgaWYgKGZvcmNlTlNWaWV3
SGl0VGVzdCkKICAgICAgICAgY2FwdHVyZUhpdHNPblN1YnZpZXdzID0gTk87CkBAIC0xNzcxLDcg
KzE3NzEsNyBAQCAtIChOU1ZpZXcgKiloaXRUZXN0OihOU1BvaW50KXBvaW50CiAgICAgICAgICAg
ICBoaXRWaWV3ID0gc2VsZjsKICAgICAgICAgcmV0dXJuIGhpdFZpZXc7CiAgICAgfQotI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAg
ICBpZiAoW1tzZWxmIHN1cGVydmlld10gbW91c2U6cG9pbnQgaW5SZWN0OltzZWxmIGZyYW1lXV0p
CiAgICAgICAgIHJldHVybiBzZWxmOwpAQCAtMjAzMiw3ICsyMDMyLDcgQEAgLSAodm9pZClfaGFu
ZGxlQXV0b3Njcm9sbEZvck1vdXNlRHJhZ2dlZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFdBS1Zp
ZXcgb3ZlcnJpZGUuCiAtICh2b2lkKWxheW91dElmTmVlZGVkCkBAIC0yNTUwLDcgKzI1NTAsNyBA
QCAtIChDR0Zsb2F0KV9hZGp1c3RlZEJvdHRvbU9mUGFnZVdpdGhUb3A6CiAgICAgICAgIHJldHVy
biBuZXdCb3R0b207CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RFbGVtZW50CiB7CkBAIC0yNjA2LDcgKzI2
MDYsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKIAogICAgIF9wcml2YXRl
LT5wbHVnaW5Db250cm9sbGVyID0gYWRvcHROUyhbW1dlYlBsdWdpbkNvbnRyb2xsZXIgYWxsb2Nd
IGluaXRXaXRoRG9jdW1lbnRWaWV3OnNlbGZdKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gCiAgICAgICAgICAgICBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvciht
YXJrZWRUZXh0VXBkYXRlOikgCiAgICAgICAgICAgICAgICAgICAgbmFtZTpXZWJNYXJrZWRUZXh0
VXBkYXRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKQEAgLTI2MjQsNyArMjYyNCw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFp
blRocmVhZChbV2ViSFRNTFZpZXcgY2xhc3NdLCBzZWxmKSkKICAgICAgICAgcmV0dXJuOwogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6V2Vi
TWFya2VkVGV4dFVwZGF0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAjZW5kaWYKIApAQCAt
MjgxOSw3ICsyODE5LDcgQEAgV0VCQ09SRV9DT01NQU5EKHVuc2NyaXB0KQogV0VCQ09SRV9DT01N
QU5EKHlhbmspCiBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogV0VCQ09SRV9DT01NQU5EKGNsZWFyVGV4
dCkKIFdFQkNPUkVfQ09NTUFORCh0b2dnbGVCb2xkKQogV0VCQ09SRV9DT01NQU5EKHRvZ2dsZUl0
YWxpYykKQEAgLTMyOTksNyArMzI5OSw3IEBAIC0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3ICop
dmlldwogCiAgICAgaWYgKFtXZWJQbHVnaW5Db250cm9sbGVyIGlzUGx1Z0luVmlldzp2aWV3XSkg
ewogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CiAgICAgICAgIFtbd2ViVmlldyBf
VUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxBZGRQbHVnSW5WaWV3
OnZpZXddOwogI2VuZGlmCkBAIC00MjA0LDcgKzQyMDQsNyBAQCAtICh2b2lkKW1vdXNlRG93bjoo
V2ViRXZlbnQgKilldmVudAogICAgIC8vIFJlY29yZCB0aGUgbW91c2UgZG93biBwb3NpdGlvbiBz
byB3ZSBjYW4gZGV0ZXJtaW5lIGRyYWcgaHlzdGVyZXNpcy4KICAgICBbc2VsZiBfc2V0TW91c2VE
b3duRXZlbnQ6ZXZlbnRdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gVEVYVElOUFVUOiBpZiB0aGVyZSBpcyBtYXJrZWQgdGV4dCBhbmQgdGhl
IGN1cnJlbnQgaW5wdXQKICAgICAvLyBtYW5hZ2VyIHdhbnRzIHRvIGhhbmRsZSBtb3VzZSBldmVu
dHMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvCiAgICAgLy8gcGFzcyBpdCB0byB0aGVtLiBJZiBu
b3QsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGlucHV0CkBAIC00NDY1LDcgKzQ0NjUsNyBA
QCAtICh2b2lkKW1vdXNlVXA6KFdlYkV2ZW50ICopZXZlbnQKICAgICBbc2VsZiBfc3RvcEF1dG9z
Y3JvbGxUaW1lcl07CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkp
IHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBwYWdlLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZVVwKGV2ZW50KTsKICNlbHNlCiAgICAgICAgICAg
ICBwYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZVVwKGV2ZW50LCBbW3NlbGYg
X3dlYlZpZXddIF9wcmVzc3VyZUV2ZW50XSk7CkBAIC00NjI5LDcgKzQ2MjksNyBAQCAtIChCT09M
KXJlc2lnbkZpcnN0UmVzcG9uZGVyCiAgICAgICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc2lnbjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1
bWVudCgpKSB7CiAgICAgICAgICAgICBkb2N1bWVudC0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMo
RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpOwogICAgICAg
ICAgICAgZG9jdW1lbnQtPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25SZXN1bHQpOwpAQCAtNTAzNSw3ICs1MDM1LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0
eUhpdFRlc3Q6KE5TUG9pbnQpcG9pbgogewogICAgIGlkIGFjY1RyZWUgPSBbW3NlbGYgX2ZyYW1l
XSBhY2Nlc3NpYmlsaXR5Um9vdF07CiAgICAgaWYgKGFjY1RyZWUpIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgcmV0dXJuIFthY2NUcmVlIGFj
Y2Vzc2liaWxpdHlIaXRUZXN0OnBvaW50XTsKICNlbHNlCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01NjgyLDcgKzU2ODIsNyBAQCAtICh2b2lkKW90aGVy
TW91c2VVcDooTlNFdmVudCAqKWV2ZW50CiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKW1hcmtlZFRleHRVcGRhdGU6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7CiAgICAgTlNTdHJpbmcgKnRleHQgPSBbbm90aWZp
Y2F0aW9uIG9iamVjdF07CkBAIC02MDQ4LDcgKzYwNDgsNyBAQCAtIChCT09MKV9pbnRlcnByZXRL
ZXlFdmVudDooS2V5Ym9hcmRFdmVuCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKICNkZWZpbmUga1dl
YkVudGVyS2V5ICAgICAgICAgMHgwMDAzCiAjZGVmaW5lIGtXZWJCYWNrc3BhY2VLZXkgICAgIDB4
MDAwOApAQCAtNjA5OSw3ICs2MDk5LDcgQEAgLSAoQk9PTClfaGFuZGxlRWRpdGluZ0tleUV2ZW50
OihLZXlib2FyZAogICAgIH0KICAgICByZXR1cm4gTk87CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShNQUMp
CiAKQEAgLTY4NDQsNyArNjg0NCw3IEBAIC0gKE5TVmlldyAqKXNlbGVjdGlvblZpZXcKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogCiBzdGF0aWMgQ0dJbWFnZVJlZiBpbWFnZUZyb21SZWN0KEZyYW1lKiBmcmFtZSwgQ0dS
ZWN0IHJlY3QpCiB7CkBAIC02OTIyLDcgKzY5MjIsNyBAQCBzdGF0aWMgQ0dJbWFnZVJlZiBzZWxl
Y3Rpb25JbWFnZShGcmFtZSogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZP
Uk0oTUFDKQogLSAoTlNJbWFnZSAqKXNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9P
TClmb3JjZUJsYWNrVGV4dApAQCAtNjkzNyw3ICs2OTM3LDcgQEAgLSAoQ0dJbWFnZVJlZilzZWxl
Y3Rpb25JbWFnZUZvcmNpbmdCbGFjawogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKGNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpOwogI2Vs
c2UKICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIEBpbnRl
cmZhY2UgV2ViSFRNTFZpZXcgKFdlYkludGVybmFsKQogLSAodm9pZClzZXRQcm9taXNlZERyYWdU
SUZGRGF0YVNvdXJjZTooV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqKXNvdXJjZTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9oYW5k
bGVFZGl0aW5nS2V5RXZlbnQ6KFdlYkNvcmU6OktleWJvYXJkRXZlbnQgKilldmVudDsKICNlbmRp
ZgogCkBAIC04Niw3ICs4Niw3IEBAIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkludGVybmFs
KQogLSAoQk9PTClfd2ViX2lzRHJhd2luZ0ludG9BY2NlbGVyYXRlZExheWVyOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX2xh
eW91dElmTmVlZGVkOwogI2VuZGlmCiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBAaW50ZXJmYWNlIFdl
YkhUTUxWaWV3IChXZWJJbnRlcm5hbCkKIEBlbmQKIAogQGludGVyZmFjZSBXZWJIVE1MVmlldyAo
UmVtb3ZlZEFwcEtpdFN1cGVyY2xhc3NNZXRob2RzKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClkZWxldGU6KGlkKXNlbmRlcjsKIC0gKHZvaWQp
dHJhbnNwb3NlOihpZClzZW5kZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5oCShyZXZpc2lvbiAyMzcyNjAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAogI2ltcG9ydCA8UXVh
cnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYg
UExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAogI2ltcG9ydCAiV2ViSW5k
aWNhdGVMYXllci5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAkocmV2aXNp
b24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXli
YWNrVGFyZ2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQg
IldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKIAotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1
bWVudEV4dHJhcy5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEy
ICsyMywxMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAY2xhc3MgUERGRG9jdW1lbnQ7CiAjZW5kaWYKIAog
TlNBcnJheSAqYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoQ0dQREZEb2N1bWVudFJlZik7CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNBcnJheSAqYWxs
U2NyaXB0c0luUERGRG9jdW1lbnQoUERGRG9jdW1lbnQgKik7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4
dHJhcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
PFBERktpdC9QREZEb2N1bWVudC5oPgogI2VuZGlmCiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBOU0Fy
cmF5ICphbGxTY3JpcHRzSW5QREZEb2N1bWVudChDR1BERkRvCiAgICAgcmV0dXJuIHNjcmlwdHM7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNB
cnJheSAqYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoUERGRG9jdW1lbnQgKmRvY3VtZW50KQogewog
ICAgIHJldHVybiBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChbZG9jdW1lbnQgZG9jdW1lbnRSZWZd
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlJlcHJlc2VudGF0aW9uLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViRG9jdW1lbnQuaCIKIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJQREZSZXByZXNlbnRhdGlv
bi5oIgogCkBAIC0xNTcsNCArMTU3LDQgQEAgLSAoTlNTdHJpbmcgKil0aXRsZQogCiBAZW5kCiAK
LSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3LmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UERGVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViRG9jdW1l
bnRJbnRlcm5hbC5oPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2ltcG9ydCA8QXVkaW9Ub29s
Ym94L0F1ZGlvU2Vzc2lvbi5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
TWVzc2FnZS5oPgpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVsIGNhY2hl
TW9kZWxGb3JNYWluQnUKICAgICAgICAgaWYgKCFpc0xpbmtlZEFnYWluc3RXZWJLaXQpCiAgICAg
ICAgICAgICByZXR1cm4gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOyAvLyBBcHBzIHRoYXQg
ZG9uJ3QgbGluayBhZ2FpbnN0IFdlYktpdCBwcm9iYWJseSBhcmVuJ3QgbWVhbnQgdG8gYmUgYnJv
d3NlcnMuCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBib29sIGlzTGVnYWN5QXBwID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRf
RklSU1RfVkVSU0lPTl9XSVRIX0NBQ0hFX01PREVMX0FQSSk7CiAjZWxzZQogICAgICAgICBib29s
IGlzTGVnYWN5QXBwID0gZmFsc2U7CkBAIC0xODAsMTMgKzE4MCwxMyBAQCBwdWJsaWM6CiAgICAg
LCBhdXRvc2F2ZXMoTk8pCiAgICAgLCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwoTk8p
CiAgICAgLCBudW1XZWJWaWV3cygwKQotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICwgcmVhZFdyaXRlUXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuV2ViUHJlZmVyZW5jZXMuUmVhZFdyaXRlUXVldWUiLCBESVNQQVRDSF9RVUVVRV9D
T05DVVJSRU5UKSkKICNlbmRpZgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB+V2ViUHJlZmVyZW5jZXNQcml2YXRlKCkKICAg
ICB7CiAgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UocmVhZFdyaXRlUXVldWUpOwpAQCAtMTk5LDcg
KzE5OSw3IEBAIHB1YmxpYzoKICAgICBCT09MIGF1dG9zYXZlczsKICAgICBCT09MIGF1dG9tYXRp
Y2FsbHlEZXRlY3RzQ2FjaGVNb2RlbDsKICAgICB1bnNpZ25lZCBudW1XZWJWaWV3czsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9xdWV1
ZV90IHJlYWRXcml0ZVF1ZXVlOwogI2VuZGlmCiB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIC0gKHZv
aWQpX3NldFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZToodW5zaWcKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylfdW5zaWduZWRMb25nTG9uZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIEBlbmQKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBX
ZWJQcmVmZXJlbmNlcyAoKQogLSAoaWQpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWFu
SWRlbnRpZmllciBzZW5kQ2hhbmdlTm90aWZpY2F0aW9uOihCT09MKXNlbmRDaGFuZ2VOb3RpZmlj
YXRpb247CiBAZW5kCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAog
ICAgIHJldHVybiBbc2VsZiBpbml0V2l0aElkZW50aWZpZXI6ZmFrZUlkZW50aWZpZXJdOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZClpbml0
V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIGluaXRXaXRoSWRlbnRpZmllcjphbklkZW50aWZpZXIgc2VuZENoYW5nZU5vdGlmaWNhdGlv
bjpZRVNdOwogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICop
YW5JZGVudGlmaWVyIHNlbmRDaGFuZ2VOb3RpZmljYXRpb246KEJPT0wpc2VuZENoYW5nZU5vdGlm
aWNhdGlvbgogI2Vsc2UKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3Ry
aW5nICopYW5JZGVudGlmaWVyCkBAIC0yNzQsNyArMjc0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooTlNTdAogCiAgICAgW3NlbGYgX3VwZGF0ZVByaXZhdGVCcm93c2lu
Z1N0YXRlVG86W3NlbGYgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF1dOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHNlbmRDaGFuZ2VOb3RpZmlj
YXRpb24pIHsKICAgICAgICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRp
b25dOwogICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2VkTm90aWZpY2F0aW9uXTsK
QEAgLTM0MCwxMiArMzQwLDEyIEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICop
ZW5jb2QKIHsKICAgICBpZiAoW2VuY29kZXIgYWxsb3dzS2V5ZWRDb2RpbmddKXsKICAgICAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0Ol9wcml2YXRlLT5pZGVudGlmaWVyLmdldCgpIGZvcktleTpA
IklkZW50aWZpZXIiXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgZGlzcGF0Y2hfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CiAj
ZW5kaWYKICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Ol9wcml2YXRlLT52YWx1ZXMuZ2V0
KCkgZm9yS2V5OkAiVmFsdWVzIl07CiAgICAgICAgIExPRyAoRW5jb2RpbmcsICJJZGVudGlmaWVy
ID0gJUAsIFZhbHVlcyA9ICVAXG4iLCBfcHJpdmF0ZS0+aWRlbnRpZmllci5nZXQoKSwgX3ByaXZh
dGUtPnZhbHVlcy5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIH0pOwogI2VuZGlmCiAgICAgfQpAQCAtMzUzLDExICszNTMsMTEgQEAg
LSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZAogICAgICAgICBpbnQgdmVy
c2lvbiA9IFdlYlByZWZlcmVuY2VzVmVyc2lvbjsKICAgICAgICAgW2VuY29kZXIgZW5jb2RlVmFs
dWVPZk9iakNUeXBlOkBlbmNvZGUoaW50KSBhdDomdmVyc2lvbl07CiAgICAgICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDpfcHJpdmF0ZS0+aWRlbnRpZmllci5nZXQoKV07Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGRpc3BhdGNoX3N5bmMoX3By
aXZhdGUtPnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpfcHJpdmF0ZS0+dmFsdWVzLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgfSk7CiAjZW5kaWYKICAgICB9CkBAIC0zNjUs
NyArMzY1LDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZAogCiAr
IChXZWJQcmVmZXJlbmNlcyAqKXN0YW5kYXJkUHJlZmVyZW5jZXMKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfc3RhbmRhcmRQcmVmZXJl
bmNlcyA9PSBuaWwpIHsKICAgICAgICAgX3N0YW5kYXJkUHJlZmVyZW5jZXMgPSBbW1dlYlByZWZl
cmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6bmlsXTsKICAgICAgICAgW19zdGFuZGFy
ZFByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpZRVNdOwpAQCAtMzg5LDcgKzM4OSw3IEBAICsgKFdl
YlByZWZlcmVuY2VzICopc3RhbmRhcmRQcmVmZXJlbmNlcwogLy8gaWYgd2UgZXZlciBoYXZlIG1v
cmUgdGhhbiBvbmUgV2ViUHJlZmVyZW5jZXMgb2JqZWN0LCB0aGlzIHdvdWxkIG1vdmUgdG8gaW5p
dAogKyAodm9pZClpbml0aWFsaXplCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwpAQCAtNDA2LDEzICs0MDYsMTMgQEAgKyAodm9pZClp
bml0aWFsaXplCiAgICAgICAgIEAiQ291cmllciIsICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
Rml4ZWRGb250UHJlZmVyZW5jZUtleSwKICAgICAgICAgQCJUaW1lcyIsICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAIkhlbHZldGlj
YSIsICAgICAgICAgICAgICAgICAgIFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAi
QXBwbGUgQ2hhbmNlcnkiLCAgICAgICAgICAgICAgV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNl
S2V5LAogI2Vsc2UKICAgICAgICAgQCJTbmVsbCBSb3VuZGhhbmQiLCAgICAgICAgICAgICBXZWJL
aXRDdXJzaXZlRm9udFByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgQCJQYXB5cnVzIiwg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXksCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiQXBwbGVD
b2xvckVtb2ppIiwgICAgICAgICAgICAgV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5
LAogI2Vsc2UKICAgICAgICAgQCJBcHBsZSBDb2xvciBFbW9qaSIsICAgICAgICAgICBXZWJLaXRQ
aWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXksCkBAIC00MjUsMTIgKzQyNSwxMiBAQCArICh2b2lk
KWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJL
aXRVc2VzRW5jb2RpbmdEZXRlY3RvclByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgQCIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSwKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCAgIFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFRleHRBcmVhc0FyZVJlc2l6
YWJsZVByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgICBXZWJLaXRTaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0UHJlZmVyZW5jZUtl
eSwKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEphdmFFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwg
IFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTQzOCw3ICs0MzgsNyBA
QCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllF
U10sICBXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OllFU10sICBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5LAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5UHJlZmVyZW5jZUtleSwKQEAgLTQ0Nyw3ICs0NDcsNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXREYXRhYmFz
ZXNFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OllFU10sICBXZWJLaXRIVFRQRXF1aXZFbmFibGVkUHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFN0b3JhZ2VUcmFja2VyRW5hYmxlZFByZWZlcmVuY2VL
ZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJL
aXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTQ1NywxMSArNDU3LDExIEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSwgIFdlYktpdERpc3BsYXlJbWFnZXNLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpOT10sICAgV2ViS2l0TG9hZFNpdGVJY29uc0tleSwKICAgICAgICAgQCIxODAwIiwgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVy
dmFsS2V5LAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VGFiVG9MaW5rc1By
ZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5P
XSwgICBXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZh
bGVudHNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCAgIFdlYktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0
ZWRUZXh0UHJlZmVyZW5jZUtleSwKQEAgLTQ3MCw3ICs0NzAsNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICNlbmRpZgogICAgICAgICBAIjAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFVzZVNpdGVTcGVjaWZpY1Nwb29maW5nUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6V2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yXSwgV2ViS2l0
RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5LAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OldlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVu
dUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOk5PXSwgICBXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LApAQCAt
NDk4LDcgKzQ5OCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6REVGQVVMVF9TVUJQSVhFTF9BTlRJQUxJQVNFRF9MQVlFUl9URVhUX0VOQUJM
RURdLCBXZWJLaXRTdWJwaXhlbEFudGlhbGlhc2VkTGF5ZXJUZXh0RW5hYmxlZFByZWZlcmVuY2VL
ZXksCiAKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXREaXNw
bGF5TGlzdERyYXdpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKLSNpZiBQTEFURk9STShJT1MpICYm
ICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sICBXZWJLaXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRDYW52YXNV
c2VzQWNjZWxlcmF0ZWREcmF3aW5nUHJlZmVyZW5jZUtleSwKICNlbHNlCkBAIC01MTcsNyArNTE3
LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDpOT10sICBXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TGFyZ2VJbWFn
ZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5LAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0
PHVpbnQzMl90PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZs
YXR0ZW5pbmdQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZEludDpzdGF0aWNfY2FzdDx1aW50MzJfdD4oRnJhbWVGbGF0dGVuaW5nOjpEaXNh
YmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQcmVmZXJlbmNlS2V5LApAQCAtNTMzLDcgKzUz
Myw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSwgIFdlYktpdEFWRm91bmRhdGlvbk5TVVJMU2Vzc2lvbkVuYWJsZWRLZXksCiAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U3VwcHJlc3Nlc0luY3Jl
bWVudGFsUmVuZGVyaW5nS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXR0
YWNobWVudEVsZW1lbnRFbmFibGVkXSwgV2ViS2l0QXR0YWNobWVudEVsZW1lbnRFbmFibGVkUHJl
ZmVyZW5jZUtleSwKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxz
Y3JlZW5QcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCAgIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
S2V5LApAQCAtNTY5LDcgKzU2OSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgICBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJl
bmNlS2V5LAogCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgIFdlYktp
dFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uS2V5LAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShXSVJFTEVTU19U
QVJHRVRfUExBWUJBQ0spCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAg
V2ViS2l0QWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5LAogI2VuZGlm
CkBAIC01ODAsNyArNTgwLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OldlYkFsbG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJL
aXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgIFdlYktpdFRlbGVwaG9uZVBhcnNpbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6LTFdLCAgICAgIFdlYktpdExheW91
dEludGVydmFsUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDotMS4wZl0sIFdlYktpdE1heFBhcnNlRHVyYXRpb25QcmVmZXJlbmNlS2V5LApAQCAtNjQ5LDcg
KzY0OSw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCBXZWJLaXREaXJlY3RvcnlVcGxvYWRFbmFibGVkUHJlZmVyZW5jZUtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIFdlYktpdFdlYkFuaW1hdGlvbnNF
bmFibGVkUHJlZmVyZW5jZUtleSwKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCBXZWJLaXRW
aXN1YWxWaWV3cG9ydEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2Vsc2UKICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOllFU10sIFdlYktpdFZpc3VhbFZpZXdwb3J0RW5hYmxlZFByZWZl
cmVuY2VLZXksCkBAIC02OTMsNyArNjkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAg
IEBOTywgV2ViS2l0U2VydmVyVGltaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIG5p
bF07CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFRoaXMgdmFsdWUgc2hvdWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBpcyBhc3N1bWVkIGlu
IHRoZSBpbml0aWFsaXphdGlvbiBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkg
YWJvdmUKICAgICBBU1NFUlQoa1BERkRpc3BsYXlTaW5nbGVQYWdlQ29udGludW91cyA9PSAxKTsK
ICNlbmRpZgpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKE5TU3RyaW5nICopaWRlbnRpZmllcgogLSAo
aWQpX3ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogewogICAgIE5TU3RyaW5nICpfa2V5ID0g
S0VZKGtleSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgX19ibG9jayBpZCBvID0gbmlsOwogICAgIGRpc3BhdGNoX3N5bmMoX3ByaXZhdGUtPnJlYWRX
cml0ZVF1ZXVlLCBeewogICAgICAgICBvID0gW19wcml2YXRlLT52YWx1ZXMuZ2V0KCkgb2JqZWN0
Rm9yS2V5Ol9rZXldOwpAQCAtNzQzLDExICs3NDMsMTEgQEAgLSAodm9pZClfc2V0U3RyaW5nVmFs
dWU6KE5TU3RyaW5nICopdmFsdQogICAgIGlmIChbW3NlbGYgX3N0cmluZ1ZhbHVlRm9yS2V5Omtl
eV0gaXNFcXVhbFRvU3RyaW5nOnZhbHVlXSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TU3RyaW5n
ICpfa2V5ID0gS0VZKGtleSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9wcml2YXRlLT5yZWFkV3JpdGVRdWV1
ZSwgXnsKICNlbmRpZgogICAgIFtfcHJpdmF0ZS0+dmFsdWVzLmdldCgpIHNldE9iamVjdDp2YWx1
ZSBmb3JLZXk6X2tleV07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgfSk7CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKQEAgLTc2
NiwxMSArNzY2LDExIEBAIC0gKHZvaWQpX3NldEludGVnZXJWYWx1ZTooaW50KXZhbHVlIGZvcksK
ICAgICBpZiAoW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTprZXldID09IHZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgTlNTdHJpbmcgKl9rZXkgPSBLRVkoa2V5KTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMo
X3ByaXZhdGUtPnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgW19wcml2YXRlLT52YWx1
ZXMuZ2V0KCkgc2V0T2JqZWN0OkAodmFsdWUpIGZvcktleTpfa2V5XTsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChf
cHJpdmF0ZS0+YXV0b3NhdmVzKQpAQCAtNzg5LDExICs3ODksMTEgQEAgLSAodm9pZClfc2V0VW5z
aWduZWRJbnRWYWx1ZToodW5zaWduZWQgaQogICAgIGlmIChbc2VsZiBfdW5zaWduZWRJbnRWYWx1
ZUZvcktleTprZXldID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgTlNTdHJpbmcgKl9r
ZXkgPSBLRVkoa2V5KTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMoX3ByaXZhdGUtPnJlYWRXcml0ZVF1ZXVlLCBe
ewogI2VuZGlmCiAgICAgW19wcml2YXRlLT52YWx1ZXMuZ2V0KCkgc2V0T2JqZWN0OkAodmFsdWUp
IGZvcktleTpfa2V5XTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJpdmF0ZS0+YXV0b3NhdmVzKQpAQCAtODEy
LDExICs4MTIsMTEgQEAgLSAodm9pZClfc2V0RmxvYXRWYWx1ZTooZmxvYXQpdmFsdWUgZm9ySwog
ICAgIGlmIChbc2VsZiBfZmxvYXRWYWx1ZUZvcktleTprZXldID09IHZhbHVlKQogICAgICAgICBy
ZXR1cm47CiAgICAgTlNTdHJpbmcgKl9rZXkgPSBLRVkoa2V5KTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9iYXJyaWVyX3N5bmMoX3By
aXZhdGUtPnJlYWRXcml0ZVF1ZXVlLCBeewogI2VuZGlmCiAgICAgW19wcml2YXRlLT52YWx1ZXMu
Z2V0KCkgc2V0T2JqZWN0OkAodmFsdWUpIGZvcktleTpfa2V5XTsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNlbmRpZgogICAgIGlmIChfcHJp
dmF0ZS0+YXV0b3NhdmVzKQpAQCAtODM0LDExICs4MzQsMTEgQEAgLSAodm9pZClfc2V0Qm9vbFZh
bHVlOihCT09MKXZhbHVlIGZvcktleQogICAgIGlmIChbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Omtl
eV0gPT0gdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICBOU1N0cmluZyAqX2tleSA9IEtFWShr
ZXkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRp
c3BhdGNoX2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CiAjZW5kaWYK
ICAgICBbX3ByaXZhdGUtPnZhbHVlcy5nZXQoKSBzZXRPYmplY3Q6QCh2YWx1ZSkgZm9yS2V5Ol9r
ZXldOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIH0p
OwogI2VuZGlmCiAgICAgaWYgKF9wcml2YXRlLT5hdXRvc2F2ZXMpCkBAIC04NTcsMTEgKzg1Nywx
MSBAQCAtICh2b2lkKV9zZXRMb25nTG9uZ1ZhbHVlOihsb25nIGxvbmcpdmFsCiAgICAgaWYgKFtz
ZWxmIF9sb25nTG9uZ1ZhbHVlRm9yS2V5OmtleV0gPT0gdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICBOU1N0cmluZyAqX2tleSA9IEtFWShrZXkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+
cmVhZFdyaXRlUXVldWUsIF57CiAjZW5kaWYKICAgICBbX3ByaXZhdGUtPnZhbHVlcy5nZXQoKSBz
ZXRPYmplY3Q6QCh2YWx1ZSkgZm9yS2V5Ol9rZXldOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIH0pOwogI2VuZGlmCiAgICAgaWYgKF9wcml2YXRlLT5h
dXRvc2F2ZXMpCkBAIC04ODAsMTEgKzg4MCwxMSBAQCAtICh2b2lkKV9zZXRVbnNpZ25lZExvbmdM
b25nVmFsdWU6KHVuc2lnCiAgICAgaWYgKFtzZWxmIF91bnNpZ25lZExvbmdMb25nVmFsdWVGb3JL
ZXk6a2V5XSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TU3RyaW5nICpfa2V5ID0g
S0VZKGtleSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9wcml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKICNl
bmRpZgogICAgIFtfcHJpdmF0ZS0+dmFsdWVzLmdldCgpIHNldE9iamVjdDpAKHZhbHVlKSBmb3JL
ZXk6X2tleV07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgfSk7CiAjZW5kaWYKICAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKQEAgLTEwMDIsNyAr
MTAwMiw3IEBAIC0gKHZvaWQpc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWU6KE5TU3QKICAgICBb
c2VsZiBfc2V0U3RyaW5nVmFsdWU6IGVuY29kaW5nIGZvcktleTogV2ViS2l0RGVmYXVsdFRleHRF
bmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5XTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKXVzZXJTdHlsZVNoZWV0RW5hYmxlZAogewog
ICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRVc2VyU3R5bGVTaGVldEVu
YWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTEwNzMsOSArMTA3Myw5IEBAIC0gKHZvaWQpc2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbjooTlNVUkwKIHsKICAgICAvLyBuby1vcAogfQotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpc2hvdWxkUHJp
bnRCYWNrZ3JvdW5kcwogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJL
aXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleV07CkBAIC0xMTY3LDcgKzExNjcs
NyBAQCAtIChCT09MKWF1dG9zYXZlcwogICAgIHJldHVybiBfcHJpdmF0ZS0+YXV0b3NhdmVzOwog
fQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZv
aWQpc2V0VGFic1RvTGlua3M6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6
IGZsYWcgZm9yS2V5OiBXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleV07CkBAIC0xMjI1LDcg
KzEyMjUsNyBAQCAtIChCT09MKXVzZXNQYWdlQ2FjaGUKIAogLSAodm9pZClfcG9zdENhY2hlTW9k
ZWxDaGFuZ2VkTm90aWZpY2F0aW9uCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKSB7CiAgICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpfY21kIHdpdGhPYmplY3Q6bmlsIHdhaXRV
bnRpbERvbmU6Tk9dOwogICAgICAgICByZXR1cm47CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCAtICh2
b2lkKXNldFhTU0F1ZGl0b3JFbmFibGVkOihCT09MKWZsYWcKICAgICBbc2VsZiBfc2V0Qm9vbFZh
bHVlOmZsYWcgZm9yS2V5OldlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9P
TClyZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzCiB7CiAgICAgcmV0dXJuIFtzZWxm
IF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50
c1ByZWZlcmVuY2VLZXldOwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgLSAodm9pZClzZXRUZXh0QXJl
YXNBcmVSZXNpemFibGU6KEJPT0wpZgogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcg
Zm9yS2V5OiBXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5XTsKIH0KLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiAtIChCT09MKXNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQKIHsKQEAgLTE1MzQsNyArMTUz
NCw3IEBAIC0gKE5TVGltZUludGVydmFsKV9iYWNrRm9yd2FyZENhY2hlRXhwaXIKICAgICByZXR1
cm4gKE5TVGltZUludGVydmFsKVtzZWxmIF9mbG9hdFZhbHVlRm9yS2V5OldlYktpdEJhY2tGb3J3
YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXldOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9zdGFuZGFsb25lCiB7CiAgICAgcmV0
dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0U3RhbmRhbG9uZVByZWZlcmVuY2VLZXld
OwpAQCAtMTU3OCw3ICsxNTc4LDcgQEAgLSAoQk9PTClfdGV4dEF1dG9zaXppbmdFbmFibGVkCiB9
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAodm9pZClfc2V0TGF5b3V0SW50ZXJ2YWw6KGludClsCiB7CiAgICAgW3NlbGYgX3NldEludGVn
ZXJWYWx1ZTpsIGZvcktleTpXZWJLaXRMYXlvdXRJbnRlcnZhbFByZWZlcmVuY2VLZXldOwpAQCAt
MTY0OSw5ICsxNjQ5LDkgQEAgLSAoZmxvYXQpX3Bhc3N3b3JkRWNob0R1cmF0aW9uCiAgICAgcmV0
dXJuIFtzZWxmIF9mbG9hdFZhbHVlRm9yS2V5OldlYktpdFBhc3N3b3JkRWNob0R1cmF0aW9uUHJl
ZmVyZW5jZUtleV07CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAtIChmbG9hdClQREZTY2FsZUZhY3RvcgogewogICAgIHJldHVybiBbc2VsZiBf
ZmxvYXRWYWx1ZUZvcktleTpXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXldOwpAQCAt
MTY4Niw3ICsxNjg2LDcgQEAgLSAodm9pZClzZXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdp
bgogICAgIFtzZWxmIF9zZXRMb25nTG9uZ1ZhbHVlOnF1b3RhIGZvcktleTpXZWJLaXRBcHBsaWNh
dGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhXTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChQREZEaXNwbGF5TW9kZSlQREZEaXNwbGF5TW9k
ZQogewogICAgIFBERkRpc3BsYXlNb2RlIHZhbHVlID0gc3RhdGljX2Nhc3Q8UERGRGlzcGxheU1v
ZGU+KFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJl
bmNlS2V5XSk7CkBAIC0xNzYwLDcgKzE3NjAsNyBAQCAtICh2b2lkKXNldERhdGFiYXNlc0VuYWJs
ZWQ6KEJPT0wpZGF0YWJhCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpkYXRhYmFzZXNFbmFibGVk
IGZvcktleTpXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpc3RvcmFnZVRy
YWNrZXJFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0
U3RvcmFnZVRyYWNrZXJFbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0xODMxLDcgKzE4MzEsNyBA
QCArICh2b2lkKV9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOihOCiAKIC0gKHZvaWQpX3Bv
c3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24KIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpIHsK
ICAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOl9jbWQgd2l0aE9iamVj
dDpuaWwgd2FpdFVudGlsRG9uZTpOT107CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzQsNyArMTg3
NCw3IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmkKIAogKyAodm9p
ZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKTsKQEAgLTIzMjIsNyArMjMyMiw3IEBAIC0gKHZvaWQpc2V0RW5hYmxlSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW4KICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OiBXZWJLaXRF
bmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQk9PTCltZWRpYVBsYXli
YWNrQWxsb3dzQWlyUGxheQogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Oldl
YktpdEFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtleV07CkBAIC0yNDA0
LDcgKzI0MDQsNyBAQCAtICh2b2lkKXNldE5ldHdvcmtJbnRlcmZhY2VOYW1lOihOU1N0cmluCiB7
CiAgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOm5hbWUgZm9yS2V5OldlYktpdE5ldHdvcmtJbnRl
cmZhY2VOYW1lUHJlZmVyZW5jZUtleV07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIERlcHJlY2F0ZWQuIFVzZSAtdmlkZW9Q
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUgYW5kIC1hdWRpb1BsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZSBpbnN0ZWFkLgogLSAoQk9PTCltZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVy
ZQpAQCAtMjUzOSw3ICsyNTM5LDcgQEAgLSAodm9pZClzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnM6KEJPTwogCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpX2ludmFsaWRhdGVDYWNoZWRQcmVmZXJlbmNlcwogewogICAgIGRpc3BhdGNo
X2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CkBAIC0yNjgyLDcgKzI2
ODIsNyBAQCAtICh2b2lkKXNldERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZDooQk9PCiAKIC0gKHZv
aWQpc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3Rv
cmFnZUJsb2NraW5nUG9saWN5CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB3cml0ZSB0aGUgc2V0dGluZyBvdXQs
IHNvIHdlIGp1c3QgcmVzZXQgdGhlIGRlZmF1bHQgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBuZXcg
c2V0dGluZy4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHJlbW92ZXMgYW55IGRlZmF1bHRzIHBy
ZXZpb3VzbHkgcmVnaXN0ZXJlZCBieSBjbGllbnQgcHJvY2Vzcywgd2hpY2ggaXMgbm90IGFwcHJv
cHJpYXRlIGZvciB0aGlzIG1ldGhvZCB0byBkby4KICAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OnN0b3JhZ2VCbG9ja2luZ1BvbGljeV0gZm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eUtleV07CkBAIC0zMjE3LDcgKzMyMTcsNyBAQCAtICh2b2lkKXNldE1lZGlhVXNlckdlc3R1cmVJ
bmhlcml0c0Zyb21ECiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRN
ZWRpYVVzZXJHZXN0dXJlSW5oZXJpdHNGcm9tRG9jdW1lbnRdOwogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKXF1aWNrTG9va0RvY3VtZW50
U2F2aW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktp
dFF1aWNrTG9va0RvY3VtZW50U2F2aW5nUHJlZmVyZW5jZUtleV07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29y
ZVJlc291cmNlOihSZQogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7
CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0zMzQsNyArMzM0LDcg
QEAgLSAoTlNTdHJpbmcgKilfc3VnZ2VzdGVkRmlsZW5hbWUKICAgICByZXR1cm4gc3VnZ2VzdGVk
RmlsZW5hbWU7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogLSAoTlNGaWxlV3JhcHBlciAqKV9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uCiB7CiAg
ICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpbc2VsZiBkYXRhXV0gYXV0b3JlbGVhc2VdOwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRDb21wbGV0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGNsYXNzIFdlYlZp
ZXc7CiBAY2xhc3MgV2ViSFRNTFZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgQGludGVyZmFjZSBXZWJUZXh0SXRlcmF0b3JQcml2
YXRlIDogTlNPYgogCiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI0Myw3ICsyNDMsNyBAQAogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1wb3J0
ICJXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5oIgpAQCAtMzA1LDcgKzMwNSw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViSW5k
aWNhdGVMYXllci5oIgogI2VuZGlmCiAjZW5kaWYKQEAgLTMyMiw3ICszMjIsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
IldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvV2ViTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5oPgogI2VuZGlmCkBAIC0zNjIsNyArMzYyLDcgQEAgU09GVF9M
SU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydQogU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKExvb2t1cCwgTFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlLCBOU1N0cmluZyAq
KQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBAaW50ZXJmYWNlIE5TU3BlbGxDaGVja2VyIChXZWJOU1NwZWxsQ2hlY2tlckRldGFpbHMp
CiAtICh2b2lkKV9wcmVmbGlnaHRDaG9zZW5TcGVsbFNlcnZlcjsKQEAgLTUzNCw3ICs1MzQsNyBA
QCBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIHBvcCIpIFwKIHN0YXRpYyBCT09MIHNfZGlkU2V0
Q2FjaGVNb2RlbDsKIHN0YXRpYyBXZWJDYWNoZU1vZGVsIHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hl
TW9kZWxEb2N1bWVudFZpZXdlcjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIENsYXNzIHNfcGRmUmVwcmVzZW50YXRpb25DbGFzczsKIHN0YXRp
YyBDbGFzcyBzX3BkZlZpZXdDbGFzczsKICNlbmRpZgpAQCAtNTQzLDIwICs1NDMsMjAgQEAgc3Rh
dGljIENsYXNzIHNfcGRmVmlld0NsYXNzOwogc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3Bl
bltdID0gIkF0IGxlYXN0IG9uZSBXZWJWaWV3IGlzIHN0aWxsIG9wZW4uIjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIFdl
YlZpZXcoV2ViVmlld1ByaXZhdGUpCiAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlBy
ZWZlcmVuY2VzICopcHJlZmVyZW5jZXM7CiAtICh2b2lkKV91cGRhdGVTY3JlZW5TY2FsZUZyb21X
aW5kb3c7CiBAZW5kCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxl
Z2F0ZSkKIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZToo
aWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW07CiBAZW5kCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGNsYXNzIF9XZWJT
YWZlRm9yd2FyZGVyOwogCiBAaW50ZXJmYWNlIF9XZWJTYWZlQXN5bmNGb3J3YXJkZXIgOiBOU09i
amVjdCB7CkBAIC01NzAsMTMgKzU3MCwxMyBAQCBAaW50ZXJmYWNlIF9XZWJTYWZlRm9yd2FyZGVy
IDogTlNPYmplY3QKIHsKICAgICBpZCB0YXJnZXQ7IC8vIE5vbi1yZXRhaW5lZC4gRG9uJ3QgcmV0
YWluIGRlbGVnYXRlcy4KICAgICBpZCBkZWZhdWx0VGFyZ2V0OwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIF9XZWJTYWZlQXN5bmNGb3J3YXJkZXIgKmFz
eW5jRm9yd2FyZGVyOwogICAgIGRpc3BhdGNoX29uY2VfdCBhc3luY0ZvcndhcmRlclByZWQ7CiAj
ZW5kaWYKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFRhcmdldDooaWQpdGFyZ2V0IGRlZmF1
bHRUYXJnZXQ6KGlkKWRlZmF1bHRUYXJnZXQ7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWNsZWFyVGFyZ2V0OwogLSAoaWQpYXN5bmNGb3J3YXJk
ZXI7CiAjZW5kaWYKQEAgLTc2MCw3ICs3NjAsNyBAQCBOU1N0cmluZyAqV2ViRWxlbWVudElzQ29u
dGVudEVkaXRhYmxlS2V5CiAKIE5TU3RyaW5nICpXZWJWaWV3UHJvZ3Jlc3NTdGFydGVkTm90aWZp
Y2F0aW9uID0gICAgICAgICAgQCJXZWJQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24iOwogTlNT
dHJpbmcgKldlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiA9ICBAIldl
YlByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uIjsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNTdHJpbmcgKldlYlZpZXdQcm9ncmVzc0Zp
bmlzaGVkTm90aWZpY2F0aW9uID0gICAgICAgICBAIldlYlByb2dyZXNzRmluaXNoZWROb3RpZmlj
YXRpb24iOwogI2Vsc2UKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1Byb2dyZXNzRXN0aW1hdGVk
UHJvZ3Jlc3NLZXkgPSBAIldlYlByb2dyZXNzRXN0aW1hdGVkUHJvZ3Jlc3NLZXkiOwpAQCAtNzc5
LDcgKzc3OSw3IEBAIGVudW0geyBXZWJWaWV3VmVyc2lvbiA9IDQgfTsKIAogc3RhdGljIE5TTXV0
YWJsZVNldCAqc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQ7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tL
ZXkgPSAgICAgICAgICAgIEAiY2FuR29CYWNrIjsKIE5TU3RyaW5nICpfV2ViQ2FuR29Gb3J3YXJk
S2V5ID0gICAgICAgICBAImNhbkdvRm9yd2FyZCI7CiBOU1N0cmluZyAqX1dlYkVzdGltYXRlZFBy
b2dyZXNzS2V5ID0gICAgQCJlc3RpbWF0ZWRQcm9ncmVzcyI7CkBAIC03OTAsNyArNzkwLDcgQEAg
TlNTdHJpbmcgKl9XZWJNYWluRnJhbWVVUkxLZXkgPSAgICAgICAgIAogTlNTdHJpbmcgKl9XZWJN
YWluRnJhbWVEb2N1bWVudEtleSA9ICAgIEAibWFpbkZyYW1lRG9jdW1lbnQiOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE5TU3RyaW5nICpX
ZWJRdWlja0xvb2tGaWxlTmFtZUtleSA9IEAiV2ViUXVpY2tMb29rRmlsZU5hbWVLZXkiOwogTlNT
dHJpbmcgKldlYlF1aWNrTG9va1VUSUtleSAgICAgID0gQCJXZWJRdWlja0xvb2tVVElLZXkiOwog
I2VuZGlmCkBAIC04MTYsNyArODE2LDcgQEAgQGludGVyZmFjZSBXZWJQcm9ncmVzc0l0ZW0gOiBO
U09iamVjdAogCiBzdGF0aWMgQk9PTCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ7CiBz
dGF0aWMgQk9PTCBpY29uTG9hZGluZ0VuYWJsZWQgPSBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQ7CiBzdGF0aWMgQk9PTCBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ7CiBz
dGF0aWMgQk9PTCBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKQEAgLTEwOTksNyArMTA5
OSw3IEBAIC0gKE5TVmlld0NvbnRyb2xsZXIgKil0ZXh0TGlzdFZpZXdDb250cm8KICNlbmRpZiAv
LyBIQVZFKFRPVUNIX0JBUikKIAogQGludGVyZmFjZSBXZWJWaWV3ICgpCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV93YWtXaW5kb3dTY3JlZW5T
Y2FsZUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwogLSAodm9pZClfd2Fr
V2luZG93VmlzaWJpbGl0eUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwog
I2Vsc2UKQEAgLTExNTEsNyArMTE1MSw3IEBAICsgKE5TU3RyaW5nICopX3N0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGwKICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKGFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldEJyb3dzZXJVc2VyQWdlbnRQcm9kdWN0VmVyc2lv
bjooTlNTdHJpbmcgKilwcm9kdWN0VmVyc2lvbiBidWlsZFZlcnNpb246KE5TU3RyaW5nICopYnVp
bGRWZXJzaW9uIGJ1bmRsZVZlcnNpb246KE5TU3RyaW5nICopYnVuZGxlVmVyc2lvbgogewogICAg
IFtzZWxmIHNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlZlcnNpb24vJUAgTW9iaWxlLyVAIFNhZmFyaS8lQCIsIHByb2R1Y3RWZXJzaW9u
LCBidWlsZFZlcnNpb24sIGJ1bmRsZVZlcnNpb25dXTsKQEAgLTExNjEsNyArMTE2MSw3IEBAIC0g
KHZvaWQpX3NldFVJV2ViVmlld1VzZXJBZ2VudFdpdGhCdWlsZFYKIHsKICAgICBbc2VsZiBzZXRB
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6W0AiTW9iaWxlLyIgc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6YnVpbGRWZXJzaW9uXV07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICsgKHZvaWQpX3JlcG9ydEV4Y2VwdGlvbjooSlNW
YWx1ZVJlZilleGNlcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHRSZWYpY29udGV4dAogewpAQCAt
MTE4MSw3ICsxMTgxLDcgQEAgKyAodm9pZClfcmVwb3J0RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4
YwogCiBzdGF0aWMgYm9vbCBzaG91bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCiAgICAgcmV0dXJuICFNYWNBcHBsaWNhdGlvbjo6aXNBZG9iZUluc3RhbGxlcigpOwpAQCAt
MTE5MCw3ICsxMTkwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZygp
CiAKIHN0YXRpYyBib29sIHNob3VsZFJlc3RyaWN0V2luZG93Rm9jdXMoKQogewotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vs
c2UKICAgICByZXR1cm4gIU1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKTsKQEAgLTEyMDIsNyAr
MTIwMiw3IEBAIC0gKHZvaWQpX2Rpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cwogICAgIHdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcigpLnNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9yZWdp
c3RlckRyYWdnZWRUeXBlcwogewpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgLSh2b2lkKV9pbmplY3RP
dXRsb29rUXVpcmtzU2NyaXB0CiAKIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUlu
Q1NTQXR0cmlidXRlU2V0dGVycygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBzdGF0aWMgYm9vbCBp
c0lBZFByb2R1Y2VyTmVlZGluZ0F0dHJpYnV0ZVNldHRlclF1aXJrID0gIVdlYktpdExpbmtlZE9u
T3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19J
R05PUklOR19QUklPUklUWSkKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFJlc3BlY3RQcmlvcml0eUluQ1NTQXQKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0ludGVybmFsSW5zdGFsbCgp
CiB7CiAgICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IE1HR2V0Qm9vbEFuc3dlcihrTUdRQXBw
bGVJbnRlcm5hbEluc3RhbGxDYXBhYmlsaXR5KTsKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHN0YXRp
YyBib29sIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IGYKIAogc3RhdGljIGJvb2wgc2hvdWxk
VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9ICFXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJ
WkVfU0hPUlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjpp
c1ZlcnNpb25zKCkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93
RGlzcGxheUFuZFJ1bm5pbmcKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0
dXJlTWVkaWFQbGF5YmFjaygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVk
aWFQbGF5YmFjayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX0lPU19W
RVJTSU9OXzlfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQ
bGF5YmFjazsKICNlbHNlCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRB
bGxvd1BpY3R1cmVJblBpY3R1cmVNCiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93Q29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbCgpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
QWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvY29sID0g
IVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0NPTlRFTlRf
U0VDVVJJVFlfUE9MSUNZX1NPVVJDRV9TVEFSX1BST1RPQ09MX1JFU1RSSUNUSU9OKTsKICAgICBy
ZXR1cm4gc2hvdWxkQWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFu
eVByb3RvY29sOwogI2Vsc2UKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHN0YXRpYyBib29sIHNob3Vs
ZEFsbG93Q29udGVudFNlY3VyaXR5UG8KIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dXaW5kb3dP
cGVuV2l0aG91dFVzZXJHZXN0dXJlKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1dpbmRvd09wZW5XaXRo
b3V0VXNlckdlc3R1cmUgPSBJT1NBcHBsaWNhdGlvbjo6aXNUaGVTZWNyZXRTb2NpZXR5SGlkZGVu
TXlzdGVyeSgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZF
UlNJT05fMTBfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dXaW5kb3dPcGVuV2l0aG91dFVzZXJH
ZXN0dXJlOwogI2Vsc2UKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFs
bG93V2luZG93T3BlbldpdGhvdXQKIAogc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRV
UkxzVG9CbGFuaygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRVUkxzVG9CbGFuayA9IGR5
bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX0lPU19WRVJTSU9OXzEwXzA7CiAj
ZWxpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydEludmFsaWRV
UkxzVG9CbGFuayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX01BQ09T
WF9WRVJTSU9OXzEwXzEyOwpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxk
Q29udmVydEludmFsaWRVUkxzVG9CbAogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXF1aXJlVXNlckdl
c3R1cmVUb0xvYWRWaWRlbygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2Fk
VmlkZW8gPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lP
Tl8xMF8wOwogICAgIHJldHVybiBzaG91bGRSZXF1aXJlVXNlckdlc3R1cmVUb0xvYWRWaWRlbzsK
ICNlbHNlCkBAIC0xMzU5LDcgKzEzNTksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3N0YW5kYXJkUHJlZmVy
ZW5jZXMgcmV0YWluXTsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5P
OwogICAgIF9wcml2YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENv
bG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV0gcmV0YWluXTsK
ICNlbHNlCiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2Fj
aGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKQEAgLTEzODYsNyArMTM4Niw3IEBAIC0gKHZvaWQp
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKIAogICAgIFtzZWxmIHVwZGF0ZVRvdWNo
QmFyXTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgc3RhdGljIGJvb2wgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gZmFsc2U7CiAjZW5kaWYK
ICAgICBpZiAoIWRpZE9uZVRpbWVJbml0aWFsaXphdGlvbikgewpAQCAtMTQwMSw3ICsxNDAxLDcg
QEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogCiAgICAgICAgIGlu
aXRpYWxpemVET01XcmFwcGVySG9va3MoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBTZXQgdGhlIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudC4KICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoJldl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50KCkpOwogCkBAIC0xNDA5LDcgKzE0MDksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjZW5kaWYKICAgICAgICAgW1dlYkRhdGFiYXNlTWFuYWdl
ciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdOwogCi0jaWYgUExBVEZPUk0oSU9TKSAgICAgICAg
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgICAgICAgIAogICAgICAgICBpZiAoW3N0YW5kYXJk
UHJlZmVyZW5jZXMgc3RvcmFnZVRyYWNrZXJFbmFibGVkXSkKICNlbmRpZgogICAgICAgICBXZWJL
aXRJbml0aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDIyLDcgKzE0MjIsNyBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjZW5kaWYKICAgICAgICAg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0
dHJpYnV0ZVNldHRlcnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJz
KCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdv
cnkodHJ1ZSk7CiAjZW5kaWYKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIC0gKHZvaWQpX2NvbW1vbklu
aXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJv
dmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKQog
ICAgICk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNl
bGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNv
bnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRo
aXMgb24gaU9TIGFzIHdlbGwuCkBAIC0xNDc5LDcgKzE0NzksNyBAQCAtICh2b2lkKV9jb21tb25J
bml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgV2ViQ29yZTo6cHJvdmlkZU5vdGlmaWNhdGlv
bihfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYk5vdGlmaWNhdGlvbkNsaWVudChzZWxmKSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVu
dGF0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChz
ZWxmKSk7CiAjZW5kaWYKICNlbmRpZgpAQCAtMTQ5MiwxOCArMTQ5MiwxOCBAQCAtICh2b2lkKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNlc10gX2xv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ioc2hvdWxkVXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG5lZWRzT3V0bG9va1F1aXJr
c1NjcmlwdCgpKSB7CiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNob3Vs
ZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCh0cnVlKTsKICAgICAgICAg
W3NlbGYgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdOwogICAgIH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0UGFzc2l2ZVRvdWNoTGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVu
dChsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RUaGF0RGVmYXVsdHNUb1Bhc3NpdmVU
b3VjaExpc3RlbmVyc09uRG9jdW1lbnQpKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gUHJlc2VydmUgdGhlIGJlaGF2aW9yIHdl
IGhhZCBiZWZvcmUgPHJkYXI6Ly9wcm9ibGVtLzc1ODA4Njc+CiAgICAgLy8gYnkgZW5mb3JjaW5n
IGEgNU1CIGxpbWl0IGZvciBzZXNzaW9uIHN0b3JhZ2UuCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YSg1ICogMTAyNCAqIDEwMjQpOwpAQCAtMTUy
Miw3ICsxNTIyLDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQog
CiAgICAgW1dlYkZyYW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoUGFnZTpfcHJpdmF0ZS0+cGFnZSBm
cmFtZU5hbWU6ZnJhbWVOYW1lIGZyYW1lVmlldzpmcmFtZVZpZXddOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0g
V2ViVGhyZWFkTlNSdW5Mb29wKCk7CiAjZWxzZQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFtO
U1J1bkxvb3AgbWFpblJ1bkxvb3BdOwpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIGlmIChbW3NlbGYgY2xhc3NdIHNob3Vs
ZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICArK1dlYlZpZXdDb3VudDsKIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3NlbGYg
X3JlZ2lzdGVyRHJhZ2dlZFR5cGVzXTsKICNlbmRpZgogCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOldlYlByZWZlcmVuY2VzQ2hhbmdl
ZEludGVybmFsTm90aWZpY2F0aW9uIG9iamVjdDpwcmVmc107CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtzZWxmIF9wcmVmZXJlbmNlc0NoYW5n
ZWQ6W3NlbGYgcHJlZmVyZW5jZXNdXTsKICAgICBbW3NlbGYgcHJlZmVyZW5jZXNdIF9wb3N0UHJl
ZmVyZW5jZXNDaGFuZ2VkQVBJTm90aWZpY2F0aW9uXTsKICNlbHNlCkBAIC0xNTY5LDcgKzE1Njks
NyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKICAgICBXZWJJ
bnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9DQUxfUkVTT1VSQ0VfU0VDVVJJVFlfUkVTVFJJQ1RJ
T04pKSB7CiAgICAgICAgIC8vIE9yaWdpbmFsbHksIHdlIGFsbG93ZWQgYWxsIGxvY2FsIGxvYWRz
LgogICAgICAgICBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5UG9s
aWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JBbGwpOwpAQCAtMTYyOSw3ICsxNjI5LDcgQEAgKyAoTlNB
cnJheSAqKV9zdXBwb3J0ZWRNSU1FVHlwZXMKICAgICByZXR1cm4gW1tXZWJGcmFtZVZpZXcgX3Zp
ZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246Tk9dIGFsbEtleXNdOwogfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsgKE5TQXJyYXkgKilfc3Vw
cG9ydGVkRmlsZUV4dGVuc2lvbnMKIHsKICAgICBOU011dGFibGVTZXQgKmV4dGVuc2lvbnMgPSBb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCArIChOU0Fy
cmF5ICopX3N1cHBvcnRlZEZpbGVFeHRlbnNpb25zCiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZCllbmFibGVXZWJUaHJlYWQK
IHsKICAgICBzdGF0aWMgQk9PTCBpc1dlYlRocmVhZEVuYWJsZWQgPSBOTzsKQEAgLTE4MTUsNyAr
MTgxNSw3IEBAIC0gKHZvaWQpdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlU2gKIH0KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCkBAIC0yMDE5LDcgKzIwMTksNyBAQCAtIChDR1JlY3Qp
X2RhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdAogfQogCiAjZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIE5TTXV0YWJs
ZVNldCAqa25vd25QbHVnaW5NSU1FVHlwZXMoKQogewpAQCAtMjA0NiwxMSArMjA0NiwxMSBAQCAr
IChCT09MKV92aWV3Q2xhc3M6KENsYXNzICopdkNsYXNzIGFuZFJlCiAgICAgQ2xhc3Mgdmlld0Ns
YXNzID0gW1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVT
XSBfd2Via2l0X29iamVjdEZvck1JTUVUeXBlOk1JTUVUeXBlXTsKICAgICBDbGFzcyByZXBDbGFz
cyA9IFtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOllFU10g
X3dlYmtpdF9vYmplY3RGb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgV2ViUERGVmlldyAoW1dlYlZpZXcg
X2dldFBERlZpZXdDbGFzc10pCiAjZW5kaWYKICAgICBpZiAoIXZpZXdDbGFzcyB8fCAhcmVwQ2xh
c3MgfHwgW1tXZWJQREZWaWV3IHN1cHBvcnRlZE1JTUVUeXBlc10gY29udGFpbnNPYmplY3Q6TUlN
RVR5cGVdKSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
dW5kZWYgV2ViUERGVmlldwogI2VuZGlmCiAgICAgICAgIC8vIE91ciBvcHRpbWl6YXRpb24gdG8g
YXZvaWQgbG9hZGluZyB0aGUgcGx1Zy1pbiBEQiBhbmQgaW1hZ2UgdHlwZXMgZm9yIHRoZSBIVE1M
IGNhc2UgZmFpbGVkLgpAQCAtMjA5NSw3ICsyMDk1LDcgQEAgLSAoQk9PTClfdmlld0NsYXNzOihD
bGFzcyAqKXZDbGFzcyBhbmRSZQogewogICAgIGlmIChbW3NlbGYgY2xhc3NdIF92aWV3Q2xhc3M6
dkNsYXNzIGFuZFJlcHJlc2VudGF0aW9uQ2xhc3M6ckNsYXNzIGZvck1JTUVUeXBlOk1JTUVUeXBl
IGFsbG93aW5nUGx1Z2luczpbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGFyZVBsdWdJbnNFbmFibGVk
XV0pCiAgICAgICAgIHJldHVybiBZRVM7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKSB7CiAgICAg
ICAgIFdlYkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlID0gW19wcml2YXRlLT5wbHVn
aW5EYXRhYmFzZSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAgICAgICAgIGlmIChwbHVn
aW5QYWNrYWdlKSB7CkBAIC0yMTM0LDcgKzIxMzQsNyBAQCArIChCT09MKWNhblNob3dGaWxlOihO
U1N0cmluZyAqKXBhdGgKICAgICByZXR1cm4gW1tzZWxmIGNsYXNzXSBjYW5TaG93TUlNRVR5cGU6
W1dlYlZpZXcgX01JTUVUeXBlRm9yRmlsZTpwYXRoXV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogKyAoTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxl
RXh0ZW5zaW9uRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZQogewogICAgIHJldHVybiBbW05T
VVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gcHJlZmVycmVkRXh0ZW5zaW9uRm9y
TUlNRVR5cGU6dHlwZV07CkBAIC0yMTQ2LDcgKzIxNDYsNyBAQCAtIChCT09MKV9pc0Nsb3NlZAog
ICAgIHJldHVybiAhX3ByaXZhdGUgfHwgX3ByaXZhdGUtPmNsb3NlZDsKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9kaXNwYXRjaFVu
bG9hZEV2ZW50CiB7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCArIChCT09MKV9pc1VuZGVyTWVtb3J5
UHJlc3N1cmUKICAgICByZXR1cm4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5p
c1VuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKV9jbG9zZVBsdWdpbkRhdGFi
YXNlcwogewpAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgLSAodm9pZClfY2xvc2VQbHVnaW5EYXRhYmFz
ZXMKIAogICAgIC8vIENsb3NlIGJvdGggc2V0cyBvZiBwbHVnLWluIGRhdGFiYXNlcyBiZWNhdXNl
IHBsdWctaW5zIG5lZWQgYW4gb3Bwb3J0dW5pdHkgdG8gY2xlYW4gdXAgZmlsZXMsIGV0Yy4KIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVW5s
b2FkIHRoZSBXZWJWaWV3IGxvY2FsIHBsdWctaW4gZGF0YWJhc2UuIAogICAgIGlmIChfcHJpdmF0
ZS0+cGx1Z2luRGF0YWJhc2UpIHsKICAgICAgICAgW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBk
ZXN0cm95QWxsUGx1Z2luSW5zdGFuY2VWaWV3c107CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCAtICh2
b2lkKV9jbG9zZVdpdGhGYXN0VGVhcmRvd24gCiAgICAgV1RGOjpSZWZDb3VudGVkTGVha0NvdW50
ZXI6OnN1cHByZXNzTWVzc2FnZXMoIkF0IGxlYXN0IG9uZSBXZWJWaWV3IHdhcyBjbG9zZWQgd2l0
aCBmYXN0IHRlYXJkb3duLiIpOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRpZgogICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CkBA
IC0yMzAxLDcgKzIzMDEsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJs
ZWQoCiAvLyBwdWJsaWMgbWV0aG9kIC1jbG9zZSBpbnN0ZWFkLgogLSAodm9pZClfY2xvc2UKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBbHdh
eXMgY2xlYXIgZGVsZWdhdGVzIG9uIGNhbGxpbmcgdGhyZWFkLCBiZWNhc3VlIGNhbGxlciBjYW4g
ZGVhbGxvY2F0ZSBkZWxlZ2F0ZXMgcmlnaHQgYWZ0ZXIgY2FsbGluZyAtY2xvc2UKICAgICAvLyAo
YW5kIGNvdWxkIGluIGZhY3QgYWxyZWFkeSBiZSBpbiBkZWxlZ2F0ZSdzIC1kZWFsbG9jIG1ldGhv
ZCwgYXMgc2VlbiBpbiA8cmRhcjovL3Byb2JsZW0vMTE1NDA5NzI+KS4KIApAQCAtMjMzMCwxMSAr
MjMzMCwxMSBAQCAtICh2b2lkKV9jbG9zZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShWSURFTykgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3NlbGYgX2V4aXRWaWRlb0Z1bGxzY3JlZW5dOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBf
cHJpdmF0ZS0+Y2xvc2luZyA9IFlFUzsKICNlbmRpZgogCkBAIC0yMzQzLDcgKzIzNDMsNyBAQCAt
ICh2b2lkKV9jbG9zZQogCiAgICAgW3NlbGYgc2V0SG9zdFdpbmRvdzpuaWxdOwogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2VsZiBzZXREb3du
bG9hZERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgc2V0RWRpdGluZ0RlbGVnYXRlOm5pbF07CiAg
ICAgW3NlbGYgc2V0RnJhbWVMb2FkRGVsZWdhdGU6bmlsXTsKQEAgLTIzNTgsNyArMjM1OCw3IEBA
IC0gKHZvaWQpX2Nsb3NlCiAgICAgW19wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IHdlYlZpZXdDbG9zZWRdOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRvIGF2b2lkIGxlYWtzLCBjYWxsIHJlbW92ZURyYWdD
YXJldCBpbiBjYXNlIGl0IHdhc24ndCBjYWxsZWQgYWZ0ZXIgbW92ZURyYWdDYXJldFRvUG9pbnQu
CiAgICAgW3NlbGYgcmVtb3ZlRHJhZ0NhcmV0XTsKICNlbmRpZgpAQCAtMjM3Miw3ICsyMzcyLDcg
QEAgLSAodm9pZClfY2xvc2UKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG51bGxwdHI7CiAgICAgV2Vi
S2l0OjpEZWZlcnJlZFBhZ2VEZXN0cnVjdG9yOjpjcmVhdGVEZWZlcnJlZFBhZ2VEZXN0cnVjdG9y
KHN0ZDo6dW5pcXVlX3B0cjxQYWdlPihwYWdlKSk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+aGFzU3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWcpIHsKICAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIGNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWc6X3ByaXZhdGUtPnNwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnXTsKICAgICAgICAgX3ByaXZhdGUtPmhhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnID0g
Tk87CkBAIC0yMzg2LDcgKzIzODYsNyBAQCAtICh2b2lkKV9jbG9zZQogCiAgICAgW1tzZWxmIF9u
b3RpZmljYXRpb25Qcm92aWRlcl0gdW5yZWdpc3RlcldlYlZpZXc6c2VsZl07CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbTlNEaXN0cmlidXRl
ZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsK
ICNlbmRpZgogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6c2VsZl07CkBAIC0yNDAwLDcgKzI0MDAsNyBAQCAtICh2b2lkKV9jbG9zZQogCiAg
ICAgW3NlbGYgX2Nsb3NlUGx1Z2luRGF0YWJhc2VzXTsKIAotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9wcml2YXRl
LT5tX3BsYXliYWNrVGFyZ2V0UGlja2VyKSB7CiAgICAgICAgIF9wcml2YXRlLT5tX3BsYXliYWNr
VGFyZ2V0UGlja2VyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIF9wcml2YXRlLT5tX3BsYXliYWNr
VGFyZ2V0UGlja2VyID0gbnVsbHB0cjsKQEAgLTI0MTQsNyArMjQxNCw3IEBAIC0gKHZvaWQpX2Ns
b3NlCiAgICAgICAgIFtXZWJDYWNoZSBzZXREaXNhYmxlZDpZRVNdOwogICAgIH0KICNlbmRpZgot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZpeCBm
b3IgcHJvYmxlbXMgc3VjaCBhcyA8cmRhcjovL3Byb2JsZW0vNTc3NDU4Nz4gQ3Jhc2ggY2xvc2lu
ZyB0YWIgaW4gV2ViQ29yZTo6RnJhbWU6OnBhZ2UoKSBmcm9tIC1bV2ViQ29yZUZyYW1lQnJpZGdl
IHBhdXNlVGltZW91dHNdCiAgICAgfSk7CiAjZW5kaWYgICAgICAgICAgICAKQEAgLTI0MjgsMTIg
KzI0MjgsMTIgQEAgLSAoQk9PTClfaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUKIAogKyAoTlNTdHJp
bmcgKilfTUlNRVR5cGVGb3JGaWxlOihOU1N0cmluZyAqKXBhdGgKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TU3RyaW5nICpleHRlbnNpb24g
PSBbcGF0aCBwYXRoRXh0ZW5zaW9uXTsKICNlbmRpZgogICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9
IG5pbDsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gR2V0IHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLgogICAgIGlmIChbZXh0
ZW5zaW9uIGxlbmd0aF0gIT0gMCkgewogICAgICAgICBNSU1FVHlwZSA9IFtbTlNVUkxGaWxlVHlw
ZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBNSU1FVHlwZUZvckV4dGVuc2lvbjpleHRlbnNpb25d
OwpAQCAtMjUzOCw3ICsyNTM4LDcgQEAgLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9u
OihCT09MKQogCiAtICh2b2lkKXNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOihCT09MKXNo
b3dpbmcKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7CiAKICAgICBpZiAoc2hvd2luZykgewpAQCAt
MjU1NywxMyArMjU1NywxMyBAQCAtICh2b2lkKXNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9u
OihCCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogLSAodm9pZClfc2V0SG9zdEFwcGxpY2F0aW9uUHJvY2Vzc0lkZW50aWZpZXI6KHBpZF90
KXBpZCBhdWRpdFRva2VuOihhdWRpdF90b2tlbl90KWF1ZGl0VG9rZW4KIHsKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAo
Y29uc3QgVUludDgqKSZhdWRpdFRva2VuLCBzaXplb2YoYXVkaXRUb2tlbikpKTsKICAgICBSZW1v
dGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWQs
IGF1ZGl0RGF0YSk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKIC0g
KFdlYkNvcmU6OlBhZ2UqKXBhZ2UKQEAgLTI1NzEsNyArMjU3MSw3IEBAIC0gKFdlYkNvcmU6OlBh
Z2UqKXBhZ2UKICAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2U7CiB9CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoTlNNZW51ICopX21lbnVGb3JFbGVt
ZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50IGRlZmF1bHRJdGVtczooTlNBcnJheSAqKWl0ZW1z
CiB7CiAgICAgTlNBcnJheSAqZGVmYXVsdE1lbnVJdGVtcyA9IFtbV2ViRGVmYXVsdFVJRGVsZWdh
dGUgc2hhcmVkVUlEZWxlZ2F0ZV0gd2ViVmlldzpzZWxmIGNvbnRleHRNZW51SXRlbXNGb3JFbGVt
ZW50OmVsZW1lbnQgZGVmYXVsdE1lbnVJdGVtczppdGVtc107CkBAIC0yNjUwLDcgKzI2NTAsNyBA
QCAtICh2b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmllCiAtICh2b2lkKV9zZXRG
b3JtRGVsZWdhdGU6IChpZDxXZWJGb3JtRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX3ByaXZh
dGUtPmZvcm1EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyIGNs
ZWFyVGFyZ2V0XTsKICAgICBbX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNl
XTsKICAgICBfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyID0gbmlsOwpAQCAtMjY2Miw3
ICsyNjYyLDcgQEAgLSAoaWQ8V2ViRm9ybURlbGVnYXRlPilfZm9ybURlbGVnYXRlCiAgICAgcmV0
dXJuIF9wcml2YXRlLT5mb3JtRGVsZWdhdGU7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9mb3JtRGVsZWdhdGVGb3J3YXJkZXIKIHsKICAg
ICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCkBAIC0yNjg3LDcgKzI2ODcsNyBAQCAtIChpZClfZm9y
bURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9uZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlyawogewogICAgIHN0YXRpYyBCT09MIG5lZWRzUXVpcmsgPSBfQ0ZBcHBW
ZXJzaW9uQ2hlY2tMZXNzVGhhbihDRlNUUigiY29tLmFkb2JlLkFjcm9iYXQiKSwgLTEsIDkuMCkK
QEAgLTI3NDEsMTEgKzI3NDEsMTEgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVM
b2FkaW5nUQogICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBsaWNhdGlvbjo6aXNB
cGVydHVyZSgpOwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQotI2VuZGlmIC8vICFQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKEJPT0wpX25lZWRz
UHJlSFRNTDVQYXJzZXJRdWlya3MKIHsgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBT0wgSW5zdGFudCBNZXNzZW5nZXIgYW5kIE1pY3Jv
c29mdCBNeSBEYXkgY29udGFpbiBtYXJrdXAgaW5jb21wYXRpYmxlCiAgICAgLy8gd2l0aCB0aGUg
bmV3IEhUTUw1IHBhcnNlci4gSWYgdGhlc2UgYXBwbGljYXRpb25zIHdlcmUgbGlua2VkIGFnYWlu
c3QgYQogICAgIC8vIHZlcnNpb24gb2YgV2ViS2l0IHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24g
b2YgdGhlIEhUTUw1IHBhcnNlciwgZW5hYmxlCkBAIC0yNzczLDcgKzI3NzMsNyBAQCAtIChCT09M
KV9uZWVkc1ByZUhUTUw1UGFyc2VyUXVpcmtzCiAKIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGb3IgV2ViVmlld3Mg
dGhhdCBsb2FkIHN5bmNocm9ub3VzbHksIHByZWZlcmVuY2UgY2hhbmdlcyBuZWVkIHRvIGJlIHBy
b3BhZ2F0ZWQKICAgICAvLyBkb3duIHRvIFdlYkNvcmUgc3luY2hyb25vdXNseSBzbyB0aGF0IGxv
YWRzIGluIHRoYXQgV2ViVmlldyBoYXZlIHRoZSBjb3JyZWN0CiAgICAgLy8gdXAtdG8tZGF0ZSBz
ZXR0aW5ncy4KQEAgLTI3ODUsNyArMjc4NSw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbjoKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSAoV2ViUHJl
ZmVyZW5jZXMgKilbbm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgW3NlbGYgX3ByZWZlcmVuY2Vz
Q2hhbmdlZDpwcmVmZXJlbmNlc107CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB9IGVsc2UgewogICAgICAgICBXZWJUaHJlYWRSdW4oXnsKICAgICAg
ICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHByZWZzIG9iamVjdCBoYXMgYWxyZWFk
eSBjaGFuZ2VkIGJlZm9yZSB0aGUgaW52b2NhdGlvbiBjb3VsZCBiZSBjYWxsZWQKQEAgLTI4MTIs
NyArMjgxMiw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAg
ICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBpT1Mgd2FpdHMgdG8gY2FsbCBb
V2ViRGF0YWJhc2VNYW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gdW50aWwKICAgICAv
LyBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gaXMgdHJ1ZSBzbyB0aGF0IHdlIGRvbid0IGluaXRp
YWxpemUgZGF0YWJhc2VzCiAgICAgLy8gdW50aWwgdGhlIGZpcnN0IFdlYlZpZXcgaGFzIGJlZW4g
Y3JlYXRlZC4gVGhpcyBpcyBiZWNhdXNlIGRhdGFiYXNlCkBAIC0yODYxLDcgKzI4NjEsNyBAQCAt
ICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3Muc2V0
U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKICAg
ICBzZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoW3ByZWZlcmVuY2VzIGxvYWRz
SW1hZ2VzQXV0b21hdGljYWxseV0pOwogICAgIHNldHRpbmdzLnNldExvYWRzU2l0ZUljb25zSWdu
b3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1NpdGVJY29uc0lnbm9y
aW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZV0pOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHNldHRpbmdzLnNldFNob3VsZFByaW50QmFja2dyb3VuZHMo
dHJ1ZSk7CiAjZWxzZQogICAgIHNldHRpbmdzLnNldFNob3VsZFByaW50QmFja2dyb3VuZHMoW3By
ZWZlcmVuY2VzIHNob3VsZFByaW50QmFja2dyb3VuZHNdKTsKQEAgLTI5ODEsNyArMjk4MSw3IEBA
IC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNldHRpbmdzLnNldEFsbG93c0FpclBsYXlGb3JN
ZWRpYVBsYXliYWNrKFtwcmVmZXJlbmNlcyBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja10p
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgc2V0dGluZ3Muc2V0U3RhbmRhbG9uZShbcHJlZmVyZW5jZXMgX3N0YW5kYWxvbmVdKTsKICAg
ICBzZXR0aW5ncy5zZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMg
X3RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0QWxsb3dN
dWx0aUVsZW1lbnRJbXBsaWNpdFN1Ym1pc3Npb24oW3ByZWZlcmVuY2VzIF9hbGxvd011bHRpRWxl
bWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Npb25dKTsKQEAgLTMwMDUsNyArMzAwNSw3IEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy5zZXRNaW5p
bXVtWm9vbUZvbnRTaXplKFtwcmVmZXJlbmNlcyBfbWluaW11bVpvb21Gb250U2l6ZV0pOwogICAg
IHNldHRpbmdzLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgX3RleHRBdXRv
c2l6aW5nRW5hYmxlZF0pOwogI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gVGhp
cyBwYXJzZXMgdGhlIHVzZXIgc3R5bGVzaGVldCBzeW5jaHJvbm91c2x5IHNvIGFueXRoaW5nIHRo
YXQgbWF5IGFmZmVjdCBpdCBzaG91bGQgYmUgZG9uZSBmaXJzdC4KQEAgLTMxNjQsNyArMzE2NCw3
IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBpZiAoX3By
aXZhdGUtPnpvb21zVGV4dE9ubHkgIT0gem9vbXNUZXh0T25seSkKICAgICAgICAgW3NlbGYgX3Nl
dFpvb21NdWx0aXBsaWVyOl9wcml2YXRlLT56b29tTXVsdGlwbGllciBpc1RleHRPbmx5Onpvb21z
VGV4dE9ubHldOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0VGlsZUJvcmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBz
aG93RGVidWdCb3JkZXJzXV07CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0VGlsZVBhaW50Q291bnRz
VmlzaWJsZTpbcHJlZmVyZW5jZXMgc2hvd1JlcGFpbnRDb3VudGVyXV07CiAgICAgW1tzZWxmIHdp
bmRvd10gc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDpbcHJlZmVyZW5jZXMgYWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZF1dOwpAQCAtMzE5NSw3ICszMTk1LDcgQEAgc3RhdGljIGlubGluZSBJ
TVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIHJldHVybiBbbyByZXNwb25kc1RvU2VsZWN0
b3I6c10gPyBbbyBtZXRob2RGb3JTZWxlY3RvcjpzXSA6IDA7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyCiB7CiAgICAgaWYgKF9wcml2YXRlLT5jbG9zaW5nKQpAQCAtMzIyNSw3ICszMjI1LDcgQEAg
LSAodm9pZClfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbQogICAgIGNhY2hlLT5jYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0
ZSwgQHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZTpmb3JEYXRhU291cmNlOikpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYWNoZS0+Y29ubmVjdGlvblByb3BlcnRp
ZXNGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpjb25uZWN0aW9u
UHJvcGVydGllc0ZvclJlc291cmNlOmRhdGFTb3VyY2U6KSk7CiAgICAgY2FjaGUtPndlYlRocmVh
ZERpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUs
IEBzZWxlY3Rvcih3ZWJUaHJlYWRXZWJWaWV3OnJlc291cmNlOmRpZEZpbmlzaExvYWRpbmdGcm9t
RGF0YVNvdXJjZTopKTsKICAgICBjYWNoZS0+d2ViVGhyZWFkRGlkRmFpbExvYWRpbmdXaXRoRXJy
b3JGcm9tRGF0YVNvdXJjZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJU
aHJlYWRXZWJWaWV3OnJlc291cmNlOmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOmZyb21EYXRhU291
cmNlOikpOwpAQCAtMzI5MCw3ICszMjkwLDcgQEAgLSAodm9pZClfY2FjaGVGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6
KSk7CiAgICAgY2FjaGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZERldGVjdFhTUzopKTsKICAgICBjYWNoZS0+ZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OikpOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNhY2hlLT53ZWJUaHJlYWREaWRMYXlvdXRGdW5j
ID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVGhyZWFkV2ViVmlldzpkaWRMYXlv
dXQ6KSk7CiAjZW5kaWYKIApAQCAtMzMwMCw3ICszMzAwLDcgQEAgLSAodm9pZClfY2FjaGVGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudAogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOwogICAg
IGlmIChwYWdlKSB7CiAgICAgICAgIHVuc2lnbmVkIG1pbGVzdG9uZXMgPSBEaWRGaXJzdExheW91
dDsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
bWlsZXN0b25lcyB8PSBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CiAjZWxzZQogICAg
ICAgICBpZiAoY2FjaGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5j
KQpAQCAtMzM2MSw3ICszMzYxLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiAtIChpZClfcG9s
aWN5RGVsZWdhdGVGb3J3YXJkZXIKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVybiBu
aWw7CiAjZW5kaWYKQEAgLTMzNzIsNyArMzM3Miw3IEBAIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZv
cndhcmRlcgogCiAtIChpZClfVUlEZWxlZ2F0ZUZvcndhcmRlcgogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2luZykK
ICAgICAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpAQCAtMzM4MSw3ICszMzgxLDcgQEAgLSAoaWQp
X1VJRGVsZWdhdGVGb3J3YXJkZXIKICAgICByZXR1cm4gX3ByaXZhdGUtPlVJRGVsZWdhdGVGb3J3
YXJkZXI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC0gKGlkKV9VSURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewogICAgIGlkIGRl
bGVnYXRlID0gc2VsZi0+X3ByaXZhdGUtPlVJRGVsZWdhdGU7CkBAIC0zMzk4LDcgKzMzOTgsNyBA
QCAtIChpZClfVUlEZWxlZ2F0ZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0CiAKIC0gKGlkKV9lZGl0
aW5nRGVsZWdhdGVGb3J3YXJkZXIKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVybiBu
aWw7CiAjZW5kaWYgICAgCkBAIC0zNTAyLDcgKzM1MDIsNyBAQCAtIChCT09MKV9pc1BlcmZvcm1p
bmdQcm9ncmFtbWF0aWNGb2N1cwogICAgIHJldHVybiBfcHJpdmF0ZS0+cHJvZ3JhbW1hdGljRm9j
dXNDb3VudCAhPSAwOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKHZvaWQpX2RpZENoYW5nZVZhbHVlRm9yS2V5OiAoTlNTdHJpbmcgKilrZXkK
IHsKICAgICBMT0cgKEJpbmRpbmdzLCAiY2FsbGluZyBkaWRDaGFuZ2VWYWx1ZUZvcktleTogJUAi
LCBrZXkpOwpAQCAtMzcwNyw3ICszNzA3LDcgQEAgLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvckZy
YW1lOihXZWJGcmFtZQogICAgICAgICBfcHJpdmF0ZS0+ZGlkRHJhd1RpbGVzID0gMDsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCkBAIC0zODk4LDcgKzM4OTgsNyBAQCAr
IChCT09MKV9zaG91bGRVc2VGb250U21vb3RoaW5nCiAgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpz
aG91bGRVc2VTbW9vdGhpbmcoKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiArICh2b2lkKV9zZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcjoo
Qk9PTClmCiB7CiAgICAgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoZik7CkBAIC0zOTEw
LDcgKzM5MTAsNyBAQCArIChCT09MKV91c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcgogfQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZv
aWQpX3NldFVJS2l0RGVsZWdhdGU6KGlkKWRlbGVnYXRlCiB7CiAgICAgX3ByaXZhdGUtPlVJS2l0
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKQEAgLTQwMTAsOSArNDAxMCw5IEBAIC0gKE5TVVJMICopX2Rp
c3BsYXlVUkwKICAgICBbW1VSTCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKICAgICByZXR1cm4gVVJM
OwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KHZvaWQpc2V0QWx3YXlzU2hvd1ZlcnRpY2FsU2Nyb2xsZXI6KEJPT0wpZmxhZwogewogICAgIFdl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsdmlldyA9IFtbW3NlbGYgbWFpbkZyYW1lXSBm
cmFtZVZpZXddIF9zY3JvbGxWaWV3XTsKQEAgLTQwNTIsNyArNDA1Miw3IEBAIC0gKEJPT0wpYWx3
YXlzU2hvd0hvcml6b250YWxTY3JvbGxlcgogICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAq
c2Nyb2xsdmlldyA9IFtbW3NlbGYgbWFpbkZyYW1lXSBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XTsK
ICAgICByZXR1cm4gW3Njcm9sbHZpZXcgaG9yaXpvbnRhbFNjcm9sbGluZ01vZGVMb2NrZWRdICYm
IFtzY3JvbGx2aWV3IGhvcml6b250YWxTY3JvbGxpbmdNb2RlXSA9PSBTY3JvbGxiYXJBbHdheXNP
bjsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAtICh2b2lkKV9zZXRVc2VGYXN0SW1hZ2VTY2FsaW5nTW9kZTooQk9PTClmbGFn
CiB7CkBAIC00MDgyLDcgKzQwODIsNyBAQCAtICh2b2lkKV9zZXRDb29raWVFbmFibGVkOihCT09M
KWVuYWJsZQogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRDb29raWVFbmFi
bGVkKGVuYWJsZSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogLSAodm9pZClfc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOihOU0FycmF5ICop
bmV3UGF0aHMKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKQEAgLTQwOTMs
NyArNDA5Myw3IEBAIC0gKHZvaWQpX3NldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczooTlMKIH0K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
IChCT09MKV9sb2NrZWRfcGx1Z0luc0FyZVJ1bm5pbmdJbkZyYW1lOihXZWJGcmFtZSAqKWZyYW1l
CiB7CiAgICAgLy8gQXNrIHBsdWctaW5zIGluIHRoaXMgZnJhbWUKQEAgLTQxOTksNyArNDE5OSw3
IEBAIC0gKHZvaWQpX3NldE5lZWRzVW5yZXN0cmljdGVkR2V0TWF0Y2hlZEMKICAgICBpZiAoX3By
aXZhdGUtPnBhZ2UpCiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldENyb3Nz
T3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKGZsYWcpOwogfQotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2
b2lkKV9hdHRhY2hTY3JpcHREZWJ1Z2dlclRvQWxsRnJhbWVzCiB7CkBAIC00MjEzLDcgKzQyMTMs
NyBAQCAtICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dlckZyb21BbGxGcmFtCiAgICAgICAgIFtr
aXQoZnJhbWUpIF9kZXRhY2hTY3JpcHREZWJ1Z2dlcl07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6
KE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IKIHsKICAgICBpZiAoW19wcml2YXRlLT5iYWNrZ3Jv
dW5kQ29sb3IgaXNFcXVhbDpiYWNrZ3JvdW5kQ29sb3JdKQpAQCAtNDI2NCw3ICs0MjY0LDcgQEAg
LSAodm9pZClzZXREZWZlcnNDYWxsYmFja3M6KEJPT0wpZGVmZXIKICAgICByZXR1cm4gX3ByaXZh
dGUtPnBhZ2UtPnNldERlZmVyc0xvYWRpbmcoZGVmZXIpOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0RpY3Rpb25hcnkgKilxdWlja0xvb2tD
b250ZW50Rm9yVVJMOihOU1VSTCAqKXVybAogewogICAgIHJldHVybiBuaWw7CkBAIC00NDAyLDcg
KzQ0MDIsNyBAQCArICh2b2lkKV9kb05vdFN0YXJ0T2JzZXJ2aW5nTmV0d29ya1JlYWNoCiB7CiAg
ICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0
ZU9ic2VydmF0aW9uKHRydWUpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIC0gKE5T
QXJyYXkgKilfdG91Y2hFdmVudFJlZ2lvbnMKQEAgLTQ0ODUsNyArNDQ4NSw3IEBAIC0gKFdlYlRl
eHRJdGVyYXRvciAqKXRleHRJdGVyYXRvckZvclJlY3QKICAgICByZXR1cm4gW1tbV2ViVGV4dEl0
ZXJhdG9yIGFsbG9jXSBpbml0V2l0aFJhbmdlOmtpdChzZWxlY3Rpb25JbnNpZGVSZWN0LnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCkpXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQpAQCAtNDY0MCw3ICs0NjQwLDcg
QEAgLSAoTlNBcnJheSopdHJhY2tlZFJlcGFpbnRSZWN0cwogICAgIHJldHVybiBbcmVjdHNBcnJh
eSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAoTlNQYXN0ZWJvYXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIHsKICAg
ICByZXR1cm4gX3ByaXZhdGUgPyBfcHJpdmF0ZS0+aW5zZXJ0aW9uUGFzdGVib2FyZCA6IG5pbDsK
QEAgLTQ2ODUsNyArNDY4NSw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2liaWxpdHlTdGF0ZQogLSAo
dm9pZClfdXBkYXRlQWN0aXZlU3RhdGUKIHsKICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZhdGUt
PnBhZ2UpCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgIF9wcml2YXRlLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRBY3RpdmUoW1tzZWxmIHdp
bmRvd10gaXNLZXlXaW5kb3ddKTsKICNlbHNlCiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5zZXRBY3RpdmUoW1tzZWxmIHdpbmRvd10gX2hhc0tleUFwcGVhcmFuY2Vd
KTsKQEAgLTQ5MjIsNyArNDkyMiw3IEBAIC0gKHZvaWQpX3NldFVzZUZpeGVkTGF5b3V0OihCT09M
KWZpeGVkCiAgICAgICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShJbnRTaXplKCkpOwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQp
X3NldEZpeGVkTGF5b3V0U2l6ZTooTlNTaXplKXNpemUKIHsKICAgICBGcmFtZSogY29yZUZyYW1l
ID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOwpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgLSAoQk9PTClf
dXNlRml4ZWRMYXlvdXQKICAgICByZXR1cm4gdmlldy0+dXNlRml4ZWRMYXlvdXQoKTsKIH0KIAot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU1NpemUp
X2ZpeGVkTGF5b3V0U2l6ZQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNv
cmVGcmFtZV07CkBAIC01MTUwLDcgKzUxNTAsNyBAQCAtIChOU1VJbnRlZ2VyKV9wYWdlQ291bnQK
ICAgICByZXR1cm4gcGFnZS0+cGFnZUNvdW50KCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAoQ0dGbG9hdClfYmFja2luZ1NjYWxlRmFjdG9y
CiB7CiAgICAgcmV0dXJuIFtzZWxmIF9kZXZpY2VTY2FsZUZhY3Rvcl07CkBAIC01MjA1LDcgKzUy
MDUsNyBAQCAtICh2b2lkKV9kaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OihXCiAgICAgW1tz
ZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgZGlkU2Nyb2xsRG9jdW1lbnRJ
bkZyYW1lVmlldzpmcmFtZVZpZXddOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChXZWJGaXhlZFBvc2l0aW9uQ29udGVudCopX2ZpeGVkUG9zaXRp
b25Db250ZW50CiB7CiAgICAgcmV0dXJuIF9wcml2YXRlID8gX3ByaXZhdGUtPl9maXhlZFBvc2l0
aW9uQ29udGVudCA6IG5pbDsKQEAgLTUyNTIsNyArNTI1Miw3IEBAICsgKHZvaWQpX3NldFRpbGVD
YWNoZUxheWVyUG9vbENhcGFjaXR5OigKIHsKICAgICBMZWdhY3lUaWxlQ2FjaGU6OnNldExheWVy
UG9vbENhcGFjaXR5KGNhcGFjaXR5KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClfc2V0VW5vYnNjdXJlZFNhZmVB
cmVhSW5zZXRzOihXZWJFZGdlSW5zZXRzKWluc2V0cwogewpAQCAtNTM4Myw3ICs1MzgzLDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVGFyZ2V0OihpZCl0IGRlZgogICAgIHJldHVybiBzZWxm
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChp
ZClhc3luY0ZvcndhcmRlcgogewogICAgIGRpc3BhdGNoX29uY2UoJmFzeW5jRm9yd2FyZGVyUHJl
ZCwgXnsKQEAgLTU0MDYsNyArNTQwNiw3IEBAIC0gKHZvaWQpY2xlYXJUYXJnZXQKIAogLSAodm9p
ZClmb3J3YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogewotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRJ
c0N1cnJlbnQoKSkgewogICAgICAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVudHNdOwogICAg
ICAgICBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CkBAIC01NDI4LDcgKzU0Mjgs
NyBAQCAtICh2b2lkKWZvcndhcmRJbnZvY2F0aW9uOihOU0ludm9jYXRpb24gCiAgICAgLy8gRG8g
bm90aGluZyBxdWlldGx5IGlmIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQuCiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKEJPT0wpcmVzcG9uZHNUb1Nl
bGVjdG9yOihTRUwpYVNlbGVjdG9yCiB7CiAgICAgcmV0dXJuIFtkZWZhdWx0VGFyZ2V0IHJlc3Bv
bmRzVG9TZWxlY3RvcjphU2VsZWN0b3JdOwpAQCAtNTQ0Miw3ICs1NDQyLDcgQEAgLSAoTlNNZXRo
b2RTaWduYXR1cmUgKiltZXRob2RTaWduYXR1cmVGbwogCiBAZW5kCiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBfV2ViU2FmZUFz
eW5jRm9yd2FyZGVyCiAKIC0gKGlkKWluaXRXaXRoRm9yd2FyZGVyOihfV2ViU2FmZUZvcndhcmRl
ciAqKWZvcndhcmRlcgpAQCAtNTQ5Myw3ICs1NDkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgICAgIHJldHVybjsKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIAotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQo
KTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKQEAgLTU1MDIsMTMgKzU1
MDIsMTMgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgV1RGOjpzZXRQcm9jZXNzUHJpdmlsZWdl
cyhhbGxQcml2aWxlZ2VzKCkpOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cGVybWl0UHJvY2Vzc1RvVXNlQ29va2llQVBJKHRydWUpOwogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNh
dGlvbldpbGxUZXJtaW5hdGUpIG5hbWU6TlNBcHBsaWNhdGlvbldpbGxUZXJtaW5hdGVOb3RpZmlj
YXRpb24gb2JqZWN0Ok5TQXBwXTsKICNlbmRpZgogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2NhY2hl
TW9kZWxDaGFuZ2VkTm90aWZpY2F0aW9uOikgbmFtZTpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxD
aGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihfcHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOikgbmFtZTpXZWJQcmVmZXJlbmNl
c1JlbW92ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQgPSBOTzsKIAogI2Vsc2UKQEAgLTU1MzQsNyArNTUzNCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6
ZQogI2VuZGlmCiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogKyAoQk9PTClfc2hvdWxkQXV0b21hdGljVGV4dFJlcGxhY2VtZW50QmVFbmFibGVkCiB7
CiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXTsKQEAgLTU2MDUsNyArNTYwNSw3IEBAICsgKHZvaWQpX2FwcGxpY2F0aW9u
V2lsbFRlcm1pbmF0ZQogCiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNsb3NlTG9jYWxTdG9yYWdlKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogKyAoQk9PTClfY2FuU2hvd01JTUVUeXBlOihO
U1N0cmluZyAqKU1JTUVUeXBlIGFsbG93aW5nUGx1Z2luczooQk9PTClhbGxvd1BsdWdpbnMKIHsK
QEAgLTU2MzEsNyArNTYzMSw3IEBAIC0gKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopX3BsdWdpbkZv
ck1JTUUKICAgICBpZiAocGx1Z2luUGFja2FnZSkKICAgICAgICAgcmV0dXJuIHBsdWdpblBhY2th
Z2U7CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQogICAgICAgICByZXR1cm4gW19wcml2
YXRlLT5wbHVnaW5EYXRhYmFzZSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAjZW5kaWYK
QEAgLTU2NDgsNyArNTY0OCw3IEBAIC0gKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopX3BsdWdpbkZv
ckV4dGUKICAgICBpZiAocGx1Z2luUGFja2FnZSkKICAgICAgICAgcmV0dXJuIHBsdWdpblBhY2th
Z2U7CiAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQogICAgICAgICByZXR1cm4gW19wcml2
YXRlLT5wbHVnaW5EYXRhYmFzZSBwbHVnaW5Gb3JFeHRlbnNpb246ZXh0ZW5zaW9uXTsKICNlbmRp
ZgpAQCAtNTY1Niw3ICs1NjU2LDcgQEAgLSAoV2ViQmFzZVBsdWdpblBhY2thZ2UgKilfcGx1Z2lu
Rm9yRXh0ZQogICAgIHJldHVybiBuaWw7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClhZGRQbHVnaW5JbnN0YW5jZVZpZXc6KE5TVmll
dyAqKXZpZXcKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKQEAgLTU2ODUs
NyArNTY4NSw3IEBAIC0gKEJPT0wpX2lzTUlNRVR5cGVSZWdpc3RlcmVkQXNQbHVnaW46KE4KICAg
ICBpZiAoW1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0gaXNNSU1FVHlwZVJlZ2lz
dGVyZWQ6TUlNRVR5cGVdKQogICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+
cGx1Z2luRGF0YWJhc2UgJiYgW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBpc01JTUVUeXBlUmVn
aXN0ZXJlZDpNSU1FVHlwZV0pCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKQEAgLTU2OTUs
NyArNTY5NSw3IEBAIC0gKEJPT0wpX2lzTUlNRVR5cGVSZWdpc3RlcmVkQXNQbHVnaW46KE4KIAog
KyAoQk9PTCljYW5TaG93TUlNRVR5cGVBc0hUTUw6KE5TU3RyaW5nICopTUlNRVR5cGUKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzc5NjE2NTY+ICtbV2ViVmlldyBjYW5TaG93TUlNRVR5cGVBc0hUTUw6
XSByZWdyZXNzZWQgc2lnbmlmaWNhbnRseSBpbiBpT1MgNC4wCiAgICAgLy8gRmFzdCBwYXRoIGZv
ciB0aGUgY29tbW9uIGNhc2UgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIE1JTUUgdHlwZSByZWdpc3Ry
eS4KICAgICBpZiAoW01JTUVUeXBlIGlzRXF1YWxUb1N0cmluZzpAInRleHQvaHRtbCJdKQpAQCAt
NTczOCw3ICs1NzM4LDcgQEAgKyAodm9pZClzZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNBcnJh
eQogICAgIFt2aWV3VHlwZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogKyAoTlNVUkwgKilVUkxGcm9tUGFzdGVib2FyZDooTlNQ
YXN0ZWJvYXJkICopcGFzdGVib2FyZAogewogICAgIHJldHVybiBbcGFzdGVib2FyZCBfd2ViX2Jl
c3RVUkxdOwpAQCAtNTc1Nyw3ICs1NzU3LDcgQEAgICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3Rl
clVSTFNjaGVtZUFzTAogCiAtIChpZClfaW5pdFdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAq
KSBhcmd1bWVudHMKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TQ29kZXIgKmRlY29kZXIgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTpAImRl
Y29kZXIiXTsKICAgICBpZiAoZGVjb2RlcikgewogICAgICAgICBzZWxmID0gW3NlbGYgaW5pdFdp
dGhDb2RlcjpkZWNvZGVyXTsKQEAgLTU3NjksMTQgKzU3NjksMTQgQEAgLSAoaWQpX2luaXRXaXRo
QXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKgogICAgICAgICBOU1N0cmluZyAqZnJhbWVOYW1lID0g
W2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6QCJmcmFtZU5hbWUiXTsKICAgICAgICAgTlNTdHJpbmcg
Kmdyb3VwTmFtZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZ3JvdXBOYW1lIl07CiAgICAg
ICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGZyYW1lTmFtZTpmcmFtZU5hbWUg
Z3JvdXBOYW1lOmdyb3VwTmFtZV07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBib29sIGNs
aWVudE5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCkKIHsKICAgICBpZiAoV2ViS2l0
TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfV0VCVklFV19JTklU
X1RIUkVBRF9XT1JLQVJPVU5EKSkKQEAgLTU4MDgsNyArNTgwOCw3IEBAIHN0YXRpYyBib29sIG5l
ZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXIKICAgICBzdGF0aWMgYm9vbCBpc09sZENsaWVudCA9
IGNsaWVudE5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCk7CiAgICAgcmV0dXJuIGlz
T2xkQ2xpZW50ICYmICFwdGhyZWFkX21haW5fbnAoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWYKIHsKQEAgLTU4MTcsNyArNTgxNyw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWYgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5h
bWU6KE5TU3RyaW5nICopZ3JvdXBOYW1lCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91
bmQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZF0g
aW5pdFdpdGhGcmFtZTpmIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZV07
CiAjZW5kaWYKQEAgLTU4MjYsNyArNTgyNiw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihOU1JlY3QpZiAKICAgICByZXR1cm4gW3NlbGYgX2luaXRXaXRoRnJhbWU6ZiBmcmFtZU5h
bWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWVdOwogfQogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENv
ZGVyOihOU0NvZGVyICopZGVjb2RlcgogewogICAgIGlmIChuZWVkc1dlYlZpZXdJbml0VGhyZWFk
V29ya2Fyb3VuZCgpKQpAQCAtNTkyNiw3ICs1OTI2LDcgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29k
ZXI6KE5TQ29kZXIgKillbmNvZAogCiAgICAgTE9HKEVuY29kaW5nLCAiRnJhbWVOYW1lID0gJUAs
IEdyb3VwTmFtZSA9ICVALCB1c2VCYWNrRm9yd2FyZExpc3QgPSAlZFxuIiwgW1tzZWxmIG1haW5G
cmFtZV0gbmFtZV0sIFtzZWxmIGdyb3VwTmFtZV0sIChpbnQpdXNlQmFja0ZvcndhcmRMaXN0KTsK
IH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQogCiAtICh2b2lkKWRlYWxsb2MKIHsKQEAgLTU5MzgsNyArNTkzOCw3IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIC8vIGNhcnJpZWQgb3V0IGJlZm9yZSB3ZSBhcmUgZGVhbGxvYydkLgogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIGlmIChfcHJpdmF0ZSkKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+
X2dlb2xvY2F0aW9uUHJvdmlkZXIgc3RvcFRyYWNraW5nV2ViVmlldzpzZWxmXTsKICNlbmRpZgpA
QCAtNTk1Miw3ICs1OTUyLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgICAgIGlmIChbW3NlbGYg
Y2xhc3NdIHNob3VsZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICAgICAgLS1X
ZWJWaWV3Q291bnQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICBpZiAoW3NlbGYgX25lZWRzRnJhbWVMb2FkRGVsZWdhdGVSZXRhaW5RdWly
a10pCiAgICAgICAgICAgICBbX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlIHJlbGVhc2VdOwog
I2VuZGlmCkBAIC01OTcwLDcgKzU5NzAsNyBAQCAtICh2b2lkKWNsb3NlCiAgICAgLy8gX2Nsb3Nl
IGV4aXN0ZWQgZmlyc3QsIGFuZCBzb21lIGNsaWVudHMgbWlnaHQgYmUgY2FsbGluZyBvciBvdmVy
cmlkaW5nIGl0LCBzbyBjYWxsIHRocm91Z2guCiAgICAgW3NlbGYgX2Nsb3NlXTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+
bGF5ZXJGbHVzaENvbnRyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmxheWVyRmx1c2hDb250
cm9sbGVyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIF9wcml2YXRlLT5sYXllckZsdXNoQ29udHJv
bGxlciA9IG51bGxwdHI7CkBAIC01OTg4LDcgKzU5ODgsNyBAQCAtIChCT09MKXNob3VsZENsb3Nl
V2l0aFdpbmRvdwogICAgIHJldHVybiBfcHJpdmF0ZS0+c2hvdWxkQ2xvc2VXaXRoV2luZG93Owog
fQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJ
WE1FOiBVc2UgQXBwS2l0IGNvbnN0YW50cyBmb3IgdGhlc2Ugd2hlbiB0aGV5IGFyZSBhdmFpbGFi
bGUuCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3aW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVy
dGllc05vdGlmaWNhdGlvbiA9IEAiTlNXaW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc05v
dGlmaWNhdGlvbiI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRT
Y2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSI7IApA
QCAtNjA2OSw3ICs2MDY5LDcgQEAgLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5k
b3cgKgogICAgICAgICBbc2VsZiBhZGRXaW5kb3dPYnNlcnZlcnNGb3JXaW5kb3c6d2luZG93XTsK
ICAgICB9CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiB7CkBAIC02MDg0LDcg
KzYwODQsNyBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKICAgICAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldENhblN0YXJ0TWVkaWEodHJ1ZSk7CiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXRJc0luV2luZG93KHRydWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtzZWxmIHBy
ZWZlcmVuY2VzXTsKICAgICAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAg
ICAgICAgIFt3aW5kb3cgc2V0VGlsZUJvcmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBzaG93RGVi
dWdCb3JkZXJzXV07CkBAIC02MDkyLDEyICs2MDkyLDEyIEBAIC0gKHZvaWQpdmlld0RpZE1vdmVU
b1dpbmRvdwogICAgICAgICBbd2luZG93IHNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ6W3By
ZWZlcmVuY2VzIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRdXTsKICNlbmRpZgogICAgIH0KLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCiAgICAg
ICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEhpZGVBbmRFeGl0RnVs
bHNjcmVlbl07CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKFtzZWxm
IF9kZXZpY2VTY2FsZUZhY3Rvcl0pOwogI2VuZGlmCiAKQEAgLTYxMTYsNyArNjExNiw3IEBAIC0g
KHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogICAgIFtzZWxmIF91cGRhdGVWaXNpYmlsaXR5U3Rh
dGVdOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC0gKHZvaWQpZG9XaW5kb3dEaWRDaGFuZ2VTY3JlZW4KIHsKICAgICBpZiAoX3ByaXZhdGUgJiYg
X3ByaXZhdGUtPnBhZ2UpCkBAIC02MjA4LDcgKzYyMDgsNyBAQCAtICh2b2lkKV91cGRhdGVTY3Jl
ZW5TY2FsZUZyb21XaW5kb3cKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZh
Y3RvcihzY2FsZUZhY3Rvcik7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZl
cmVuY2VzICopcHJlZnMKIHsKQEAgLTYyNTksNyArNjI1OSw3IEBAIC0gKE5TU3RyaW5nICopcHJl
ZmVyZW5jZXNJZGVudGlmaWVyCiAtICh2b2lkKXNldFVJRGVsZWdhdGU6ZGVsZWdhdGUKIHsKICAg
ICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOwotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRl
ciBjbGVhclRhcmdldF07CiAjZW5kaWYKICAgICBbX3ByaXZhdGUtPlVJRGVsZWdhdGVGb3J3YXJk
ZXIgcmVsZWFzZV07CkBAIC02MjcxLDcgKzYyNzEsNyBAQCAtIChpZClVSURlbGVnYXRlCiAgICAg
cmV0dXJuIF9wcml2YXRlLT5VSURlbGVnYXRlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpZClfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJk
ZXIKIHsKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCkBAIC02Mjg1LDcgKzYyODUsNyBAQCAt
IChpZClfcmVzb3VyY2VMb2FkRGVsZWdhdGVGb3J3YXJkZXIKIAogLSAodm9pZClzZXRSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTogZGVsZWdhdGUKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBbX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZv
cndhcmRlciBjbGVhclRhcmdldF07CiAgICAgW19wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVs
ZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NE
ZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsKQEAgLTYzMTMsNyArNjMxMyw3IEBAIC0gKGlkKWRvd25s
b2FkRGVsZWdhdGUKIC0gKHZvaWQpc2V0UG9saWN5RGVsZWdhdGU6ZGVsZWdhdGUKIHsKICAgICBf
cHJpdmF0ZS0+cG9saWN5RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlRm9y
d2FyZGVyIGNsZWFyVGFyZ2V0XTsKICNlbmRpZgogICAgIFtfcHJpdmF0ZS0+cG9saWN5RGVsZWdh
dGVGb3J3YXJkZXIgcmVsZWFzZV07CkBAIC02MzI1LDcgKzYzMjUsNyBAQCAtIChpZClwb2xpY3lE
ZWxlZ2F0ZQogICAgIHJldHVybiBfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGU7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9mcmFtZUxvYWRE
ZWxlZ2F0ZUZvcndhcmRlcgogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2luZykKQEAgLTYzNDMs
NyArNjM0Myw3IEBAIC0gKHZvaWQpc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGUKICAgICAv
LyB1bmNvbnZlcmVkIGEgbGF0ZW50IGJ1ZyBpbiBhdCBsZWFzdCBvbmUgV2ViS2l0IGFwcCB3aGVy
ZSB0aGUgZGVsZWdhdGUgd2Fzbid0IHByb3Blcmx5IHJldGFpbmVkIGJ5IHRoZSBhcHAgYW5kCiAg
ICAgLy8gd2FzIGRlYWxsb2MnZWQgYmVmb3JlIGJlaW5nIGNsZWFyZWQuCiAgICAgLy8gVGhpcyBp
cyBhbiBlZmZvcnQgdG8ga2VlcCBzdWNoIGFwcHMgd29ya2luZyBmb3Igbm93LgotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtzZWxmIF9uZWVk
c0ZyYW1lTG9hZERlbGVnYXRlUmV0YWluUXVpcmtdKSB7CiAgICAgICAgIFtkZWxlZ2F0ZSByZXRh
aW5dOwogICAgICAgICBbX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlIHJlbGVhc2VdOwpAQCAt
NjQwNywxMSArNjQwNywxMSBAQCAtIChCT09MKWdvQmFjawogICAgIGlmICghX3ByaXZhdGUtPnBh
Z2UpCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgIVdlYlRo
cmVhZElzRW5hYmxlZCgpKQogI2VuZGlmCiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5iYWNr
Rm9yd2FyZCgpLmdvQmFjaygpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+YmFj
a0ZvcndhcmQoKS5nb0JhY2soKTsKICAgICB9KTsKQEAgLTY0MjUsMTEgKzY0MjUsMTEgQEAgLSAo
Qk9PTClnb0ZvcndhcmQKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4g
Tk87CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgIVdlYlRocmVhZElzRW5hYmxlZCgpKQogI2VuZGlm
CiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpOwot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlRocmVh
ZFJ1biheewogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQo
KTsKICAgICB9KTsKQEAgLTY2NTUsNyArNjY1NSw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmkKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3Vu
ZFRocmVlKCk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFJldHVybiBzdGF0ZW1lbnRzIGFyZSBvbmx5IHZhbGlkIGluIGEgZnVuY3Rpb24g
YnV0IHNvbWUgYXBwbGljYXRpb25zIHBhc3MgaW4gc2NyaXB0cwogICAgIC8vIHByZWZpeGVkIHdp
dGggcmV0dXJuICg8cmRhcjovL3Byb2JsZW1zLzUxMDM3MjAmNDYxNjg2MD4pIHNpbmNlIG9sZGVy
IFdlYktpdCB2ZXJzaW9ucwogICAgIC8vIHNpbGVudGx5IGlnbm9yZWQgdGhlIHJldHVybi4gSWYg
dGhlIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCBhZ2FpbnN0IGFuIGVhcmxpZXIgdmVyc2lvbgpAQCAt
NjcwNyw3ICs2NzA3LDcgQEAgLSAodm9pZClzZXRIb3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RX
aQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gW3NlbGYgX21haW5D
b3JlRnJhbWVdOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAgICAgIFtbW2tpdChmcmFtZSkg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdzpob3N0V2lu
ZG93XTsKICAgICBpZiAoX3ByaXZhdGUtPmhvc3RXaW5kb3cgJiYgW3NlbGYgd2luZG93XSAhPSBf
cHJpdmF0ZS0+aG9zdFdpbmRvdykKQEAgLTY3MTksNyArNjcxOSw3IEBAIC0gKHZvaWQpc2V0SG9z
dFdpbmRvdzooTlNXaW5kb3cgKilob3N0V2kKICAgICBfcHJpdmF0ZS0+aG9zdFdpbmRvdyA9IFto
b3N0V2luZG93IHJldGFpbl07CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAg
ICAgIFtbW2tpdChmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdEaWRNb3ZlVG9I
b3N0V2luZG93XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcihbc2VsZiBfZGV2aWNl
U2NhbGVGYWN0b3JdKTsKICNlbmRpZgogfQpAQCAtNjkxNiwxMiArNjkxNiwxMiBAQCAtIChCT09M
KWJlY29tZUZpcnN0UmVzcG9uZGVyCiAgICAgLy8gVGhpcyB3b3JrcyB0b2dldGhlciB3aXRoIHNl
dE5leHRLZXlWaWV3IHRvIHNwbGljZSB0aGUgV2ViVmlldyBpbnRvCiAgICAgLy8gdGhlIGtleSBs
b29wIHNpbWlsYXIgdG8gdGhlIHdheSBOU1Njcm9sbFZpZXcgZG9lcyB0aGlzLiBOb3RlIHRoYXQK
ICAgICAvLyBXZWJGcmFtZVZpZXcgaGFzIHZlcnkgc2ltaWxhciBjb2RlLgotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9
IFtzZWxmIHdpbmRvd107CiAjZW5kaWYKICAgICBXZWJGcmFtZVZpZXcgKm1haW5GcmFtZVZpZXcg
PSBbW3NlbGYgbWFpbkZyYW1lXSBmcmFtZVZpZXddOwogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1Jlc3BvbmRlciAqcHJldmlvdXNGaXJzdFJl
c3BvbmRlciA9IFtbc2VsZiB3aW5kb3ddIF9vbGRGaXJzdFJlc3BvbmRlckJlZm9yZUJlY29taW5n
XTsKICAgICBCT09MIGZyb21PdXRzaWRlID0gIVtwcmV2aW91c0ZpcnN0UmVzcG9uZGVyIGlzS2lu
ZE9mQ2xhc3M6W05TVmlldyBjbGFzc11dIHx8ICghWyhOU1ZpZXcgKilwcmV2aW91c0ZpcnN0UmVz
cG9uZGVyIGlzRGVzY2VuZGFudE9mOnNlbGZdICYmIHByZXZpb3VzRmlyc3RSZXNwb25kZXIgIT0g
c2VsZik7CiAKQEAgLTY5NDAsNyArNjk0MCw3IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25k
ZXIKICNlbmRpZgogCiAgICAgaWYgKFttYWluRnJhbWVWaWV3IGFjY2VwdHNGaXJzdFJlc3BvbmRl
cl0pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBfcHJpdmF0ZS0+YmVjb21pbmdGaXJzdFJlc3BvbmRlciA9IFlFUzsKICAgICAgICAgX3By
aXZhdGUtPmJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tT3V0c2lkZSA9IGZyb21PdXRzaWRlOwog
ICAgICAgICBbd2luZG93IG1ha2VGaXJzdFJlc3BvbmRlcjptYWluRnJhbWVWaWV3XTsKQEAgLTcw
MzIsNyArNzAzMiw3IEBAIC0gKGRvdWJsZSllc3RpbWF0ZWRQcm9ncmVzcwogICAgIHJldHVybiBf
cHJpdmF0ZS0+cGFnZS0+cHJvZ3Jlc3MoKS5lc3RpbWF0ZWRQcm9ncmVzcygpOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TQXJyYXkgKilw
YXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24KIHsKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmll
dz4gKmRvY3VtZW50VmlldyA9IFtbW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdIGZyYW1lVmll
d10gZG9jdW1lbnRWaWV3XTsKQEAgLTcwOTAsNyArNzA5MCw3IEBAIC0gKHZvaWQpcmVtb3ZlRHJh
Z0NhcmV0CiAgICAgICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VuZGVkKCk7CiAjZW5k
aWYKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAtICh2b2lkKXNldE1haW5GcmFtZVVSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcK
IHsKQEAgLTcxMjgsNyArNzEyOCw3IEBAIC0gKE5TU3RyaW5nICopbWFpbkZyYW1lVGl0bGUKICAg
ICByZXR1cm4gKG1haW5GcmFtZVRpdGxlICE9IG5pbCkgPyBtYWluRnJhbWVUaXRsZSA6IChOU1N0
cmluZyAqKUAiIjsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAtIChOU0ltYWdlICopbWFpbkZyYW1lSWNvbgogewogICAgIFdlYkNvcmVUaHJlYWRW
aW9sYXRpb25DaGVja1JvdW5kVGhyZWUoKTsKQEAgLTczNDgsNyArNzM0OCw3IEBAIHN0YXRpYyBX
ZWJGcmFtZVZpZXcgKmNvbnRhaW5pbmdGcmFtZVZpZXcKICAgICByZXR1cm4gKFdlYkZyYW1lVmll
dyAqKXZpZXc7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogLSAoZmxvYXQpX2RldmljZVNjYWxlRmFjdG9yCiB7CiAgICAgaWYgKF9wcml2YXRlLT5j
dXN0b21EZXZpY2VTY2FsZUZhY3RvciAhPSAwKQpAQCAtNzM4MCw3ICs3MzgwLDcgQEAgKyAoV2Vi
Q2FjaGVNb2RlbClfbWF4Q2FjaGVNb2RlbEluQW55SW5zdAogCiArICh2b2lkKV9jYWNoZU1vZGVs
Q2hhbmdlZE5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGlzIG5l
ZWRzIHRvIGhhcHBlbiBvbiB0aGUgV2ViIFRocmVhZAogICAgIFdlYlRocmVhZFJ1biheewogI2Vu
ZGlmCkBAIC03MzkyLDcgKzczOTIsNyBAQCArICh2b2lkKV9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlm
aWNhdGlvbjooCiAgICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOmNhY2hlTW9kZWxdOwogICAg
IGVsc2UgaWYgKGNhY2hlTW9kZWwgPCBbc2VsZiBfY2FjaGVNb2RlbF0pCiAgICAgICAgIFtzZWxm
IF9zZXRDYWNoZU1vZGVsOnN0ZDo6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pXTsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9KTsKICNl
bmRpZgogfQpAQCAtNzQyOSw3ICs3NDI5LDcgQEAgLSAoV2ViRnJhbWVWaWV3ICopX2ZyYW1lVmll
d0F0V2luZG93UG9pbgogewogICAgIGlmIChfcHJpdmF0ZS0+Y2xvc2VkKQogICAgICAgICByZXR1
cm4gbmlsOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgTlNWaWV3ICp2aWV3ID0gW3NlbGYgaGl0VGVzdDpbW3NlbGYgc3VwZXJ2aWV3XSBjb252ZXJ0
UG9pbnQ6cG9pbnQgZnJvbVZpZXc6bmlsXV07CiAjZWxzZQogICAgIC8vW1dlYlZpZXcgc3VwZXJ2
aWV3XSBvbiBpT1MgaXMgbmlsLCBkb24ndCBkbyBhIGNvbnZlcnRQb2ludApAQCAtNzQ0NCwxNCAr
NzQ0NCwxNCBAQCAtIChXZWJGcmFtZVZpZXcgKilfZnJhbWVWaWV3QXRXaW5kb3dQb2luCiAKICsg
KHZvaWQpX3ByZWZsaWdodFNwZWxsQ2hlY2tlck5vdzooaWQpc2VuZGVyCiB7Ci0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICNlbmRp
ZgogfQogCiArICh2b2lkKV9wcmVmbGlnaHRTcGVsbENoZWNrZXIKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEFzIEFwcEtpdCBkb2VzLCB3
ZSB3aXNoIHRvIGRlbGF5IHRpY2tsaW5nIHRoZSBzaGFyZWQgc3BlbGxjaGVja2VyIGludG8gZXhp
c3RlbmNlIG9uIGFwcGxpY2F0aW9uIGxhdW5jaC4KICAgICBpZiAoW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlckV4aXN0c10pIHsKICAgICAgICAgW3NlbGYgX3ByZWZsaWdodFNwZWxs
Q2hlY2tlck5vdzpzZWxmXTsKQEAgLTc1MDMsNyArNzUwMyw3IEBAIC0gKElCQWN0aW9uKXRha2VT
dHJpbmdVUkxGcm9tOiBzZW5kZXIKIAogLSAoQk9PTCljYW5Hb0JhY2sKIHsKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAg
ICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICNlbHNlCkBAIC03NTE2LDcgKzc1MTYsNyBAQCAtIChC
T09MKWNhbkdvQmFjawogCiAtIChCT09MKWNhbkdvRm9yd2FyZAogewotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBp
ZiAoIV9wcml2YXRlLT5wYWdlKQogI2Vsc2UKQEAgLTc1MzksNyArNzUzOSw3IEBAIC0gKElCQWN0
aW9uKWdvRm9yd2FyZDooaWQpc2VuZGVyCiAKIC0gKElCQWN0aW9uKXN0b3BMb2FkaW5nOihpZClz
ZW5kZXIKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoV2ViVGhyZWFkTm90Q3VycmVudCgpKSB7CiAgICAgICAgIF9wcml2YXRlLT5pc1N0b3Bw
aW5nID0gdHJ1ZTsKICAgICAgICAgV2ViVGhyZWFkU2V0U2hvdWxkWWllbGQoKTsKQEAgLTc1NDgs
MTIgKzc1NDgsMTIgQEAgLSAoSUJBY3Rpb24pc3RvcExvYWRpbmc6KGlkKXNlbmRlcgogICAgICAg
ICBfcHJpdmF0ZS0+aXNTdG9wcGluZyA9IGZhbHNlOwogI2VuZGlmCiAgICAgW1tzZWxmIG1haW5G
cmFtZV0gc3RvcExvYWRpbmddOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIH0pOwogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpc3RvcExvYWRpbmdBbmRDbGVhcgogewogICAgIGlm
IChXZWJUaHJlYWROb3RDdXJyZW50KCkgJiYgIVdlYlRocmVhZElzTG9ja2VkKCkpIHsKQEAgLTc1
ODEsMTEgKzc1ODEsMTEgQEAgLSAodm9pZClzdG9wTG9hZGluZ0FuZENsZWFyCiAKIC0gKElCQWN0
aW9uKXJlbG9hZDooaWQpc2VuZGVyCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUnVuKF57CiAjZW5kaWYgICAgICAgICAgICAKICAg
ICBbW3NlbGYgbWFpbkZyYW1lXSByZWxvYWRdOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIH0pOwogI2VuZGlmICAgICAgICAgICAgCiB9CkBAIC03NjMy
LDcgKzc2MzIsNyBAQCAtIChJQkFjdGlvbil0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luCiAg
ICAgW3NlbGYgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOiFbc2VsZiBpc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZF1dOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKElCQWN0aW9uKXRvZ2dsZVNtYXJ0SW5zZXJ0RGVs
ZXRlOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6
IVtzZWxmIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZF1dOwpAQCAtNzc0NCw3ICs3NzQ0LDcgQEAg
LSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogICAgIEJPT0wgcmVzdWx0
ID0gW3NlbGYgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTppdGVtXTsK
ICAgICByZXR1cm4gQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKHJlc3VsdCwgc2VsZiwg
QHNlbGVjdG9yKHdlYlZpZXc6dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpkZWZhdWx0VmFsaWRh
dGlvbjopLCBpdGVtLCByZXN1bHQpOwogfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBlbmQKIApAQCAtNzg0Myw3ICs3ODQzLDcg
QEAgLSAodm9pZClzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5OihCT09MKQogICAgIC8vIHdlIHVz
ZSB0aGlzIHRvIHRlbGwgTlNUcmVlQ29udHJvbGxlciB0byByZXNldCBpdHMgb2JzZXJ2ZXJzIGFu
ZCBjbGVhciBpdHMgc3RhdGUKICAgICBpZiAoX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVh
ZHkgPT0gbWFpbkZyYW1lRG9jdW1lbnRSZWFkeSkKICAgICAgICAgcmV0dXJuOwotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3NlbGYgX3dpbGxDaGFu
Z2VWYWx1ZUZvcktleTpfV2ViTWFpbkZyYW1lRG9jdW1lbnRLZXldOwogICAgIF9wcml2YXRlLT5t
YWluRnJhbWVEb2N1bWVudFJlYWR5ID0gbWFpbkZyYW1lRG9jdW1lbnRSZWFkeTsKICAgICBbc2Vs
ZiBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZURvY3VtZW50S2V5XTsKQEAgLTc4
OTgsNyArNzg5OCw3IEBAIC0gKEJPT0wpc2hvdWxkQ2xvc2UKICAgICByZXR1cm4gY29yZUZyYW1l
LT5sb2FkZXIoKS5zaG91bGRDbG9zZSgpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURl
c2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC04MDY5LDcgKzgwNjksNyBAQCAtICh2b2lkKXNj
cm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW5nCiAgICAgW1tbW3JhbmdlIHN0YXJ0Q29udGFp
bmVyXSBvd25lckRvY3VtZW50XSB3ZWJGcmFtZV0gX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOnJh
bmdlXTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAodm9pZClzY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5nZSB3aXRoSW5z
ZXQ6KENHRmxvYXQpaW5zZXQKIHsKICAgICBbW1tbcmFuZ2Ugc3RhcnRDb250YWluZXJdIG93bmVy
RG9jdW1lbnRdIHdlYkZyYW1lXSBfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6cmFuZ2Ugd2l0aElu
c2V0Omluc2V0XTsKQEAgLTgxNDcsNyArODE0Nyw3IEBAIC0gKHZvaWQpYWRkVmlzaXRlZExpbmtz
OihOU0FycmF5ICopdmlzaXQKICAgICAgICAgdmlzaXRlZExpbmtTdG9yZS5hZGRWaXNpdGVkTGlu
ayh1cmxTdHJpbmcpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAtICh2b2lkKXJlbW92ZVZpc2l0ZWRMaW5rOihOU1VSTCAqKXVybAogewogICAgIF9w
cml2YXRlLT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpLnJlbW92ZVZpc2l0ZWRMaW5rKFVSTCh1
cmwpLnN0cmluZygpKTsKQEAgLTgxNTYsNyArODE1Niw3IEBAIC0gKHZvaWQpcmVtb3ZlVmlzaXRl
ZExpbms6KE5TVVJMICopdXJsCiAKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1ByaW50
aW5nUHJpdmF0ZSkKIAogLSAoZmxvYXQpX2hlYWRlckhlaWdodApAQCAtODI4Miw3ICs4MjgyLDcg
QEAgLSAodm9pZClyZW1vdmVPYnNlcnZlcjooTlNPYmplY3QgKilhbk9icwogCiBAZW5kCiAKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRWRpdGluZwpAQCAtODMx
Miw3ICs4MzEyLDcgQEAgLSAoRE9NUmFuZ2UgKillZGl0YWJsZURPTVJhbmdlRm9yUG9pbnQ6KAog
CiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJl
bnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5T
U2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wp
ZmxhZwogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gRklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0v
NDk4NTMyMT4gLSBXZSBjYW4gcGhhc2UgaXQgb3V0IG9uY2UgQXBlcnR1cmUgY2FuIGFkb3B0IHRo
ZSBuZXcgYmVoYXZpb3Igb24gdGhlaXIgZW5kCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9BUEVSVFVSRV9RVUlSSykgJiYgW1tbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29t
LmFwcGxlLkFwZXJ0dXJlIl0pCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC04NDI4LDcgKzg0Mjgs
NyBAQCAtICh2b2lkKXNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGZsYWc7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmNvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCBmb3JLZXk6V2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkXTsKICNl
bmRpZgogICAgIGlmIChbc2VsZiBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZF0pCkBA
IC04NDQyLDcgKzg0NDIsNyBAQCAtIChCT09MKWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkCiAgICAgcmV0dXJuIChjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgJiYgW3NlbGYg
X2NvbnRpbnVvdXNDaGVja2luZ0FsbG93ZWRdKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcKIHsKICAgICBpZiAoIV9wcml2YXRlLT5oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZykg
ewpAQCAtODQ1OCw3ICs4NDU4LDcgQEAgLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyCiAg
ICAgaWYgKCFfcHJpdmF0ZS0+YWxsb3dzVW5kbykKICAgICAgICAgcmV0dXJuIG5pbDsKIAotI2lm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNVbmRvTWFu
YWdlciAqdW5kb01hbmFnZXIgPSBbW3NlbGYgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gdW5k
b01hbmFnZXJGb3JXZWJWaWV3OnNlbGZdOwogICAgIGlmICh1bmRvTWFuYWdlcikKICAgICAgICAg
cmV0dXJuIHVuZG9NYW5hZ2VyOwpAQCAtODUxNyw3ICs4NTE3LDcgQEAgLSAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKXN0eWxlRGVjbGFyYQogCiBAZW5kCiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZp
ZXdHcmFtbWFyQ2hlY2tpbmcpCiAKIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgbWVy
Z2VkIGludG8gV2ViVmlld0VkaXRpbmcgd2hlbiB3ZSdyZSBub3QgaW4gQVBJIGZyZWV6ZQpAQCAt
ODU1Niw3ICs4NTU2LDcgQEAgLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRl
cgogCiAtIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIE5POwog
I2Vsc2UKICAgICByZXR1cm4gYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwpAQCAt
ODU2NSw3ICs4NTY1LDcgQEAgLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YgogCiAtIChCT09MKWlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIHsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxz
ZQogICAgIHJldHVybiBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKQEAgLTg1NzQsNyAr
ODU3NCw3IEBAIC0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogCiAtIChC
T09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKIHsKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxzZQogICAg
IHJldHVybiBhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDsKQEAgLTg1ODMsNyArODU4
Myw3IEBAIC0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmwKIAogLSAoQk9P
TClpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87CiAjZWxzZQogICAgIHJl
dHVybiBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOwpAQCAtODU5MiwxNCArODU5Miwx
NCBAQCAtIChCT09MKWlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlCiAKIC0gKEJPT0wp
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkCiB7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIE5POwogI2Vsc2UKICAgICBy
ZXR1cm4gYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKICNlbmRpZgogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClz
ZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZwogewpAQCAtODY3
MSw3ICs4NjcxLDcgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpbwog
ICAgIFtzZWxmIHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6IVtzZWxmIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF1dOwogfQogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGVuZAogCkBA
IC04NzUyLDcgKzg3NTIsNyBAQCAtICh2b2lkKV9wZXJmb3JtUmVzcG9uZGVyT3BlcmF0aW9uOihT
RUwpCiAKIEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJEKQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBGT1JXQVJEKGNsZWFyVGV4dCkKIEZP
UldBUkQodG9nZ2xlQm9sZCkKIEZPUldBUkQodG9nZ2xlSXRhbGljKQpAQCAtODg0Nyw3ICs4ODQ3
LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQogCiAgICAgTlNV
SW50ZWdlciBuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogICAgIE5TVUludGVnZXIgbnN1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdW5zaWduZWQgdGlsZUxheWVyUG9vbENhcGFjaXR5ID0gMDsKICNl
bmRpZgogCkBAIC04ODY1LDcgKzg4NjUsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJD
YWNoZU1vZGVsKWNhCiAgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQg
KiAxMDI0OwogICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikKICAgICAgICAgICAgIGNh
Y2hlVG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhY2hl
VG90YWxDYXBhY2l0eSA9IDQgKiAxMDI0ICogMTAyNDsgCiAjZW5kaWYKQEAgLTg4NzksNyArODg3
OSw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2EKICAgICAgICAg
Ly8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgbnN1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV07CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gVGlsZUNh
Y2hlIGxheWVyIHBvb2wgY2FwYWNpdHksIGluIGJ5dGVzLgogICAgICAgICBpZiAobWVtU2l6ZSA+
PSAxMDI0KQogICAgICAgICAgICAgdGlsZUxheWVyUG9vbENhcGFjaXR5ID0gMjQgKiAxMDI0ICog
MTAyNDsKQEAgLTg5MzAsNyArODkzMCw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNh
Y2hlTW9kZWwpY2EKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbnN1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDIwICogMTAyNCAqIDEwMjQ7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gVGlsZUNhY2hlIGxheWVyIHBvb2wgY2FwYWNpdHks
IGluIGJ5dGVzLgogICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0KQogICAgICAgICAgICAgdGls
ZUxheWVyUG9vbENhcGFjaXR5ID0gMjQgKiAxMDI0ICogMTAyNDsKQEAgLTg5NzAsNyArODk3MCw3
IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2EKIAogICAgICAgICBk
ZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gNjBfczsKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0
KQogICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMTYgKiAxMDI0ICogMTAy
NDsKICAgICAgICAgZWxzZQpAQCAtOTAwMiw3ICs5MDAyLDcgQEAgKyAodm9pZClfc2V0Q2FjaGVN
b2RlbDooV2ViQ2FjaGVNb2RlbCljYQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuc3VybENh
Y2hlRGlza0NhcGFjaXR5ID0gNTAgKiAxMDI0ICogMTAyNDsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBUaWxlQ2FjaGUgbGF5ZXIgcG9v
bCBjYXBhY2l0eSwgaW4gYnl0ZXMuCiAgICAgICAgIGlmIChtZW1TaXplID49IDEwMjQpCiAgICAg
ICAgICAgICB0aWxlTGF5ZXJQb29sQ2FwYWNpdHkgPSA0OCAqIDEwMjQgKiAxMDI0OwpAQCAtOTAy
NSw3ICs5MDI1LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQog
CiAgICAgYXV0byYgcGFnZUNhY2hlID0gUGFnZUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICBwYWdl
Q2FjaGUuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBzdGQ6
Om1heChuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHksIFtuc3VybENhY2hlIG1lbW9yeUNhcGFjaXR5
XSk7CiAgICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOwogICAgIGlmICgoY2ZDYWNoZSA9IFtuc3Vy
bENhY2hlIF9DRlVSTENhY2hlXSkpCkBAIC05MDM3LDcgKzkwMzcsNyBAQCArICh2b2lkKV9zZXRD
YWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhCiAjZW5kaWYKICAgICBbbnN1cmxDYWNoZSBzZXRE
aXNrQ2FwYWNpdHk6bnN1cmxDYWNoZURpc2tDYXBhY2l0eV07CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbV2ViVmlldyBfc2V0VGlsZUNhY2hlTGF5
ZXJQb29sQ2FwYWNpdHk6dGlsZUxheWVyUG9vbENhcGFjaXR5XTsKICNlbmRpZgogCkBAIC05MDUw
LDcgKzkwNTAsNyBAQCArIChXZWJDYWNoZU1vZGVsKV9jYWNoZU1vZGVsCiAgICAgcmV0dXJuIHNf
Y2FjaGVNb2RlbDsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAtICh2b2lkKV9vcGVuRnJhbWVJbk5ld1dpbmRvd0Zyb21NZW51OihOU01lbnVJdGVt
ICopc2VuZGVyCiB7CiAgICAgQVNTRVJUX0FSRyhzZW5kZXIsIFtzZW5kZXIgaXNLaW5kT2ZDbGFz
czpbTlNNZW51SXRlbSBjbGFzc11dKTsKQEAgLTkxMDMsNyArOTEwMyw3IEBAIC0gKHZvaWQpX3Nl
YXJjaFdpdGhTcG90bGlnaHRGcm9tTWVudTooaWQKIAogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVk
V29ya3NwYWNlXSBzaG93U2VhcmNoUmVzdWx0c0ZvclF1ZXJ5U3RyaW5nOnNlbGVjdGVkU3RyaW5n
XTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiBAZW5kCiAKQEAgLTkxNjAsNyArOTE2MCw3IEBAIC0gKHZvaWQpX3JldHJpZXZl
S2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmUKICAgICAvLyBCaXQgMCBpcyBzZXQgaWYgdXNlciBjYW4g
c2V0IHRoZSBmb2N1cyB0byBtZW51cywgdGhlIGRvY2ssIGFuZCB2YXJpb3VzIHdpbmRvd3MgdXNp
bmcgdGhlIGtleWJvYXJkLgogICAgIC8vIEJpdCAxIGlzIHNldCBpZiBjb250cm9scyBvdGhlciB0
aGFuIHRleHQgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgdGFiIG9yZGVyIChXZWJLaXQgYWxz
byBhbHdheXMgaW5jbHVkZXMgbGlzdHMpLgogICAgIF9wcml2YXRlLT5fa2V5Ym9hcmRVSU1vZGUg
PSAobW9kZSAmIDB4MikgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1
bHQ7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBjaGVjayBmb3IgdGFiYmluZyB0byBsaW5rcwogICAgIGlmIChbX3ByaXZhdGUtPnByZWZlcmVu
Y2VzIHRhYnNUb0xpbmtzXSkKICAgICAgICAgX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZSA9IChL
ZXlib2FyZFVJTW9kZSkoX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZSB8IEtleWJvYXJkQWNjZXNz
VGFic1RvTGlua3MpOwpAQCAtOTE3NCw3ICs5MTc0LDcgQEAgLSAoS2V5Ym9hcmRVSU1vZGUpX2tl
eWJvYXJkVUlNb2RlCiAKICAgICAgICAgW3NlbGYgX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9t
UHJlZmVyZW5jZXM6bmlsXTsKICAgICAgICAgCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIAogICAgICAgICAgICAgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6KSAKICAg
ICAgICAgICAgIG5hbWU6S2V5Ym9hcmRVSU1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0
Om5pbF07CkBAIC05MTg3LDcgKzkxODcsNyBAQCAtIChLZXlib2FyZFVJTW9kZSlfa2V5Ym9hcmRV
SU1vZGUKICAgICByZXR1cm4gX3ByaXZhdGUtPl9rZXlib2FyZFVJTW9kZTsKIH0KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRJbnNl
cnRpb25QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCiB7CiAgICAgX3ByaXZh
dGUtPmluc2VydGlvblBhc3RlYm9hcmQgPSBwYXN0ZWJvYXJkOwpAQCAtOTI2Niw3ICs5MjY2LDcg
QEAgLSAodm9pZClfc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaQogKi8KIGJvb2wgTGF5
ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKIApA
QCAtOTI4OSw3ICs5Mjg5LDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXll
cnMoKQogI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBFbnN1cmUgZml4ZWQgcG9zaXRpb25zIGxheWVycyBhcmUg
d2hlcmUgdGhleSBzaG91bGQgYmUuCiAgICAgW21fd2ViVmlldyBfc3luY2hyb25pemVDdXN0b21G
aXhlZFBvc2l0aW9uTGF5b3V0UmVjdF07CiAjZW5kaWYKQEAgLTkzMTUsNyArOTMxNSw3IEBAIGJv
b2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKIAogLSAodm9pZClfc2NoZWR1
bGVDb21wb3NpdGluZ0xheWVyRmx1c2gKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPmNsb3NpbmcpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgpAQCAtOTMzNCw3ICs5MzM0LDcgQEAgLSAoQk9PTClfZmx1c2hDb21wb3NpdGlu
Z0NoYW5nZXMKICAgICByZXR1cm4gWUVTOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zY2hlZHVsZUxheWVyRmx1c2hGb3JQZW5kaW5n
VGlsZUNhY2hlUmVwYWludAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNv
cmVGcmFtZV07CkBAIC05MzYzLDcgKzkzNjMsNyBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlCiAgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIp
IHsKICAgICAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKICAgICAgICAgW19wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW19wcml2YXRlLT5m
dWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46KFVJVmlldyAqKVtbW3NlbGYgd2lu
ZG93XSBob3N0TGF5ZXJdIGRlbGVnYXRlXSBtb2RlOm1vZGVdOwogI2Vsc2UKICAgICAgICAgW19w
cml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46W1tzZWxmIHdpbmRv
d10gc2NyZWVuXV07CkBAIC05NDI1LDcgKzk0MjUsNyBAQCAtICh2b2lkKV9jbGVhclBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCi0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChCT09MKV9zdXBwb3J0c0Z1bGxTY3Jl
ZW5Gb3JFbGVtZW50Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50KillbGVtZW50IHdpdGhLZXlib2Fy
ZDooQk9PTCl3aXRoS2V5Ym9hcmQKIHsKICAgICBpZiAoIVtbc2VsZiBwcmVmZXJlbmNlc10gZnVs
bFNjcmVlbkVuYWJsZWRdKQpAQCAtOTYyMiw3ICs5NjIyLDcgQEAgLSAodm9pZCloaWRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlCiAgICAgX3ByaXZhdGUtPmZvcm1WYWxpZGF0aW9uQnViYmxlID0gbnVs
bHB0cjsKIH0KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFU
Rk9STShJT1MpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAtIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyICopIF9kZXZp
Y2VQaWNrZXIKIHsKICAgICBpZiAoIV9wcml2YXRlLT5tX3BsYXliYWNrVGFyZ2V0UGlja2VyKQpA
QCAtMTAxMTMsNyArMTAxMTMsNyBAQCAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVz
c2FnZTooCiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9yZXNldEFsbEdlb2xvY2F0
aW9uUGVybWlzc2lvbgogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTEwMTg2LDcgKzEw
MTg2LDcgQEAgKyAodm9pZClfc2V0Rm9udFdoaXRlbGlzdDooTlNBcnJheSAqKXdoaQogfQogQGVu
ZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW1wbGVt
ZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0lPU1BERikKIAogKyAoQ2xhc3MpX2dldFBERlJlcHJl
c2VudGF0aW9uQ2xhc3MKQEAgLTEwMjIwLDcgKzEwMjIwLDcgQEAgKyAodm9pZClfc2V0UERGVmll
d0NsYXNzOihDbGFzcylwZGZWaWV3QwogCiAtIChOU1ZpZXcqKWZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcKIHsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoX3ByaXZhdGUtPm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyICYmIFtfcHJpdmF0ZS0+bmV3RnVs
bHNjcmVlbkNvbnRyb2xsZXIgaXNGdWxsU2NyZWVuXSkKICAgICAgICAgcmV0dXJuIFtfcHJpdmF0
ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgd2ViVmlld1BsYWNlaG9sZGVyXTsKICNlbmRpZgpA
QCAtMTAyMzgsMTEgKzEwMjM4LDExIEBAIHZvaWQgV2ViSW5zdGFsbE1lbW9yeVByZXNzdXJlSGFu
ZGxlcih2b2kKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAg
ICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
c2luZ2xldG9uKCk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVt
b3J5SGFuZGxlcihbXSAoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3Vz
KSB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
ICAgICAgICAgV2ViVGhyZWFkUnVuKF57CiAjZW5kaWYKICAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpyZWxlYXNlTWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cyk7Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAgICAgfSk7CiAjZW5kaWYK
ICAgICAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEuaAkocmV2aXNpb24gMjM3MjYwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBACiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgIldlYkNhcmV0Q2hhbmdlTGlzdGVuZXIuaCIKICNlbmRpZgogCkBAIC03
NywxNyArNzcsMTcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ7CiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogQGNsYXNzIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVy
OwogI2VuZGlmCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpICYmIFBMQVRGT1JNKElPUykK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBj
bGFzcyBXZWJJbmRpY2F0ZUxheWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBXQUtXaW5kb3c7CiBAY2xhc3MgV2ViRXZlbnQ7
CiBAY2xhc3MgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOwogI2VuZGlmCiAKQEAgLTE3MSw3ICsxNzEsNyBA
QCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIGlkIGVkaXRpbmdE
ZWxlZ2F0ZUZvcndhcmRlcjsKICAgICBpZCBzY3JpcHREZWJ1Z0RlbGVnYXRlOwogICAgIGlkIGhp
c3RvcnlEZWxlZ2F0ZTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZCByZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXI7CiAgICAgaWQgZm9y
bURlbGVnYXRlRm9yd2FyZGVyOwogI2VuZGlmCkBAIC0yMzAsNyArMjMwLDcgQEAgQGludGVyZmFj
ZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICAKICAgICBXZWJQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXM7CiAgICAgQk9PTCB1c2VTaXRlU3BlY2lmaWNTcG9vZmluZzsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1VSTCAqdXNlclN0eWxl
U2hlZXRMb2NhdGlvbjsKICNlbmRpZgogCkBAIC0yNDQsNyArMjQ0LDcgQEAgQGludGVyZmFjZSBX
ZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBXZWJIaXN0b3J5RGVsZWdhdGVJbXBsZW1l
bnRhdGlvbkNhY2hlIGhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9uczsKIAogICAgIEJPT0wg
Y2xvc2VkOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IEJPT0wgY2xvc2luZzsKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgIE5TVUlu
dGVnZXIgZGV2aWNlT3JpZW50YXRpb247CkBAIC0yNTgsNyArMjU4LDcgQEAgQGludGVyZmFjZSBX
ZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIGJlY29taW5nRmlyc3RSZXNwb25k
ZXJGcm9tT3V0c2lkZTsKICAgICBCT09MIHVzZXNQYWdlQ2FjaGU7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TQ29sb3IgKmJhY2tncm91bmRD
b2xvcjsKICNlbHNlCiAgICAgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3I7CkBAIC0yNzYsNyAr
Mjc2LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09M
IGRhc2hib2FyZEJlaGF2aW9yQWxsb3dXaGVlbFNjcm9sbGluZzsKICNlbmRpZgogICAgIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEJPT0wgaXNTdG9w
cGluZzsKIAogICAgIGlkIFVJS2l0RGVsZWdhdGU7CkBAIC0zMDUsNyArMzA1LDcgQEAgQGludGVy
ZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICNlbmRpZgogCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdlYktpdCBoYXMgYm90
aCBhIGdsb2JhbCBwbHVnLWluIGRhdGFiYXNlIGFuZCBhIHNlcGFyYXRlLCBwZXIgV2ViVmlldyBw
bHVnLWluIGRhdGFiYXNlLiBEYXNoYm9hcmQgdXNlcyB0aGUgcGVyIFdlYlZpZXcgZGF0YWJhc2Uu
CiAgICAgV2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlOwogI2VuZGlmCkBAIC0zMjMs
NyArMzIzLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBC
T09MIHBvc3RzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbnM7CiAgICAgUmVmUHRy
PExheWVyRmx1c2hDb250cm9sbGVyPiBsYXllckZsdXNoQ29udHJvbGxlcjsKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNQYXN0ZWJvYXJkICpp
bnNlcnRpb25QYXN0ZWJvYXJkOwogICAgIFJldGFpblB0cjxOU0ltYWdlPiBfbWFpbkZyYW1lSWNv
bjsKICNlbmRpZgpAQCAtMzQ0LDcgKzM0NCw3IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUg
OiBOU09iamVjdCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkluZGljYXRl
TGF5ZXIgKmluZGljYXRlTGF5ZXI7CiAjZW5kaWYKICNlbmRpZgpAQCAtMzYxLDcgKzM2MSw3IEBA
IEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgaW50IHZhbGlkYXRp
b25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uOwogCiAgICAgZmxvYXQgY3VzdG9tRGV2aWNlU2Nh
bGVGYWN0b3I7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQqIF9maXhlZFBvc2l0aW9uQ29udGVudDsKICNlbmRp
ZgogCkBAIC0zNzMsNyArMzczLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2Jq
ZWN0IHsKIAogICAgIEJPT0wgX2RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb247CiAKLSNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQyLDExICs0MiwxMSBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNlbmRpZgogCi0jaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKICNlbmRpZgogCkBAIC0x
MjQsNyArMTI0LDcgQEAgLSAodm9pZClfd2luZG93VmlzaWJpbGl0eUNoYW5nZWQ6KE5TTm90aQog
CiArICh2b2lkKWluaXRpYWxpemUKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgLSAoaWQpaW5pdCAK
ICAgICBkYXNoYm9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlzU3Rv
cHBpbmcgPSBOTzsKICAgICBfZ2VvbG9jYXRpb25Qcm92aWRlciA9IFtXZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIHNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXJdOwogI2VuZGlmCkBAIC0xNzYsNyAr
MTc2LDcgQEAgLSAodm9pZClkZWFsbG9jCiB7ICAgIAogICAgIEFTU0VSVChhcHBsaWNhdGlvbklz
VGVybWluYXRpbmcgfHwgIXBhZ2UpOwogICAgIEFTU0VSVChhcHBsaWNhdGlvbklzVGVybWluYXRp
bmcgfHwgIXByZWZlcmVuY2VzKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEFTU0VSVCghaW5zZXJ0aW9uUGFzdGVib2FyZCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoVklERU8pCkBAIC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClkZWFsbG9jCiAjZW5k
aWYKIAogICAgIFthcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgcmVsZWFzZV07Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbYmFja2dyb3VuZENv
bG9yIHJlbGVhc2VdOwogI2Vsc2UKICAgICBDR0NvbG9yUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3Ip
OwpAQCAtMjAyLDEyICsyMDIsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW21lZGlhU3R5bGUg
cmVsZWFzZV07CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbaW5kaWNhdGVMYXllciByZWxlYXNl
XTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbVUlLaXREZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBbZm9y
bURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIFtfY2FyZXRDaGFuZ2VMaXN0ZW5lcnMg
cmVsZWFzZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IERpY3Rpb25hcnlQ
b3B1cEluZm87CiB9CiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBEcmFnSXRlbTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgc3Ry
dWN0IERyYWdJdGVtOwogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjsKIGNsYXNz
IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQcm9k
dWNlci5oPgogI2VuZGlmCkBAIC0xNTMsNyArMTUzLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChX
ZWJWaWV3SW50ZXJuYWwpCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJTYWZlRm9yd2FyZGVyKQog
LSAoaWQpYXN5bmNGb3J3YXJkZXI7CiBAZW5kCkBAIC0xNzAsMjMgKzE3MCwyMyBAQCBAaW50ZXJm
YWNlIFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAtIChXVEY6OlN0cmluZylfdXNlckFn
ZW50U3RyaW5nOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAoTlNNZW51ICopX21lbnVGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKill
bGVtZW50IGRlZmF1bHRJdGVtczooTlNBcnJheSAqKWl0ZW1zOwogI2VuZGlmCiAtIChpZClfVUlE
ZWxlZ2F0ZUZvcndhcmRlcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIC0gKGlkKV9VSURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcjsKICNlbmRp
ZgogLSAoaWQpX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcjsKIC0gKGlkKV9wb2xpY3lEZWxlZ2F0
ZUZvcndhcmRlcjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IC0gKGlkKV9mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKIC0gKGlkKV9yZXNvdXJjZUxvYWRE
ZWxlZ2F0ZUZvcndhcmRlcjsKIC0gKGlkKV9VSUtpdERlbGVnYXRlRm9yd2FyZGVyOwogI2VuZGlm
CiAtICh2b2lkKV9wdXNoUGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzOwogLSAodm9pZClfcG9w
UGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lOwogI2VuZGlmCiArIChCT09MKV92aWV3Q2xhc3M6KENsYXNz
ICopdkNsYXNzIGFuZFJlcHJlc2VudGF0aW9uQ2xhc3M6KENsYXNzICopckNsYXNzIGZvck1JTUVU
eXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGFsbG93aW5nUGx1Z2luczooQk9PTClhbGxvd1BsdWdp
bnM7CkBAIC0yMDIsNyArMjAyLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3T3RoZXJJ
bnRlcm5hbAogLSAoQk9PTClfaXNQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXM7CiAtICh2b2lk
KV9tb3VzZURpZE1vdmVPdmVyRWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeSBtb2Rp
ZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3M7CiAtIChXZWJWaWV3ICopX29wZW5O
ZXdXaW5kb3dXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfd3JpdGVJbWFnZUZv
ckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgd2l0aFBhc3RlYm9hcmRUeXBlczooTlNB
cnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKIC0g
KHZvaWQpX3dyaXRlTGlua0VsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgd2l0aFBhc3Rl
Ym9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICop
cGFzdGVib2FyZDsKIC0gKHZvaWQpX29wZW5GcmFtZUluTmV3V2luZG93RnJvbU1lbnU6KE5TTWVu
dUl0ZW0gKilzZW5kZXI7CkBAIC0yMTEsNyArMjExLDcgQEAgQGludGVyZmFjZSBXZWJWaWV3IChX
ZWJWaWV3T3RoZXJJbnRlcm5hbAogI2VuZGlmCiAtICh2b2lkKV9wcm9ncmVzc0NvbXBsZXRlZDoo
V2ViRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogLSAodm9pZClfZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogLSAo
dm9pZClfZGlkRmFpbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciBmb3JGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpX2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvciBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKQEAgLTIyNCw3ICsy
MjQsNyBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAtICh2b2lk
KXNldEN1cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxpZ2h0ICopbm9kZUhpZ2hsaWdo
dDsKIC0gKFdlYk5vZGVIaWdobGlnaHQgKiljdXJyZW50Tm9kZUhpZ2hsaWdodDsKIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWFkZFBsdWdp
bkluc3RhbmNlVmlldzooTlNWaWV3ICopdmlldzsKIC0gKHZvaWQpcmVtb3ZlUGx1Z2luSW5zdGFu
Y2VWaWV3OihOU1ZpZXcgKil2aWV3OwogLSAodm9pZClyZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXdz
Rm9yOihXZWJGcmFtZSopd2ViRnJhbWU7CkBAIC0yNDcsMTEgKzI0NywxMSBAQCBAaW50ZXJmYWNl
IFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAKICsgKEJPT0wpX2NhbkhhbmRsZVJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZm9yTWFpbkZyYW1lOihCT09MKWZvck1haW5GcmFt
ZTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2
b2lkKV9zZXRJbnNlcnRpb25QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KEJPT0wpX2lzU3RvcHBpbmc7CiAtIChCT09MKV9pc0Nsb3Npbmc7CiAKQEAgLTI4MSw3ICsyODEs
NyBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdPdGhlckludGVybmFsCiAjZW5kaWYKICNl
bmRpZgogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBk
ZWZpbmVkKF9fY3BsdXNwbHVzKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAtIChCT09MKV9zdXBwb3J0
c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OihXZWJDb3JlOjpFbGVtZW50KillbGVtZW50IHdpdGhLZXli
b2FyZDooQk9PTCl3aXRoS2V5Ym9hcmQ7CiAtICh2b2lkKV9lbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50OihXZWJDb3JlOjpFbGVtZW50KillbGVtZW50OwogLSAodm9pZClfZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50OihXZWJDb3JlOjpFbGVtZW50KillbGVtZW50OwpAQCAtMzA1LDcgKzMwNSw3IEBA
IEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld090aGVySW50ZXJuYWwKIC0gKHZvaWQpX3NldFBy
ZXNzdXJlRXZlbnQ6KE5TRXZlbnQgKilldmVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykgJiYgZGVmaW5lZChfX2NwbHVz
cGx1cykKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIC0gKFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIgKikgX2RldmljZVBpY2tlcjsKIC0gKHZvaWQpX2FkZFBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50Oih1aW50NjRfdCljbGllbnRJZDsKIC0gKHZvaWQpX3JlbW92ZVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50Oih1aW50NjRfdCljb250ZXh0SWQ7CkBAIC0zMjQsNyArMzI0LDcg
QEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3T3RoZXJJbnRlcm5hbAogLSAodm9pZClzaG93
Rm9ybVZhbGlkYXRpb25NZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ugd2l0aEFuY2hvclJlY3Q6
KE5TUmVjdClhbmNob3JSZWN0OwogLSAodm9pZCloaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQp
X3NldE1haW5GcmFtZUljb246KE5TSW1hZ2UgKilpY29uOwogI2VuZGlmCiBAZW5kCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MzcyNjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWVGaWxl
RHJhZ2dpbmdTb3VyY2UuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKGdldFNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWRDYWxsYmFjayk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
Y2FsbFVJU2NyaXB0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklP
Uy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVBcHBN
YWluLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dz
ZXJWaWV3Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9s
bGVySU9TLm06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250cm9s
bGVyLm06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChkZXN0
cm95V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVu
Y2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldERlZmF1bHRzVG9Db25zaXN0ZW50
VmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKToK
KyAgICAgICAgKHJlbGVhc2VHbG9iYWxDb250cm9sbGVycyk6CisgICAgICAgIChhZGRUZXN0UGx1
Z2luc1RvUGx1Z2luU2VhcmNoUGF0aCk6CisgICAgICAgIChwcmVwYXJlQ29uc2lzdGVudFRlc3Rp
bmdFbnZpcm9ubWVudCk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZU1haW4pOgorICAgICAgICAoZHVtcEZyYW1lQXNQREYpOgorICAgICAgICAoZHVt
cEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MpOgorICAgICAgICAodXBkYXRlRGlzcGxheSk6
CisgICAgICAgIChkdW1wKToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKGRpc3BsYXlXZWJW
aWV3KToKKyAgICAgICAgKGRpc3BsYXlBbmRUcmFja1JlcGFpbnRzV2ViVmlldyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW06CisgICAgICAgICgt
W0R1bXBSZW5kZXJUcmVlV2luZG93IGNsb3NlXSk6CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVl
V2luZG93IHdlYlZpZXddKToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVXaW5kb3cgd2ViVmll
d1N0YXJ0ZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAg
KCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6Cisg
ICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtF
dmVudFNlbmRpbmdDb250cm9sbGVyIGN1cnJlbnRFdmVudFRpbWVdKToKKyAgICAgICAgKC1bRXZl
bnRTZW5kaW5nQ29udHJvbGxlciBjbGVhcktpbGxSaW5nXSk6CisgICAgICAgIChtb2RpZmllckZs
YWdzKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZURvd246d2l0aE1v
ZGlmaWVyczpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBzY2FsZVBhZ2VC
eTphdFg6YW5kWTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVw
OndpdGhNb2RpZmllcnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91
c2VNb3ZlVG9YOlk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VT
Y3JvbGxCeVg6YW5kWTpjb250aW51b3VzbHk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIga2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW0Zy
YW1lTG9hZERlbGVnYXRlIGluaXRdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgZGVh
bGxvY10pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBwcm9jZXNzV29yazpdKToKKyAg
ICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENv
bW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgZGlkQ2xl
YXJXaW5kb3dPYmplY3RJblN0YW5kYXJkV29ybGRGb3JGcmFtZTpdKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIgdGltZXJGaXJlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TWFpbkZyYW1lSXNG
aXJzdFJlc3BvbmRlcik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VEYXNoYm9hcmRDb21w
YXRpYmlsaXR5TW9kZSk6CisgICAgICAgIChUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6YWJvcnRNb2RhbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0
aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxl
RmFjdG9yKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJv
YXJkIGNvbnN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtV
SURlbGVnYXRlIG1vZGFsV2luZG93V2lsbENsb3NlOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXdSdW5Nb2RhbDpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OnN1cHBv
cnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6d2l0aEtleWJvYXJkOl0pOgorICAgICAgICAoLVtVSURl
bGVnYXRlIGRlYWxsb2NdKToKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJp
YXRlLW9iamMtY2xhc3MtbmFtZXM6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hh
cmVkL3NwaS9VSUtpdFRlc3RTUEkuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9kYXJ3aW4vV2Vha0xpbmtpbmcuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9NYXJrZWRUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdDo6U2V0VXApOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTm9IaXN0b3J5SXRlbVNj
cm9sbFRvRnJhZ21lbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FuaW1hdGVkUmVzaXplLm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVn
YXRlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVn
SW4ubW06CisgICAgICAgICgtW0J1bmRsZVJhbmdlSGFuZGxlUGx1Z0luIHdlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6
XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db2RpbmcubW06
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvcHlIVE1MLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29weVVSTC5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2Fy
ZERhdGFFbmFibGVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvcHlpbmcubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jh
c2gubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FZGl0b3JT
dGF0ZVRlc3RzLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RXhpdEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0ZpeGVkTGF5b3V0U2l6ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR2VvbG9jYXRpb24ubW06CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFz
aC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3Rv
cmFnZUNsZWFyLm1tOgorICAgICAgICAoZGVmYXVsdFdlYnNpdGVDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05TRmlsZU1hbmFn
ZXJFeHRyYXMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9O
b3dQbGF5aW5nLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Tm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlUlRGRC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1
aWNrTG9vay5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbToKKyAgICAgICAgKHJ1blRlc3RXaXRoV2lkdGgpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVuZGVyZWRJbWFnZVdp
dGhPcHRpb25zUGx1Z0luLm1tOgorICAgICAgICAoLVtSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQ
bHVnSW4gcmVuZGVySW1hZ2VXaXRoV2lkdGg6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaHJpbmtUb0ZpdC5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJv
bGxlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Zpc2li
bGVDb250ZW50UmVjdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAocGxhdGZvcm1Db3B5UmljaFRleHRX
aXRoTXVsdGlwbGVBdHRhY2htZW50cyk6CisgICAgICAgIChwbGF0Zm9ybUNvcHlSaWNoVGV4dFdp
dGhJbWFnZSk6CisgICAgICAgIChwbGF0Zm9ybUNvcHlQTkcpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld1Rh
cmdldEZvckFjdGlvbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tQREZWaWV3U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2subW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3Rp
dmF0ZWRFbGVtZW50SW5mby5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5wdXRE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9p
b3MvQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9BY2Nlc3NpbmdQYXN0
ZWRJbWFnZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY2Nlc3NpYmls
aXR5VGVzdHNJT1MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9u
U2hlZXRUZXN0cy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5k
RHJvcFRlc3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0ZvY3Vz
UHJlc2VydmF0aW9uVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1JlbmRlcmluZ1Byb2dyZXNzVGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvU2Nyb2xsVmlld0luc2V0VGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvU2V0VGltZW91dEZ1bmN0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL1N5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvVGVzdElucHV0RGVsZWdhdGUubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvVGV4dEF1dG9zaXppbmdCb29zdC5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9VSVBhc3RlYm9hcmRUZXN0cy5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdUZXN0cy5tbToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvbmZpZy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2lt
dWxhdG9ySU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdD
b250cm9sbGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0
aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0
UnVubmVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1
YlVSTCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp3ZWJQcm9jZXNzTmFtZSk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpuZXR3b3JrUHJvY2Vzc05hbWUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6aW52b2tlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjppbml0aWFs
aXplV2ViVmlld0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlt
YWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNsZWFuVXBLZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpr
ZXlFeGlzdHNJbktleWNoYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RSdW5uZXJXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tOgorCiAyMDE4LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1BTT05dIENhcCBudW1iZXIgb2YgU3VzcGVuZGVkUGFn
ZVByb3h5IG9iamVjdHMgYW5kIGFsbG93IGEgV2ViUGFnZVByb3h5IHRvIGhhdmUgbW9yZSB0aGFu
IG9uZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgSlNPYmplY3RSZWY+IG1fbm90aWZp
Y2F0aW9uTGlzdGVuZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFJldGFpblB0cjxOb3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXI7CiAjZW5kaWYKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogCi0jaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2RlZmluZSBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAxCiAjZWxzZQog
I2RlZmluZSBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAwCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBpbmRleE9mQ2hp
bGRDYWxsYmFjayhKCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIChkb3Vi
bGUpdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4T2ZDaGlsZChjaGlsZEVsZW1lbnQpKTsK
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBoZWFkZXJFbGVtZW50QXRJbmRleENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IHNlbnRlbmNlQXRPZmZzZXRDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29u
dGV4dCwgc2VudGVuY2VBdE9mZnNldC5nZXQoKSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKElPUykK
KyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldElzU2Vh
cmNoRmllbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CkBAIC0xNTI4LDkgKzE1MjgsOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB0ZXh0TWFya2VyUmFuZ2VN
YXRjaGVzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiBzdGF0aWMgSlNWYWx1ZVJlZiBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGF1dG8gdmFsdWVTdHJpbmcgPSB0b0FY
RWxlbWVudCh0aGlzT2JqZWN0KS0+c3VwcG9ydGVkQWN0aW9ucygpOwpAQCAtMTU1NCw3ICsxNTU0
LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbWF0aFByZXNjcmlwdHNEZXNjcmlwdAogLy8gSW1wbGVt
ZW50YXRpb24KIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4K
LSNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpIHsgcmV0dXJuIDA7IH0KIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBv
c2l0aW9uKGludCwgaW50KSB7IHJldHVybiAwOyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0IHsgfQpA
QCAtMTU2NSw3ICsxNTY1LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
VUlFbAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4geyBudWxscHRy
IH07IH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2V0VmFsdWUoSlNTdHJpbmdSZWYpIHsgfQpAQCAtMTc1OSw3ICsxNzU5LDcg
QEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJSYW5nZU1hdGNoZXNUZXh0TmVhck1hcmtlcnMoSlNTdHJpbmdSZWYsIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQogewogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTg0NSw3ICsxODQ1LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKUwogICAgICAgICB7ICJ2ZXJ0aWNhbFNjcm9sbGJhciIsIHZlcnRpY2Fs
U2Nyb2xsYmFyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic3RhcnRUZXh0TWFya2Vy
Iiwgc3RhcnRUZXh0TWFya2VyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5kVGV4
dE1hcmtlciIsIGVuZFRleHRNYXJrZXJDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB7ICJpZGVudGlmaWVyIiwg
Z2V0SWRlbnRpZmllckNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRyYWl0cyIsIGdl
dFRyYWl0c0NhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVsZW1lbnRUZXh0UG9zaXRp
b24iLCBnZXRFbGVtZW50VGV4dFBvc2l0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTE4NTQs
OCArMTg1NCw4IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMKICAg
ICAgICAgeyAiaGFzQ29udGFpbmVkQnlGaWVsZHNldFRyYWl0IiwgaGFzQ29udGFpbmVkQnlGaWVs
ZHNldFRyYWl0Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNTZWFyY2hGaWVsZCIs
IGdldElzU2VhcmNoRmllbGRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1RleHRB
cmVhIiwgZ2V0SXNUZXh0QXJlYUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0jZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIHsgInN1cHBvcnRlZEFjdGlvbnMiLCBzdXBwb3J0ZWRBY3Rpb25zQ2Fs
bGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24i
LCBtYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgIm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9u
Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ2xhc3NSZWYgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAid29yZEF0T2Zmc2V0Iiwgd29y
ZEF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibGluZUF0T2Zmc2V0IiwgbGlu
ZUF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2VudGVuY2VBdE9mZnNldCIs
IHNlbnRlbmNlQXRPZmZzZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2VsaWYgUExBVEZPUk0oSU9TKQor
I2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgeyAibGlua2VkRWxlbWVudCIsIGxp
bmtlZEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJoZWFkZXJFbGVtZW50QXRJ
bmRleCIsIGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
ZWxlbWVudHNGb3JSYW5nZSIsIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIHVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiwgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwg
SlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJs
ZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpT
VmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVP
bmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1Jl
ZiBhbWJpZ3VpdHlSZXNvbHV0aW9uLCBKU1ZhbHVlUmVmIHNlYXJjaFN0cmluZ3MsIEpTU3RyaW5n
UmVmIHJlcGxhY2VtZW50U3RyaW5nLCBKU1N0cmluZ1JlZiBhY3Rpdml0eSk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBlbGVtZW50c0ZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiYgZWxlbWVudHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBz
dHJpbmdGb3JTZWxlY3Rpb24oKTsKICAgICB2b2lkIGluY3JlYXNlVGV4dFNlbGVjdGlvbigpOwpA
QCAtMjk3LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVt
b3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9uIG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQg
aW4gYSB0aW1lbHkgZmFzaGlvbi4KICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KCk7CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRyYWl0cygpOwogICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBpZGVudGlmaWVyKCk7CiAgICAgaW50IGVsZW1lbnRUZXh0UG9zaXRpb24oKTsK
QEAgLTMxMSw5ICszMTEsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VNYXRjaGVzVGV4dE5lYXJNYXJrZXJzKEpTU3RyaW5n
UmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7
CiAgICAgCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBSZXR1cm5zIGFuIG9yZGVy
ZWQgbGlzdCBvZiBzdXBwb3J0ZWQgYWN0aW9ucyBmb3IgYW4gZWxlbWVudC4KICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gc3VwcG9ydGVkQWN0aW9ucygpOwogICAgIApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1Nv
dXJjZS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgog
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDEyICs1NiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW5jbHVk
ZSA8d3RmL0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPENhcmJvbi9DYXJib24uaD4KICNlbmRpZgogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUZWxlcGhvbmVOdW1iZXJQ
YXJzaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCkBAIC0xODQ0LDcgKzE4NDQsNyBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBnZXRXZWJIaXN0b3J5SXRlbUNvdW50CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFNl
Y3VyZUV2ZW50SW5wdXRJc0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCBJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGZhbHNlKTsKQEAgLTIy
MTYsNyArMjIxNiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmMK
ICAgICAgICAgeyAic2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkIiwgc2V0U3BhdGlhbE5hdmln
YXRpb25FbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lv
bmFsRnJhbWVMb2FkcyIsIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCBzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICB7ICJzZXRUZWxlcGhvbmVOdW1i
ZXJQYXJzaW5nRW5hYmxlZCIsIHNldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGFnZVBhdXNlZCIsIHNldFBhZ2VQYXVzZWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogI2VuZGlmCkBAIC0yNDQ0LDcgKzI0NDQsNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlCiB2b2lkIFRlc3RSdW5uZXI6OmNhbGxVSVNjcmlw
dENhbGxiYWNrKHVuc2lnbmVkIGNhbGxiYWNrSUQsIEpTU3RyaW5nUmVmIHJlc3VsdCkKIHsKICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvdGVjdGVkUmVzdWx0KHJlc3VsdCk7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJ
RCwgcHJvdGVjdGVkUmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICBKU0NvbnRleHRSZWYgY29u
dGV4dCA9IHByb3RlY3RlZFRoaXMtPm1haW5GcmFtZUpTQ29udGV4dCgpOwogICAgICAgICBKU1Zh
bHVlUmVmIHJlc3VsdFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcHJvdGVjdGVk
UmVzdWx0LmdldCgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1ZGl0b3JF
bmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
Ym9vbCk7CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRp
b24sIEpTU3RyaW5nUmVmIHBvbGljeSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZChi
b29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRQYWdlUGF1c2VkKGJvb2wgcGF1c2VkKTsKICNlbmRp
ZgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cu
Y3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1
bXBTdXBwb3J0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKICNpZiBQ
TEFURk9STShXSU4pCiAjaW5jbHVkZSAiTUQ1LmgiCi0jZWxpZiBQTEFURk9STShJT1MpCisjZWxp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENv
cmVUeXBlcy5oPgogI2RlZmluZSBDT01NT05fRElHRVNUX0ZPUl9PUEVOU1NMCiAjaW5jbHVkZSA8
Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkR1
bXBSZW5kZXJUcmVlLmgiCiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9S
TShJT1MpCisjaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIKIApAQCAtODIsNCArODIsNCBA
QCBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VGV4CiAgICAgcmV0dXJuIG1f
dGV4dE1hcmtlclJhbmdlOwogfQogCi0jZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMg
JiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJCiAgICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdSZWZdOwog
fQogCi0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0oSU9TKQorI2lmIFNV
UFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIFRleHQg
bWFya2VycwogCkBAIC02NTYsNyArNjU2LDcgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSBBY2Nlc3NpYmlsaQogfQogCiAKLSNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAm
JiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI3ByYWdtYSBtYXJrIFVudXNlZAogCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUFw
cE1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZU1hYy5oIgogCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93
c2VyVmlldy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9z
L0R1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkNvcmVUaHJlYWQuaD4KQEAgLTE3Myw0ICsxNzMsNCBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRF
bmRab29taW5nOihVSVNjcm9sCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCShyZXZpc2lvbiAyMzcyNjApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlRleHRJbnB1dENvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzUxMDYyODc+IE9ubHkg
cGFydGlhbCBzdXBwb3J0IGZvciBUZXh0SW5wdXRDb250cm9sbGVyIGhhcyBiZWVuIGltcGxlbWVu
dGVkIG9uIGlPUyBzbyBmYXIuIFdlIG5lZWQgdG8gZmluaXNoIHRoZSBpbXBsZW1lbnRhdGlvbgog
Ly8gaGVyZSB0byBicmluZyBpdCB1cCB0byBwYXJpdHkgd2l0aCB0aGUgTWFjIHZlcnNpb24gKHNl
ZSBUZXh0SW5wdXRDb250cm9sbGVyTWFjLm0pLCBhbmQgdGhlbiByZWVuYWJsZSBza2lwcGVkIGlP
UyB0ZXN0cyB0aGF0IHVzZSBUZXh0SW5wdXRDb250cm9sbGVyLgpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlVJU2NyaXB0Q29udHJvbGxlci5oIgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlQnJvd3NlclZp
ZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5oIgpAQCAtMzg3LDQgKzM4Nyw0IEBAIEpT
T2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW8KIAogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FwcGxlU2NyaXB0Q29udHJvbGxlci5tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQXBwbGVTY3JpcHRDb250
cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiQXBwbGVTY3JpcHRDb250cm9sbGVyLmgiCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxXZWJLaXQvV2ViVmll
dy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+ICAgLy8gZm9yIGFlRGVzY0J5
RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLCB3aGljaCBpcyBwZW5kaW5nIEFQSSByZXZp
ZXcKQEAgLTEyOSw0ICsxMjksNCBAQCAtIChOU1N0cmluZyAqKWRvSmF2YVNjcmlwdDooTlNTdHJp
bmcgKilhCiAKIEBlbmQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBA
CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5oIgog
I2ltcG9ydCAiSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uaCIKICNpbXBvcnQgIlVJS2l0U1BJ
LmgiCkBAIC0xMjUsNyArMTI1LDcgQEAgZXh0ZXJuICJDIiB7CiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGlu
dGVyZmFjZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZAog
CkBAIC0xNjUsNyArMTY1LDcgQEAgQGludGVyZmFjZSBXZWJWaWV3ICgpCiAtIChCT09MKV9mbHVz
aENvbXBvc2l0aW5nQ2hhbmdlczsKIEBlbmQKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdJbnRlcm5hbEZv
clRlc3RpbmcpCiAtIChXZWJDb3JlOjpGcmFtZSopX21haW5Db3JlRnJhbWU7CiBAZW5kCkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RhdGljIFJlc291cmNlTG9hZERlbGVnYXRlICpyZXNvdXJjZUxvYQog
c3RhdGljIEhpc3RvcnlEZWxlZ2F0ZSAqaGlzdG9yeURlbGVnYXRlOwogUG9saWN5RGVsZWdhdGUg
KnBvbGljeURlbGVnYXRlID0gbnVsbHB0cjsKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVs
dFBvbGljeURlbGVnYXRlID0gbnVsbHB0cjsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxW
aWV3UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMg
c3RkOjpzZXQ8c3RkOjpzdHJpbmc+IGFsbG93ZWRIb3N0CiAKIHN0YXRpYyBXZWJIaXN0b3J5SXRl
bSAqcHJldlRlc3RCRkl0ZW07IC8vIGN1cnJlbnQgYi9mIGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUg
cHJldmlvdXMgdGVzdAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBjb25zdCBDR1JlY3QgbGF5b3V0VGVzdFZpZXdwb3J0UmVjdCA9IHsgezAsIDB9LCB7c3Rh
dGljX2Nhc3Q8Q0dGbG9hdD4oVGVzdFJ1bm5lcjo6dmlld1dpZHRoKSwgc3RhdGljX2Nhc3Q8Q0dG
bG9hdD4oVGVzdFJ1bm5lcjo6dmlld0hlaWdodCl9IH07CiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJW
aWV3ICpnV2ViQnJvd3NlclZpZXcgPSBuaWw7CiBEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXcg
KmdXZWJTY3JvbGxWaWV3ID0gbmlsOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIE5TU2V0ICph
bGxvd2VkRm9udEZhbWlseVNldCgpCiB7CiAgICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0
ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKQEAgLTU4NSwxMCArNTg1LDEwIEBAIHN0YXRpYyB2
b2lkIGFjdGl2YXRlRm9udHNJT1MoKQogICAgIGZvbnREYXRhKEZXRlRURik7CiAgICAgZm9udERh
dGEoRldGT1RGKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9y
dChVSVdlYkJyb3dzZXJWaWV3ICp3ZWJCcm93c2VyVmlldywgVUlXZWJTY3JvbGxWaWV3ICpzY3Jv
bGxWaWV3KQogewogICAgIC8vIFRoZXNlIHZhbHVlcyBtYXRjaCBNb2JpbGVTYWZhcmkncywgc2Vl
IC1bVGFiRG9jdW1lbnQgX2NyZWF0ZURvY3VtZW50Vmlld10uCkBAIC02MzgsNyArNjM4LDcgQEAg
c3RhdGljIHZvaWQgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZAogfQogI2VuZGlmCiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBE
UlRNb2NrU2Nyb2xsZXIgOiBOU1Njcm9sbGVyCiBAZW5kCiAKQEAgLTcwMSw3ICs3MDEsNyBAQCBz
dGF0aWMgdm9pZCByZWdpc3Rlck1vY2tTY3JvbGxiYXJzKCkKIAogV2ViVmlldyAqY3JlYXRlV2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgVGVz
dFJ1bm5lcjo6dmlld1dpZHRoLCBUZXN0UnVubmVyOjp2aWV3SGVpZ2h0KTsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZnJhbWVOYW1l
Om5pbCBncm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZWxzZQpAQCAt
NzI4LDcgKzcyOCw3IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cK
ICAgICBbV2ViVmlldyBfc2V0Rm9udFdoaXRlbGlzdDpmb250V2hpdGVsaXN0KCldOwogI2VuZGlm
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFt3
ZWJWaWV3IHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDpZRVNdOwogICAgIFt3ZWJW
aWV3IHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpOT107CiAgICAgW3dlYlZp
ZXcgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6Tk9dOwpAQCAtNzg2LDcgKzc4Niw3
IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBhZGp1c3RX
ZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2ViQnJvd3NlclZpZXcsIHNjcm9sbFZpZXcp
OwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIEZvciByZWFzb25zIHRoYXQgYXJlIG5vdCBlbnRpcmVseSBjbGVhciwgdGhlIGZv
bGxvd2luZyBwYWlyIG9mIGNhbGxzIG1ha2VzIFdlYlZpZXcgaGFuZGxlIGl0cwogICAgIC8vIGR5
bmFtaWMgc2Nyb2xsYmFycyBwcm9wZXJseS4gV2l0aG91dCBpdCwgZXZlcnkgZnJhbWUgd2lsbCBh
bHdheXMgaGF2ZSBzY3JvbGxiYXJzLgogICAgIE5TQml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0g
W3dlYlZpZXcgYml0bWFwSW1hZ2VSZXBGb3JDYWNoaW5nRGlzcGxheUluUmVjdDpbd2ViVmlldyBi
b3VuZHNdXTsKQEAgLTgxMiwxMyArODEyLDEzIEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cKIHN0YXRpYyB2b2lkIGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2NyZWVuV2lu
ZG93KFdlYlZpZXcgKndlYlZpZXcpCiB7CiAgICAgQVNTRVJUKHdlYlZpZXcgPT0gW21haW5GcmFt
ZSB3ZWJWaWV3XSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3dlYlZpZXcgd2luZG93XTsKICNlbmRpZgogICAg
IFt3ZWJWaWV3IGNsb3NlXTsKICAgICBtYWluRnJhbWUgPSBuaWw7CiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdvcmsgYXJvdW5kIHByb2Js
ZW0gd2hlcmUgcmVnaXN0ZXJpbmcgZHJhZyB0eXBlcyBsZWF2ZXMgYW4gb3V0c3RhbmRpbmcKICAg
ICAvLyAicGVyZm9ybSBzZWxlY3RvciIgb24gdGhlIHdpbmRvdywgd2hpY2ggcmV0YWlucyB0aGUg
d2luZG93LiBJdCdzIGEgYml0CiAgICAgLy8gaW5lbGVnYW50IGFuZCBwZXJoYXBzIGRhbmdlcm91
cyB0byBqdXN0IGJsb3cgdGhlbSBhbGwgYXdheSwgYnV0IGluIHByYWN0aWNlCkBAIC04OTUsMTgg
Kzg5NSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAg
W3ByZWZlcmVuY2VzIHNldEphdmFFbmFibGVkOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0SmF2
YVNjcmlwdEVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RWRpdGFibGVMaW5rQmVo
YXZpb3I6V2ViS2l0RWRpdGFibGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXldOwotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3ByZWZlcmVuY2VzIHNl
dFRhYnNUb0xpbmtzOk5PXTsKICNlbmRpZgogICAgIFtwcmVmZXJlbmNlcyBzZXRET01QYXN0ZUFs
bG93ZWQ6WUVTXTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFtwcmVmZXJlbmNlcyBzZXRTaG91bGRQcmludEJhY2tncm91bmRzOllFU107CiAjZW5k
aWYKICAgICBbcHJlZmVyZW5jZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRC
cm93c2VyXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0WFNTQXVkaXRvckVuYWJsZWQ6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldFBsdWdJbnNFbmFibGVkOllFU107Ci0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbcHJlZmVyZW5jZXMgc2V0VGV4dEFy
ZWFzQXJlUmVzaXphYmxlOllFU107CiAjZW5kaWYKIApAQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbcHJlZmVyZW5jZXMgc2V0
SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRT
dWJwaXhlbEFudGlhbGlhc2VkTGF5ZXJUZXh0RW5hYmxlZDpOT107CiAKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBFbmFibGUgdGhlIHRyYWNrZXIg
YmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdCBXZWJWaWV3IHdpbGwKICAgICAvLyBjYXVzZSBpbml0
aWFsaXphdGlvbiB0byB1c2UgdGhlIGNvcnJlY3QgZGF0YWJhc2UgcGF0aHMuCiAgICAgW3ByZWZl
cmVuY2VzIHNldFN0b3JhZ2VUcmFja2VyRW5hYmxlZDpZRVNdOwpAQCAtOTU2LDcgKzk1Niw3IEBA
IHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICNlbmRpZgogICAgIFtw
cmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAgW3ByZWZlcmVu
Y2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChbcHJlZmVyZW5j
ZXMgbW9ja1Njcm9sbGJhcnNFbmFibGVkXSk7CiAjZW5kaWYKIApAQCAtMTAxNyw3ICsxMDE3LDcg
QEAgc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aQogLy8gQ2FsbGVkIG9u
Y2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCiAKQEAgLTEw
MzksNyArMTAzOSw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUK
ICAgICAgICAgV2ViS2l0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja1ByZWZlcmVuY2VLZXk6IEBZ
RVMsCiAgICAgICAgIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5l
QXR0cmlidXRlS2V5OiBATk8sCiAgICAgICAgIEAiVXNlV2ViS2l0V2ViSW5zcGVjdG9yIjogQFlF
UywKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBAIk5TUHJlZmVycmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLAogICAgICAgICBA
Ik5TVXNlckRpY3Rpb25hcnlSZXBsYWNlbWVudEl0ZW1zIjogQFtdLAogICAgICAgICBAIk5TVGVz
dENvcnJlY3Rpb25EaWN0aW9uYXJ5IjogQHsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAgICAgICAgfSwKICNlbmRpZgogICAg
ICAgICBAIkFwcGxlU2Nyb2xsQmFyVmFyaWFudCI6IEAiRG91YmxlTWF4IiwKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TU2Nyb2xsQW5p
bWF0aW9uRW5hYmxlZCI6IEBOTywKICNlbmRpZgogICAgICAgICBAIk5TT3ZlcmxheVNjcm9sbGVy
c0VuYWJsZWQiOiBATk8sCkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0
ZUdsb2JhbENvbnRyb2xsZXJzKCkKICAgICBwb2xpY3lEZWxlZ2F0ZSA9IFtbUG9saWN5RGVsZWdh
dGUgYWxsb2NdIGluaXRdOwogICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IFtbSGlzdG9yeURlbGVnYXRl
IGFsbG9jXSBpbml0XTsKICAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBbW0RlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IFtbU2Nyb2xsVmll
d1Jlc2l6ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CiAjZW5kaWYKIH0KQEAgLTExMDUsNyArMTEw
NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VHbG9iYWxDb250cm9sbGVycygpCiAgICAgcmVsZWFz
ZUFuZFplcm8oJnJlc291cmNlTG9hZERlbGVnYXRlKTsKICAgICByZWxlYXNlQW5kWmVybygmdWlE
ZWxlZ2F0ZSk7CiAgICAgcmVsZWFzZUFuZFplcm8oJnBvbGljeURlbGVnYXRlKTsKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZWxlYXNlQW5kWmVybygm
c2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSk7CiAjZW5kaWYKIH0KQEAgLTExNDUsNyArMTE0NSw3
IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVHbG9iYWxzRnJvbUNvbW1hbmQKIAogc3RhdGljIHZv
aWQgYWRkVGVzdFBsdWdpbnNUb1BsdWdpblNlYXJjaFBhdGgoY29uc3QgY2hhciogZXhlY3V0YWJs
ZVBhdGgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBOU1N0cmluZyAqcHdkID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpleGVj
dXRhYmxlUGF0aF0gc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKICAgICBbV2Vi
UGx1Z2luRGF0YWJhc2Ugc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOltOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpwd2RdXTsKICAgICBbW1dlYlBsdWdpbkRhdGFiYXNlIHNoYXJlZERhdGFiYXNl
XSByZWZyZXNoXTsKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3RpbmdT
ZXJ2ZXJMb29wKCkKIAogc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0aW5nRW52aXJv
bm1lbnQoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcG9zZUFzQ2xhc3MoIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCIsICJOU1Bhc3RlYm9h
cmQiKTsKICAgICBwb3NlQXNDbGFzcygiRHVtcFJlbmRlclRyZWVFdmVudCIsICJOU0V2ZW50Iik7
CiAjZWxzZQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3Rl
bnRUZXN0aW5nRW52aQogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVy
VG9OZXdUZXN0aW5nU2Vzc2lvbl07CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGFkanVzdEZvbnRzKCk7CiAgICAgcmVnaXN0ZXJNb2NrU2Nyb2xs
YmFycygpOwogCkBAIC0xMjU2LDcgKzEyNTYsNyBAQCB2b2lkIHdyaXRlQ3Jhc2hlZE1lc3NhZ2VP
bkZhdGFsRXJyb3IoaW50CiAKIHZvaWQgZHVtcFJlbmRlclRyZWUoaW50IGFyZ2MsIGNvbnN0IGNo
YXIgKmFyZ3ZbXSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CiAgICAgW1VJQXBwbGlj
YXRpb24gc2hhcmVkQXBwbGljYXRpb25dLmlkbGVUaW1lckRpc2FibGVkID0gWUVTOwogICAgIFtb
VUlTY3JlZW4gbWFpblNjcmVlbl0gX3NldFNjYWxlOjIuMF07CkBAIC0xMzA3LDcgKzEzMDcsNyBA
QCB2b2lkIGR1bXBSZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFyCiAKICAgICByZWxlYXNl
R2xvYmFsQ29udHJvbGxlcnMoKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQ
YXN0ZWJvYXJkc107CiAjZW5kaWYKIApAQCAtMTMxNywxMiArMTMxNywxMiBAQCB2b2lkIGR1bXBS
ZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFyCiAgICAgICAgIGRpc2FsbG93ZWRVUkxzID0g
MDsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB0ZWFyRG93bklPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CiAjZW5kaWYKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGludCBf
YXJnYzsKIHN0YXRpYyBjb25zdCBjaGFyICoqX2FyZ3Y7CiAKQEAgLTEzOTYsMTQgKzEzOTYsMTQg
QEAgaW50IER1bXBSZW5kZXJUcmVlTWFpbihpbnQgYXJnYywgY29uc3QgYwogICAgIFdURjo6c2V0
UHJvY2Vzc1ByaXZpbGVnZXMoYWxsUHJpdmlsZWdlcygpKTsKICAgICBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnBlcm1pdFByb2Nlc3NUb1VzZUNvb2tpZUFQSSh0cnVlKTsKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIF9VSUFwcGxpY2F0
aW9uTG9hZFdlYktpdCgpOwogI2VuZGlmCiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAg
ICAgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCk7IC8vIE11c3QgYmUg
Y2FsbGVkIGJlZm9yZSBOU0FwcGxpY2F0aW9uIGluaXRpYWxpemF0aW9uLgogCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW0R1bXBSZW5kZXJU
cmVlQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOyAvLyBGb3JjZSBBcHBLaXQgdG8gaW5p
dCBpdHNlbGYKIAogICAgICAgICBkdW1wUmVuZGVyVHJlZShhcmdjLCBhcmd2KTsKQEAgLTE1MjYs
NyArMTUyNiw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmEKIAog
c3RhdGljIE5TRGF0YSAqZHVtcEZyYW1lQXNQREYoV2ViRnJhbWUgKmZyYW1lKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTU5NCw3ICsxNTk0LDcgQEAgc3RhdGljIHZvaWQg
ZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZQogICAgIHByaW50ZigiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwogfQogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGNoYW5nZVdpbmRv
d1NjYWxlSWZOZWVkZWQoY29uc3QgY2hhciogdGVzdFBhdGhPclVSKQogewogICAgIFdURjo6U3Ry
aW5nIGxvY2FsUGF0aE9yVXJsID0gU3RyaW5nKHRlc3RQYXRoT3JVUik7CkBAIC0xNjQxLDcgKzE2
NDEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqbWV0aG9kTmFtZVN0cmluZ0ZvckZhCiBzdGF0aWMg
dm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxsV2luZG93cygpCiB7CiAgICAgZm9yIChOU1dp
bmRvdyAqd2luZG93IGluIFtEdW1wUmVuZGVyVHJlZVdpbmRvdyBvcGVuV2luZG93c10pIHsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW1tbd2luZG93IGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10gb2JqZWN0QXRJ
bmRleDowXTsKICNlbHNlCiAgICAgICAgIEFTU0VSVChbW3dpbmRvdyBjb250ZW50Vmlld10gaXNL
aW5kT2ZDbGFzczpbV2ViVmlldyBjbGFzc11dKTsKQEAgLTE2NzYsNyArMTY3Niw3IEBAIGJvb2wg
c2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKIHN0YXRpYyB2b2lkIHVwZGF0ZURpc3BsYXko
KQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtnV2ViQnJvd3NlclZp
ZXcgbGF5b3V0SWZOZWVkZWRdOyAvLyBSZS1lbmFibGVzIHRpbGUgcGFpbnRpbmcsIHdoaWNoIHdh
cyBkaXNhYmxlZCB3aGVuIGNvbW1pdHRpbmcgdGhlIGZyYW1lIGxvYWQuCiAgICAgW2dEcnRXaW5k
b3cgbGF5b3V0VGlsZXNOb3ddOwogICAgIFt3ZWJWaWV3IF9mbHVzaENvbXBvc2l0aW5nQ2hhbmdl
c107CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVEaXNwbGF5KCkKIAog
dm9pZCBkdW1wKCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKIApAQCAtMTc4OSw3ICsxNzg5LDcgQEAg
c3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKAogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgYm9vbCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShjb25zdCBjaGFyKiBwYXRoT3JVUkwp
CiB7CiAgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJ2aWV3cG9ydC8iKSAmJiAhc3Ryc3Ry
KHBhdGhPclVSTCwgInZpc3VhbC12aWV3cG9ydC8iKTsKQEAgLTE4MTUsNyArMTgxNSw3IEBAIHN0
YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIHsKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3
cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBfc2V0
QWxsb3dzTWVzc2FnaW5nOllFU107CiAjZW5kaWYKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbd2ViVmlldyBtYWtlVGV4
dFN0YW5kYXJkU2l6ZTpuaWxdOwogICAgIFt3ZWJWaWV3IHJlc2V0UGFnZVpvb206bmlsXTsKICAg
ICBbd2ViVmlldyBfc2NhbGVXZWJWaWV3OjEuMCBhdE9yaWdpbjpOU1plcm9Qb2ludF07Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBf
c2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yOjBdOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgc2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOllFU107CkBAIC0xODMzLDEzICsxODMzLDEzIEBA
IHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbcG9saWN5RGVs
ZWdhdGUgc2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTowXTsKICAgICBbdWlEZWxlZ2F0ZSByZXNl
dFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzpvcHRpb25zXTsKICAgICBbZnJhbWVMb2Fk
RGVsZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZV07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbd2ViVmlldyBfc2V0RGFzaGJvYXJkQmVoYXZp
b3I6V2ViRGFzaGJvYXJkQmVoYXZpb3JVc2VCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlIHRvOk5P
XTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IF9jbGVhck1haW5GcmFtZU5hbWVdOwogICAgIFtbd2Vi
VmlldyB1bmRvTWFuYWdlcl0gcmVtb3ZlQWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92
ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwOlt3ZWJWaWV3IGdyb3VwTmFtZV1dOwotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1t3ZWJWaWV3IHdpbmRv
d10gc2V0QXV0b2Rpc3BsYXk6Tk9dOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgc2V0VHJhY2tzUmVw
YWludHM6Tk9dOwpAQCAtMTg2NCwxMiArMTg2NCwxMiBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgICAgIGdUZXN0UnVubmVyLT5yZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKCk7CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5D
b3JlRnJhbWVdKQogICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFyV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKCpmcmFtZSk7CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3dlYlZpZXcgc2V0Q29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkOllFU107CiAgICAgW3dlYlZpZXcgc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRp
b25FbmFibGVkOk5PXTsKICAgICBbd2ViVmlldyBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZDpOT107CkBAIC0xODg1LDcgKzE4ODUsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdU
b0NvbnNpc3RlbnRTdGF0CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHN0
b3BUaW1lcl07CiAgICAgW1tNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSByZXNl
dF07CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIENsZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgZ2VuZXJhbCBwYXN0ZWJvYXJkCiAgICAgW1tO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6TlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogI2VuZGlmCkBAIC0x
OTAyLDcgKzE5MDIsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0
CiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAv
LyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vOTkwOTA3Mz4gV2ViS2l0J3MgbWV0aG9kIG9m
IGNhbGxpbmcgZGVsZWdhdGVzIG9uCiAvLyB0aGUgbWFpbiB0aHJlYWQgaXMgbm90IHRocmVhZCBz
YWZlLiBJZiB0aGUgd2ViIHRocmVhZCBpcyBhdHRlbXB0aW5nIHRvIGNhbGwKIC8vIG91dCB0byBh
IGRlbGVnYXRlIG1ldGhvZCBvbiB0aGUgbWFpbiB0aHJlYWQsIHdlIHdhbnQgdG8gc3BpbiB0aGUg
bWFpbiB0aHJlYWQKQEAgLTE5ODQsNyArMTk4NCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29u
c3Qgc3RyaW5nJiBpbnB1dEwKIAogICAgIGNvbnN0IGNoYXIqIHRlc3RVUkwoW1t1cmwgYWJzb2x1
dGVTdHJpbmddIFVURjhTdHJpbmddKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgY2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCh0ZXN0VVJMKTsK
ICNlbmRpZgogCkBAIC0xOTkzLDcgKzE5OTMsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFu
ZC50aW1lb3V0KTsKICAgICBnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
KGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyKTsKICAgICB0b3BMb2FkaW5nRnJhbWUgPSBuaWw7Ci0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoIWRyYWdnaW5nSW5m
byk7IC8vIHRoZSBwcmV2aW91cyB0ZXN0IHNob3VsZCBoYXZlIGNhbGxlZCBldmVudFNlbmRlci5t
b3VzZVVwIHRvIGRyb3AhCiAgICAgcmVsZWFzZUFuZFplcm8oJmRyYWdnaW5nSW5mbyk7CiAjZW5k
aWYKQEAgLTIwMjEsNyArMjAyMSw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5n
JiBpbnB1dEwKICAgICAgICAgfQogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRo
T3JVUkwuY19zdHIoKSkpCiAgICAgICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3
cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICNlbmRpZgpAQCAtMjA1Myw3
ICsyMDUzLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAg
ICAgICB9CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgWyhEdW1wUmVuZGVyVHJlZSAqKVVJQXBwIF93YWl0Rm9yV2ViVGhyZWFkXTsKICAg
ICBXZWJUaHJlYWRMb2NrQWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKTsKICNl
bmRpZgpAQCAtMjA4OSw3ICsyMDg5LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJp
bmcmIGlucHV0TAogICAgICAgICAgICAgICAgIGlmICh3aW5kb3cgPT0gW1ttYWluRnJhbWUgd2Vi
Vmlld10gd2luZG93XSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbW1t3aW5kb3cgY29udGVudFZpZXddIHN1YnZpZXdzXSBvYmplY3RB
dEluZGV4OjBdOwogI2Vsc2UKICAgICAgICAgICAgICAgICBBU1NFUlQoW1t3aW5kb3cgY29udGVu
dFZpZXddIGlzS2luZE9mQ2xhc3M6W1dlYlZpZXcgY2xhc3NdXSk7CkBAIC0yMTMzLDcgKzIxMzMs
NyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAKIHZvaWQgZGlz
cGxheVdlYlZpZXcoKQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAg
W3dlYlZpZXcgZGlzcGxheV07CiAjZWxzZQpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgdm9pZCBkaXNw
bGF5V2ViVmlldygpCiB2b2lkIGRpc3BsYXlBbmRUcmFja1JlcGFpbnRzV2ViVmlldygpCiB7CiAg
ICAgZGlzcGxheVdlYlZpZXcoKTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUcmFja2luZyByZXBhaW50cyBpcyBub3Qgc3BlY2lm
aWMgdG8gTWFjLiBXZSBzaG91bGQgZW5hYmxlIHN1Y2ggc3VwcG9ydCBvbiBpT1MuCiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgW3dlYlZpZXcgc2V0VHJh
Y2tzUmVwYWludHM6WUVTXTsKQEAgLTIxNTQsNyArMjE1NCw3IEBAIHZvaWQgZGlzcGxheUFuZFRy
YWNrUmVwYWludHNXZWJWaWV3KCkKICNlbmRpZgogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbXBsZW1lbnRhdGlvbiBEdW1wUmVuZGVyVHJlZUV2
ZW50CiAKICsgKE5TUG9pbnQpbW91c2VMb2NhdGlvbgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgJKHJldmlzaW9u
IDIzNzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdn
aW5nSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0lu
Zm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJU
cmVlLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgpAQCAt
Mjk3LDQgKzI5Nyw0IEBAIC0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCiAKIEBlbmQKIAotI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKLSNpZiBQTEFURk9STShJT1MpICYmIGRlZmlu
ZWQoX19PQkpDX18pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgZGVmaW5lZChfX09CSkNf
XykKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjZW5kaWYKIApAQCAtNDgsNyArNDgsNyBAQCBl
eHRlcm4gTmF2aWdhdGlvbkNvbnRyb2xsZXIqIGdOYXZpZ2F0aW9uCiBleHRlcm4gUG9saWN5RGVs
ZWdhdGUqIHBvbGljeURlbGVnYXRlOwogZXh0ZXJuIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVm
YXVsdFBvbGljeURlbGVnYXRlOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBPQkpDX0NMQVNTIFVJV2luZG93OwogZXh0ZXJuIFVJV2luZG93ICptYWluV2lu
ZG93OwogI2Vsc2UKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbgogdW5zaWduZWQgd29ybGRJREZvcldvcmxkKFdlYlNjcmlwdFdvcmxkICop
OwogCiAKLSNpZiBQTEFURk9STShJT1MpICYmIGRlZmluZWQoX19PQkpDX18pCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgZGVmaW5lZChfX09CSkNfXykKIEBpbnRlcmZhY2UgRHVtcFJlbmRl
clRyZWUgOiBVSUFwcGxpY2F0aW9uIHsKICAgICBCT09MIF9oYXNGbHVzaGVkV2ViVGhyZWFkUnVu
UXVldWU7CiAgICAgVUlCYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIgYmFja2dyb3VuZFRhc2tJZGVu
dGlmaWVyOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZVBhc3RlYm9hcmQuaAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93LmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtp
dC5oPgogI2Vsc2UKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC00Nyw3ICs0Nyw3IEBAIEBpbnRl
cmZhY2UgRHVtcFJlbmRlclRyZWVXaW5kb3cgOiBOU1dpbmQKIHsKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbikgVUlXaW5kb3cgKnVpV2luZG93OwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
VUlXZWJCcm93c2VyVmlldyAqYnJvd3NlclZpZXc7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0JKHJldmlzaW9uIDIz
NzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiVGVzdFJ1bm5lci5o
IgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5o
PgogI2VuZGlmCiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIENGQXJyYXlDYWxsQmFja3MgTm9u
UmV0YWluaW5nQXJyYQogCiBAaW1wbGVtZW50YXRpb24gRHVtcFJlbmRlclRyZWVXaW5kb3cKIAot
I2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQHN5bnRoZXNpemUg
dWlXaW5kb3cgPSBfdWlXaW5kb3c7CiBAc3ludGhlc2l6ZSBicm93c2VyVmlldyA9IF9icm93c2Vy
VmlldzsKICNlbmRpZgpAQCAtNzEsNyArNzEsNyBAQCAtICh2b2lkKV9hZGRUb09wZW5XaW5kb3dz
CiAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKG9wZW5XaW5kb3dzUmVmLCAoX19icmlkZ2UgQ0ZUeXBl
UmVmKXNlbGYpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIC0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHls
ZU1hc2s6KE5TVUludGVnZXIpc3R5bGVNYXNrIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSli
dWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWRlZmVyQ3JlYXRpb24KIHsKICAgICBpZiAoKHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6c3R5bGVN
YXNrIGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpkZWZlckNyZWF0aW9uXSkpCkBAIC0xMDgs
NyArMTA4LDcgQEAgLSAodm9pZCljbG9zZQogCiAgICAgW3N1cGVyIGNsb3NlXTsKIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEJ5IGRlZmF1bHQs
IE5TV2luZG93cyBhcmUgcmVsZWFzZWQgd2hlbiBjbG9zZWQuIE9uIGlPUyB3ZSBkbwogICAgIC8v
IGl0IG1hbnVhbGx5LCBhbmQgcmVsZWFzZSB0aGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZp
ZXcuCiAgICAgaWYgKF91aVdpbmRvdykgewpAQCAtMTMxLDcgKzEzMSw3IEBAIC0gKEJPT0wpX2hh
c0tleUFwcGVhcmFuY2UKICAgICByZXR1cm4gW3NlbGYgaXNLZXlXaW5kb3ddOwogfQogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpa2V5RG93
bjooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgLy8gRG8gbm90aGluZywgYXZvaWRpbmcgdGhlIGJl
ZXAgd2UnZCBvdGhlcndpc2UgZ2V0IGZyb20gTlNSZXNwb25kZXIsCkBAIC0xNDEsNyArMTQxLDcg
QEAgLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQKIAogLSAoV2ViVmlldyAqKXdlYlZp
ZXcKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IE5TVmlldyAqZmlyc3RWaWV3ID0gbmlsOwogICAgIGlmIChbW1tzZWxmIGNvbnRlbnRWaWV3XSBz
dWJ2aWV3c10gY291bnRdID4gMCkgewogICAgICAgICBmaXJzdFZpZXcgPSBbW1tzZWxmIGNvbnRl
bnRWaWV3XSBzdWJ2aWV3c10gb2JqZWN0QXRJbmRleDowXTsKQEAgLTE2NCw3ICsxNjQsNyBAQCAt
ICh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wCiAKIC0gKHZvaWQpd2ViVmll
d1N0YXJ0ZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gSWYgdGhlIFdlYlZpZXcgaGFzIGdvbmUgaW50byBjb21wb3NpdGluZyBtb2RlLCB0dXJu
IG9uIHdpbmRvdyBhdXRvZGlzcGxheS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIENBCiAgICAgLy8g
dG8gdXBkYXRlIGxheWVycyBhbmQgc3RhcnQgYW5pbWF0aW9ucy4KICAgICAvLyBXZSBvbmx5IGV2
ZXIgdHVybiBhdXRvZGlzcGxheSBvbiBoZXJlLCBiZWNhdXNlIHdlIHR1cm4gaXQgb2ZmIGJlZm9y
ZSBldmVyeSB0ZXN0LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIEBpbnRlcmZhY2UgRXZlbnRTZW5kaW5nQ29udHJvbGxlciA6IE5TT2IKICAg
ICBOU1RpbWVJbnRlcnZhbCBsYXN0Q2xpY2s7CiAgICAgaW50IGV2ZW50TnVtYmVyOwogICAgIGRv
dWJsZSB0aW1lT2Zmc2V0OwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TTXV0YWJsZUFycmF5KiB0b3VjaGVzOwogICAgIHVuc2lnbmVkIGN1cnJlbnRU
b3VjaElkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbmV4dEV2ZW50RmxhZ3M7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQAogI2ltcG9y
dCA8ZnVuY3Rpb25hbD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9u
Lmg+IC8vIGZvciBHZXRDdXJyZW50RXZlbnRUaW1lKCkKICNpbXBvcnQgPFdlYktpdC9XZWJIVE1M
Vmlldy5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvbWFjL0FwcEtp
dENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2lt
cG9ydCA8V2ViS2l0L0tleUV2ZW50Q29kZXNJT1MuaD4KICNpbXBvcnQgPFdlYktpdC9XQUtXaW5k
b3cuaD4KQEAgLTU4LDcgKzU4LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dyYXBoaWNzU2Vy
dmljZXNTUEkuaD4gLy8gZm9yIEdTQ3VycmVudEV2ZW50VGltZXN0YW1wKCkKICNlbmRpZgogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGV4dGVybiAiQyIg
dm9pZCBfTlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiAKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlv
biAoKQpAQCAtOTUsNyArOTUsNyBAQCBOU011dGFibGVBcnJheSAqc2F2ZWRNb3VzZUV2ZW50czsg
Ly8gbW91CiBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogCiAKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgU3ludGhldGljVG91Y2ggOiBO
U09iamVjdCB7CiBAcHVibGljCiAgICAgQ0dQb2ludCBfbG9jYXRpb247CkBAIC0xMzQsNyArMTM0
LDcgQEAgLSAoaWQpaW5pdFdpdGhMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgogQGVuZCAvLyBT
eW50aGV0aWNUb3VjaAogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3SW50ZXJuYWxGb3JUZXN0
aW5nKQogLSAoV2ViQ29yZTo6RnJhbWUqKV9tYWluQ29yZUZyYW1lOwogQGVuZApAQCAtMjU5LDcg
KzI1OSw3IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYmVnaW5EcmFnV2l0aEZpbGVzOikKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYmVnaW5EcmFnV2l0aEZpbGVQcm9t
aXNlczopCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYWRkVG91Y2hBdFg6eTop
CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHVwZGF0ZVRvdWNoQXRJbmRl
eDp4Onk6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjYW5jZWxUb3Vj
aEF0SW5kZXg6KQpAQCAtMzIyLDcgKzMyMiw3IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFt
ZUZvclNlbGVjdG9yOigKICAgICAgICAgcmV0dXJuIEAibW9uaXRvcldoZWVsRXZlbnRzIjsKICAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXM6
KSkKICAgICAgICAgcmV0dXJuIEAiY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzIjsKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihhZGRUb3VjaEF0WDp5OikpCiAgICAgICAgIHJldHVybiBAImFkZFRvdWNo
UG9pbnQiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHVwZGF0ZVRvdWNoQXRJbmRl
eDp4Onk6KSkKQEAgLTM1OSw3ICszNTksNyBAQCAtIChpZClpbml0CiAKIC0gKHZvaWQpZGVhbGxv
YwogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFt0
b3VjaGVzIHJlbGVhc2VdOwogI2VuZGlmCiAgICAgW3N1cGVyIGRlYWxsb2NdOwpAQCAtMzY3LDcg
KzM2Nyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChkb3VibGUpY3VycmVudEV2ZW50VGltZQog
ewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0
dXJuIEdldEN1cnJlbnRFdmVudFRpbWUoKSArIHRpbWVPZmZzZXQ7CiAjZWxzZQogICAgIHJldHVy
biBHU0N1cnJlbnRFdmVudFRpbWVzdGFtcCgpICsgdGltZU9mZnNldDsKQEAgLTM5MiwxMiArMzky
LDEyIEBAIC0gKHZvaWQpbGVhcEZvcndhcmQ6KGludCltaWxsaXNlY29uZHMKIAogLSAodm9pZClj
bGVhcktpbGxSaW5nCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBfTlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiAjZW5kaWYKIH0KIAotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgTlNFdmVudFR5
cGUgZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91c2VBY3Rp
b24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC01MDMsNyArNTAzLDcgQEAg
LSAodm9pZCliZWdpbkRyYWdXaXRoRmlsZVByb21pc2VzOihXZWJTYwogICAgIGRyYWdNb2RlID0g
Tk87CiAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKIH0KLSNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2b2lkKXVwZGF0
ZUNsaWNrQ291bnRGb3JCdXR0b246KGludClidXR0b25OdW1iZXIKIHsKQEAgLTUxOCw3ICs1MTgs
NyBAQCAtICh2b2lkKXVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0b246KGludCliCiAKIHN0YXRpYyBp
bnQgbW9kaWZpZXJGbGFncyhjb25zdCBOU1N0cmluZyogbW9kaWZpZXJOYW1lKQogewotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29uc3QgaW50IGNv
bnRyb2xLZXlNYXNrID0gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CiAgICAgY29uc3QgaW50
IHNoaWZ0S2V5TWFzayA9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKICAgICBjb25zdCBpbnQg
YWx0ZXJuYXRlS2V5TWFzayA9IE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb247CkBAIC01NjYsNyAr
NTY2LDcgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0b25OdW1iZXIgd2l0aAogICAgIFtb
W21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKICAgICBbc2VsZiB1
cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uOmJ1dHRvbk51bWJlcl07CiAgICAgCi0jaWYgIVBMQVRG
T1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50VHlwZSBldmVu
dFR5cGUgPSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1v
dXNlRG93bik7CiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6ZXZlbnRUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246bGFzdE1vdXNlUG9zaXRpb24gCkBAIC01ODUsMTggKzU4NSwxOCBAQCAtICh2b2lkKW1v
dXNlRG93bjooaW50KWJ1dHRvbk51bWJlciB3aXRoCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBb
W21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAg
ICAgaWYgKHN1YlZpZXcpIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYK
ICAgICAgICAgW3N1YlZpZXcgbW91c2VEb3duOmV2ZW50XTsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpuaWxdOwogI2VuZGlmCiAgICAgICAgIGlmIChidXR0b25OdW1iZXIgPT0gTGVmdE1vdXNlQnV0
dG9uKQogICAgICAgICAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKICAgICB9CiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVs
ZWFzZV07CiAjZW5kaWYKIH0KQEAgLTYyOCw3ICs2MjgsNyBAQCAtICh2b2lkKXpvb21QYWdlT3V0
CiAKIC0gKHZvaWQpc2NhbGVQYWdlQnk6KGZsb2F0KXNjYWxlIGF0WDooZmxvYXQpeCBhbmRZOihm
bG9hdCl5CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyAtW1dlYlZpZXcgX3NjYWxlV2ViVmlldzpdIGlzIE1hYy1zcGVjaWZpYyBBUEksIGFu
ZCBjYWxscyBmdW5jdGlvbnMgdGhhdAogICAgIC8vIGFzc2VydCB0byBub3QgYmUgdXNlZCBpbiBp
T1MuCiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NjYWxlV2ViVmlldzpzY2FsZSBhdE9yaWdp
bjpOU01ha2VQb2ludCh4LCB5KV07CkBAIC02NTEsNyArNjUxLDcgQEAgLSAodm9pZCltb3VzZVVw
OihpbnQpYnV0dG9uTnVtYmVyIHdpdGhNbwogICAgIH0KIAogICAgIFtbW21haW5GcmFtZSBmcmFt
ZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGV2ZW50VHlw
ZUZvck1vdXNlQnV0dG9uQW5kQWN0aW9uKGJ1dHRvbk51bWJlciwgTW91c2VVcCk7CiAgICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9z
aXRpb24gCkBAIC02NzQsMTggKzY3NCwxOCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25O
dW1iZXIgd2l0aE1vCiAgICAgLy8gaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24gYWxnb3JpdGht
IGZvciBzZWxlY3RpbmcgYW4gZXZlbnQgdGFyZ2V0LgogICAgIHRhcmdldFZpZXcgPSB0YXJnZXRW
aWV3ID8gdGFyZ2V0VmlldyA6IFtbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsK
ICAgICBhc3NlcnQodGFyZ2V0Vmlldyk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5k
aWYKICAgICBbdGFyZ2V0VmlldyBtb3VzZVVwOmV2ZW50XTsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07CiAjZW5kaWYKICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExlZnRNb3VzZUJ1dHRvbikKICAg
ICAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IE5POwogICAgIGxhc3RDbGljayA9IFtldmVudCB0
aW1lc3RhbXBdOwogICAgIGxhc3RDbGlja1Bvc2l0aW9uID0gbGFzdE1vdXNlUG9zaXRpb247Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZHJh
Z2dpbmdJbmZvKSB7CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZp
ZXddOwogICAgICAgICAKQEAgLTcwMyw3ICs3MDMsNyBAQCAtICh2b2lkKW1vdXNlVXA6KGludCli
dXR0b25OdW1iZXIgd2l0aE1vCiAgICAgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0K
QEAgLTcyNyw3ICs3MjcsNyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkK
ICAgICB9CiAKICAgICBOU1ZpZXcgKnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNQb2ludCBuZXdN
b3VzZVBvc2l0aW9uID0gW3ZpZXcgY29udmVydFBvaW50Ok5TTWFrZVBvaW50KHgsIFt2aWV3IGZy
YW1lXS5zaXplLmhlaWdodCAtIHkpIHRvVmlldzpuaWxdOwogICAgIE5TRXZlbnQgKmV2ZW50ID0g
W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOihsZWZ0TW91c2VCdXR0b25Eb3duID8gTlNFdmVu
dFR5cGVMZWZ0TW91c2VEcmFnZ2VkIDogTlNFdmVudFR5cGVNb3VzZU1vdmVkKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOm5ld01vdXNlUG9zaXRpb24K
QEAgLTc0OCwxNSArNzQ4LDE1IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQp
eQogICAgIFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VF
dmVudFR5cGU6V2ViRXZlbnRNb3VzZU1vdmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1l
XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBb
W21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAg
ICAgaWYgKHN1YlZpZXcpIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYK
ICAgICAgICAgaWYgKGxlZnRNb3VzZUJ1dHRvbkRvd24pIHsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgaWYgKGRyYWdnaW5nSW5mbykg
ewogICAgICAgICAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBt
YXkgbm90IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBp
ZiAoW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoZHJhZ2dlZEltYWdlOm1vdmVkVG86KV0pCkBAIC03NjcsMTkgKzc2NywxOSBAQCAtICh2
b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICNlbmRpZgogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlTW92ZWQ6ZXZlbnRdOwotI2lmICFQTEFURk9STShJ
T1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50Om5pbF07CiAjZW5kaWYKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0KIAogLSAo
dm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgY29udGludW91c2x5OihCT09M
KWNvbnRpbnVvdXNseQogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVudFVuaXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtDR1Nj
cm9sbEV2ZW50VW5pdFBpeGVsIDoga0NHU2Nyb2xsRXZlbnRVbml0TGluZTsKICAgICBDR0V2ZW50
UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudChOVUxMLCB1
bml0LCAyLCB5LCB4KTsKICAgICAKQEAgLTExMDcsNyArMTEwNyw3IEBAIC0gKHZvaWQpa2V5RG93
bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CiAK
ICAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1on
KSB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CiAjZWxzZQogICAg
ICAgICBtb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHBoYVNoaWZ0OwpAQCAtMTEy
Miw3ICsxMTIyLDcgQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aQog
CiAgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50
ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCiAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCkBAIC0xMTQ2LDE1
ICsxMTQ2LDE1IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlclNldDpXZWJFdmVudENoYXJhY3RlclNldEFT
Q0lJXTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAjZW5kaWYKICAgICBb
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZl
bnRdOwotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJGbGFncwpAQCAtMTE3OSwxNSArMTE3OSwxNSBAQCAtICh2b2lkKWtleURv
d246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXJTZXQ6V2ViRXZlbnRDaGFyYWN0ZXJTZXRBU0NJSV07CiAjZW5kaWYKIAotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnRdOwogI2VuZGlmCiAgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5k
b3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBbZXZlbnQgcmVsZWFzZV07CiAjZW5kaWYKIH0KQEAgLTEzODgsNyArMTM4OCw3IEBAIC0g
KHZvaWQpY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzOihXZWIKICNlbmRpZgogfQogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKWFkZFRvdWNo
QXRYOihpbnQpeCB5OihpbnQpeQogewogICAgIGlmICghdG91Y2hlcykKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDExIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1By
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiQXBwbGVTY3JpcHRDb250cm9s
bGVyLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjZW5kaWYKIApA
QCAtMTE5LDcgKzExOSw3IEBAIC0gKGlkKWluaXQKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKSB7CiAgICAgICAgIGdjQ29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXI7CiAgICAgICAg
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOwot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlld1Byb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb246KSBuYW1l
OldlYlZpZXdQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogI2VuZGlm
CiAgICAgfQpAQCAtMTI4LDcgKzEyOCw3IEBAIC0gKGlkKWluaXQKIAogLSAodm9pZClkZWFsbG9j
CiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZd
OwogI2VuZGlmCiAgICAgZGVsZXRlIGdjQ29udHJvbGxlcjsKQEAgLTE0Myw3ICsxNDMsNyBAQCAt
ICh2b2lkKXByb2Nlc3NXb3JrOihpZClkdW1teQogICAgIGlmICh0b3BMb2FkaW5nRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogCkBAIC0yMDIsNyArMjAyLDcgQEAg
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFN0YQogICAgICAgICBpbnQ2NF90
IGRlZmVycmVkV2FpdFRpbWUgPSA1ICogTlNFQ19QRVJfTVNFQzsKICAgICAgICAgZGlzcGF0Y2hf
dGltZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJlZFdh
aXRUaW1lKTsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgICAgICAgICAgW3NlbmRl
ciBzZXREZWZlcnNDYWxsYmFja3M6Tk9dOwpAQCAtMjIwLDcgKzIyMCw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRDb20KICAgICBBU1NFUlQoIVtmcmFtZSBwcm92aXNp
b25hbERhdGFTb3VyY2VdKTsKICAgICBBU1NFUlQoW2ZyYW1lIGRhdGFTb3VyY2VdKTsKICAgICBn
VGVzdFJ1bm5lci0+c2V0V2luZG93SXNLZXkodHJ1ZSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbbWFp
bkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBbW1ttYWluRnJhbWUgd2ViVmll
d10gd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6ZG9jdW1lbnRWaWV3XTsKICNlbmRpZgpAQCAt
MzEyLDcgKzMxMiw3IEBAIC0gKHZvaWQpZGlkQ2xlYXJXaW5kb3dPYmplY3RJblN0YW5kYXJkV28K
IAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbZnJhbWUgd2ViVmlld107CiAgICAgV2ViU2NyaXB0
T2JqZWN0ICpvYmogPSBbZnJhbWUgd2luZG93T2JqZWN0XTsKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFwcGxlU2NyaXB0Q29udHJvbGxlciAqYXNj
ID0gW1tBcHBsZVNjcmlwdENvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3
XTsKICAgICBbb2JqIHNldFZhbHVlOmFzYyBmb3JLZXk6QCJhcHBsZVNjcmlwdENvbnRyb2xsZXIi
XTsKICAgICBbYXNjIHJlbGVhc2VdOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RIZWxwZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdEhlbHBlci5tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8
QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CkBAIC0yOTgsOSArMjk4
LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICByZXR1cm4gMDsKIH0K
IAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjZW5kaWYKIApAQCAtOTIsNyArOTIsNyBAQCAtIChXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICopbGFzdFBvc2l0aW9uCiAgICAgcmV0dXJuIF9sYXN0UG9zaXRp
b24uZ2V0KCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFj
eQogewogICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwpAQCAtMTI4LDcgKzEy
OCw3IEBAIC0gKHZvaWQpdGltZXJGaXJlZAogICAgIGF1dG8gY29weU9mUmVnaXN0ZXJlZFZpZXdz
IHsgX3JlZ2lzdGVyZWRWaWV3cyB9OwogICAgIGZvciAoYXV0byB0eXBlbGVzc1ZpZXcgOiBjb3B5
T2ZSZWdpc3RlcmVkVmlld3MpIHsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gKF9fYnJpZGdlIFdl
YlZpZXcgKil0eXBlbGVzc1ZpZXc7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKF9oYXNFcnJvcikKICAgICAgICAgICAgIFt3ZWJWaWV3
IF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpfZXJyb3JNZXNzYWdlLmdldCgpXTsKICAg
ICAgICAgZWxzZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxOCArNzYsMTggQEAKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XYWxsVGltZS5oPgogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVRocmVhZC5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWRNZXNzYWdlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JL
KFdlYkluc3BlY3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKIAogQGludGVyZmFjZSBDb21t
YW5kVmFsaWRhdGlvblRhcmdldCA6IE5TT2JqZWN0IDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJ
dGVtPgpAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNl
RW5hYmxlZCgKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVy
KGJvb2wgZmxhZykKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddOwogICAgIAogICAgIE5TUmVzcG9uZGVyICpmaXJzdFJlc3BvbmRlciA9IGZs
YWcgPyBkb2N1bWVudFZpZXcgOiBuaWw7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQwogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOmVuYWJsZWRdOwogI2VuZGlmCiB9CkBA
IC01NjMsNyArNTYzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdo
RQogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
czpjeWNsZXNdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9z
ZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZDplbmFibGVkXTsKQEAgLTU3Nyw3ICs1Nzcs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBhZ2VQYXVzZWQoYm9vbCBwYXVzCiAKIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKQogewot
I2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttYWlu
RnJhbWUgd2ViVmlld10gX3NldERhc2hib2FyZEJlaGF2aW9yOldlYkRhc2hib2FyZEJlaGF2aW9y
VXNlQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSB0bzpmbGFnXTsKICNlbmRpZgogfQpAQCAtNzE4
LDcgKzcxOCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGUKIAog
Ym9vbCBUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCiB7Ci0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG5hbWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOwogICAgIE5TU3RyaW5nICpuYW1lTlMgPSAoX19icmlk
Z2UgTlNTdHJpbmcgKiluYW1lQ0YuZ2V0KCk7CiAKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBUZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1YlVSTCgpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxz
ZQogICAgIC8vIENhbGwgdGhlIHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVu
IGl0LCB0aGVuIENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIgd2lsbCB3b3JrLgpAQCAt
OTE3LDcgKzkxNyw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW4K
IAogQGVuZAogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IEBpbnRlcmZhY2UgQVBJVGVzdERlbGVnYXRlSVBob25lIDogTlNPYmplY3QgPFdlYkZyYW1lTG9h
ZERlbGVnYXRlPgogewpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZEZpbgogCiB2b2lkIFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dE
YXRhTG9hZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3RyaW5nUmVmIGJhc2VVUkwp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
T24gaU9TIHRoaXMgZ2V0cyBjYWxsZWQgdmlhIEphdmFTY3JpcHQgb24gdGhlIFdlYlRocmVhZC4g
QnV0IHNpbmNlIGl0IGNyZWF0ZXMKICAgICAvLyBhbmQgY2xvc2VzIGEgV2ViVmlldywgaXQgc2hv
dWxkIGJlIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ha2UgdGhlIHN3aXRjaAogICAgIC8vIGZy
b20gdGhlIHdlYiB0aHJlYWQgdG8gdGhlIG1haW4gdGhyZWFkIGFuZCBtYWtlIHRoZSB0ZXN0IGFz
eW5jaHJvbm91cy4KQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVz
dE5ld1dpbmRvd0RhdGFMb2EKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFsoRHVtcFJlbmRlclRy
ZWUgKilbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX3dhaXRGb3JXZWJUaHJlYWRd
OwogI2VuZGlmCiAKQEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXV0aGVu
dGljYXRlU2Vzc2lvbihKU1MKIAogdm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKIHsKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBh
Ym9ydE1vZGFsXTsKICNlbmRpZgogfQpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYgogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHRE
aXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKIHsKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGRpcmVjdGlvbk5hbWUsICJsdHIiKSkKICAgICAgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6MF07CiAgICAgZWxzZSBp
ZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAicnRsIikpCkBA
IC0xMTY2LDcgKzExNjYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24oSlNT
dHJpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1RleHRGaWVsZCAq
dGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMjApXTsKICAgICB0ZXh0RmllbGQudGFnID0gMTsKICAgICBbW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsK
QEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVs
ZCgpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1ZpZXcqIHRl
eHRGaWVsZCA9IFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gdmll
d1dpdGhUYWc6MV07CiAgICAgaWYgKHRleHRGaWVsZCkgewogICAgICAgICBbdGV4dEZpZWxkIHJl
bW92ZUZyb21TdXBlcnZpZXddOwpAQCAtMTE5MCwxNCArMTE5MCwxNCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoCiAKIHZvaWQgVGVzdFJ1bm5lcjo6Zm9jdXNXZWJW
aWV3KCkKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpbbWFp
bkZyYW1lIHdlYlZpZXddXTsKICNlbmRpZgogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tp
bmdTY2FsZUZhY3Rvcihkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yKQogewotI2lmICFQTEFURk9S
TShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1ttYWluRnJhbWUgd2ViVmll
d10gX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3RvcjpiYWNraW5nU2NhbGVGYWN0b3JdOwogI2Vu
ZGlmCiB9CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB1bnNpZ25lZCBUZXN0UnVubmVyOjppbWFnZUNv
dW50SW5HZW5lcmFsCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TRGF0YSAqZGF0YSA9IFtb
TlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkYXRhRm9yVHlwZTpXZWJBcmNoaXZlUGJv
YXJkVHlwZV07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIE5TRGF0YSAqZGF0YSA9IFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2
YWx1ZUZvclBhc3RlYm9hcmRUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICNlbmRpZgogICAg
IGlmICghZGF0YSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUuaAkocmV2
aXNpb24gMjM3MjYwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0ICJUZXN0T3B0aW9ucy5o
IgogIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxDb2NvYS9Db2NvYS5oPgogI2Vsc2UKICNpbXBvcnQgPFdlYktpdC9XQUtWaWV3Lmg+Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYw
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJ
bmZvID0gbmlsOwogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGFkZE1lcwogCiAtICh2b2lkKW1vZGFsV2luZG93V2lsbENsb3NlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotI2lmICFQTEFURk9STShJT1MpCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07CiAgICAgW05TQXBwIGFib3J0TW9kYWxdOwogI2VuZGlmCkBAIC0x
MDQsNyArMTA0LDcgQEAgLSAodm9pZCltb2RhbFdpbmRvd1dpbGxDbG9zZTooTlNOb3RpZmljYQog
CiAtICh2b2lkKXdlYlZpZXdSdW5Nb2RhbDooV2ViVmlldyAqKXNlbmRlcgogewotI2lmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZ1Rlc3RSdW5uZXItPnNl
dFdpbmRvd0lzS2V5KGZhbHNlKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKG1vZGFsV2luZG93V2ls
bENsb3NlOikgbmFtZTpOU1dpbmRvd1dpbGxDbG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
ICAgICBbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3NlbmRlciB3aW5kb3ddXTsKQEAgLTE0Myw3
ICsxNDMsNyBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJlZm9yZVVuCiB9CiAK
IAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0ltYWdlOihOU0ltYWdlICopYW5JbWFnZSBh
dDooTlNQb2ludCl2aWV3TG9jYXRpb24gb2Zmc2V0OihOU1NpemUpaW5pdGlhbE9mZnNldCBldmVu
dDooTlNFdmVudCAqKWV2ZW50IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCBzb3Vy
Y2U6KGlkKXNvdXJjZU9iaiBzbGlkZUJhY2s6KEJPT0wpc2xpZGVGbGFnIGZvclZpZXc6KE5TVmll
dyAqKXZpZXcKIHsKICAgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOwpAQCAtMjkzLDcgKzI5Myw3
IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzaG91bGQKIAogLSAoQk9PTCl3
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OihE
T01FbGVtZW50KillbGVtZW50IHdpdGhLZXlib2FyZDooQk9PTCl3aXRoS2V5Ym9hcmQKIHsKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gTk87
CiAjZWxzZQogICAgIHJldHVybiBZRVM7CkBAIC0zOTMsNyArMzkzLDcgQEAgLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZQogICAgIFtyZXN1bHRMaXN0ZW5lciBjaG9vc2VG
aWxlbmFtZTpbZmlsZVBhdGhzIGZpcnN0T2JqZWN0XV07CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CkBAIC00MDcsNyArNDA3LDcgQEAg
LSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldwogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFtkcmFnZ2luZ0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlm
CkluZGV4OiBUb29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3Mt
bmFtZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0
ZS1vYmpjLWNsYXNzLW5hbWVzCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9TY3JpcHRzL2No
ZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDcgKzc4LDcgQEAgaWYgKCFkZWZpbmVkICRleGVjdXRhYmxlUGF0aEFnZSB8fCAhZGVmaQog
ICAgIH0KICAgICBjbG9zZSBOTTsKIAotICAgICMgYmVnaW4gUExBVEZPUk0oSU9TKQorICAgICMg
YmVnaW4gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAjIE9uIGlPUyBwdXQgZXhjZXB0aW9ucyBp
biBwbGFjZSBmb3IgZXhpc3RpbmcgYmFkIG5hbWVzLiBGdXR1cmUgYmFkIG5hbWVzIHdpbGwKICAg
ICAjIGJlIGNhdWdodCBhbmQgc2hvdWxkIGJlIGZpeGVkIGltbWVkaWF0ZWx5LiBGaXhpbmcgdGhl
c2UgaXMgY292ZXJlZCBieToKICAgICAjIDxyZGFyOi8vcHJvYmxlbS8xMDM2NTAwOD4gRml4IElu
YXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgZm91bmQgYnkgYnVpbGQgcGhhc2UK
QEAgLTEwMCw3ICsxMDAsNyBAQCBpZiAoIWRlZmluZWQgJGV4ZWN1dGFibGVQYXRoQWdlIHx8ICFk
ZWZpCiAgICAgICAgIHB1c2goQHJlYWxCYWROYW1lcywgJGNsYXNzTmFtZSkgdW5sZXNzIGV4aXN0
cygkZXhjZXB0aW9uc3skY2xhc3NOYW1lfSk7CiAgICAgfQogICAgIEBiYWROYW1lcyA9IEByZWFs
QmFkTmFtZXM7Ci0gICAgIyBlbmQgUExBVEZPUk0oSU9TKQorICAgICMgZW5kIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICAgICBpZiAoQGJhZE5hbWVzKSB7CiAKSW5kZXg6IFRvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNyBAQCBVSVNjcmlwdENvbnRyb2xsZXI6OlVJU2NyaXB0Q29udHJvbGxlcihVCiB7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OmNoZWNrRm9yT3V0c3RhbmRpbmdDYWxsYmFja3MoKQogewog
fQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF5QmFja0V2
ZW50U3QKICAgICBwbGF0Zm9ybVBsYXlCYWNrRXZlbnRTdHJlYW0oc3RyZWFtLCBjYWxsYmFjayk7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnRvdWNoRG93bkF0UG9pbnQobG9uZyB4LCBsb25nIHksIGxv
bmcgdG91Y2hDb3VudCwgSlNWYWx1ZVJlZikKIHsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvc3BpL1VJS2l0VGVzdFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvc3BpL1VJS2l0VGVzdFNQSS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
UnVubmVyU2hhcmVkL3NwaS9VSUtpdFRlc3RTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogCkBA
IC05NCw1ICs5NCw1IEBACiBAZW5kCiAjZW5kaWYKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgJ
KHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBf
X0FQUExFX18KICNpZmRlZiBfX09CSkNfXwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjZWxzZQog
I2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KQEAgLTQ1LDcgKzQ1LDcgQEAKIAogI2luY2x1ZGUgPHN0
ZGludC5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05M
WV9fKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oV0lOX0NBSVJPKSkKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKSAmJiAoIVBM
QVRGT1JNKFdJTikgfHwgUExBVEZPUk0oV0lOX0NBSVJPKSkKICNpbmNsdWRlIDxXZWJLaXQvV2Vi
S2l0Ml9DLmg+CiAjZW5kaWYKIApAQCAtNzcsNiArNzcsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAot
I2lmICFQTEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2Rl
ZmluZSBXS19IQVZFX0NfU1BJIDEKICNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvZGFyd2luL1dlYWtMaW5raW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vV2Vha0xpbmtpbmcuY3BwCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vV2Vha0xpbmtpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8c3lzL3VuaXN0
ZC5oPgogI2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDEwMDAKIGFzbSgiLmxpbmtlcl9vcHRpb24gXCItbFRlc3RXVEZB
bHdheXNNaXNzaW5nLWlPUy12MlwiIik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvTWFya2VkVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL01hcmtlZFRleHQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTWFya2VkVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDggKzQwLDggQEAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgbwogICAgICAgICByZXR1cm4gb3MgPDwgIkNvcnJlY3Rpb24iOwogICAgIGNhc2UgTWFya2Vk
VGV4dDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOgogICAgICAgICByZXR1cm4gb3MgPDwgIkRpY3Rh
dGlvbkFsdGVybmF0aXZlcyI7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBTZWUg
PHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBGSVhNRTogU2VlIDxyZGFy
Oi8vcHJvYmxlbS84OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZ
KS1ndWFyZC4KICAgICBjYXNlIE1hcmtlZFRleHQ6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXM6CiAgICAgICAgIHJldHVybiBvcyA8PCAiRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0
aXZlcyI7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0
YWJhc2VUcmFja2VyVGVzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0jaWYg
UExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFRFU1QoRGF0YWJhc2VU
cmFja2VyLCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogewpAQCAtNTcsNyArNTcsNyBAQCBU
RVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VGaWxlCiAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZGF0YWJhc2VGaWxlUGF0aCk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogCkBAIC0xMjYsNyArMTI2LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9y
aWdpbikKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5pc0VtcHR5
KCkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmln
aW4pLmlzRW1wdHkoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBFWFBFQ1RfVFJVRShEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmls
ZUlmRW1wdHkoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICNlbHNlCkBAIC0yMDMsNyAr
MjAzLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZQogCiAgICAg
Y2htb2QoZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCA1NTUpOwogCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjaGZsYWdzKGZ1bGxX
ZWJEYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgVUZfSU1NVVRBQkxFKTsKICNlbmRpZgogCkBA
IC0yMTcsNyArMjE3LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5E
ZQogCiAgICAgY2htb2QoZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCA2NjYpOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjaGZs
YWdzKGZ1bGxXZWJEYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgMCk7CiAjZW5kaWYKIApAQCAt
Mjk4LDcgKzI5OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICAg
ICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgd2Vi
RGF0YWJhc2VOYW1lKSk7CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFz
ZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
RGF0YWJhc2VGaWxlSWZFbXB0eShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CiAjZWxzZQogICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKICAgICB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2VuZGlm
CiAgICAgICAgIHZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvaW9zL1ByZXZpZXdM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9pb3MvUHJldmlld0xvYWRlci5jcHAJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9pb3MvUHJldmlld0xvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBVU0UoUVVJQ0tfTE9PSykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBV
U0UoUVVJQ0tfTE9PSykKIAogI2luY2x1ZGUgPFdlYkNvcmUvUHJldmlld0xvYWRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNCArNDQsNCBAQCBURVNUKFF1aWNr
TG9vaywgU2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgVVNFKFFVSUNLX0xPT0spCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFFVSUNLX0xPT0spCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Ob0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Ob0hp
c3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWVudC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTm9IaXN0b3J5SXRlbVNjcm9sbFRvRnJhZ21lbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZClfd2ViVmlld0RpZFNj
cm9sbDooV0tXZWJWaWV3ICopdwogQGVuZAogCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGludGVyZmFjZSBEaWRTY3JvbGxUb0ZyYWdtZW50
U2Nyb2xsVmlld0RlbGVnYXRlIDogTlNPYmplY3QgPFVJU2Nyb2xsVmlld0RlbGVnYXRlPgogCkBA
IC04MSw3ICs4MSw3IEBAIFRFU1QoV2ViS2l0LCBOb0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWUK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0RpZFNjcm9sbFRvRnJhZ21lbnREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbRGlkU2Nyb2xsVG9G
cmFnbWVudFNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNj
cm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwogI2VuZGlm
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZl
cmVuY2VzLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcg
QEAgVEVTVChXZWJLaXQsIFdLUHJlZmVyZW5jZXNEZWZhdWx0cykKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZXhwZWN0ZWRDdXJzaXZlRm9udEZhbWlseSA9ICJBcHBsZSBDaGFuY2VyeSI7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkRmFudGFzeUZvbnRGYW1pbHkgPSAiUGFweXJ1cyI7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkUGljdG9ncmFwaEZvbnRGYW1pbHkgPSAi
QXBwbGUgQ29sb3IgRW1vamkiOwotI2VsaWYgUExBVEZPUk0oSU9TKQorI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTdGFuZGFyZEZvbnRG
YW1pbHkgPSAiVGltZXMiOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZEZpeGVkRm9u
dEZhbWlseSA9ICJDb3VyaWVyIjsKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTZXJp
ZkZvbnRGYW1pbHkgPSAiVGltZXMiOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKIAogI2ltcG9ydCAiQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1Byb3RvY29sLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BbmltYXRlZFJlc2l6ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FuaW1h
dGVkUmVzaXplLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FuaW1hdGVkUmVzaXplLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFU
Rk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAog
c3RhdGljIGJvb2wgZGlkTGF5b3V0Owogc3RhdGljIGJvb2wgZGlkRW5kQW5pbWF0ZWRSZXNpemU7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRp
bmdEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDE0ICs5MiwxNCBAQCAgICAgW1t3ZWJWaWV3IF9y
ZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnCiAgICAgTlNTdHJpbmcgKmNvcGllZFN0cmluZyA9IG5p
bDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgY29waWVkU3RyaW5nID0gW1tOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIHN0cmluZ0ZvclR5cGU6QCJvcmcud2Via2l0LmRhdGEiXTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29waWVk
U3RyaW5nID0gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbW1VJUGFzdGVib2FyZCBn
ZW5lcmFsUGFzdGVib2FyZF0gZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAib3JnLndlYmtpdC5kYXRh
Il0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKICNlbmRpZgog
ICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBjb3BpZWRTdHJpbmcpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRTdHJpbmc6
Y29waWVkU3RyaW5nIGZvclR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07Ci0jZWxpZiBQ
TEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtbVUlQYXN0ZWJv
YXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRWYWx1ZTpjb3BpZWRTdHJpbmcgZm9yUGFzdGVib2Fy
ZFR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07CiAjZW5kaWYKICAgICBbd2ViVmlldyBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHBhc3RlOikgd2l0aE9iamVjdDpuaWxdOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1
bmRsZVJhbmdlSGFuZGxlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVJhbmdlSGFuZGxlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAICAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSBy
ZWcKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIlZpc2l0IHdlYmtpdC5vcmcgICA8ZW0+
ICBvcjwvZW0+IGVtYWlsIHdlYmtpdC1kZXZAbGlzdHMud2Via2l0Lm9yZy4iIGJhc2VVUkw6bmls
XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkR2V0VGV4dEZyb21Cb2R5UmFu
Z2UpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkR2V0Qm9keUlubmVySFRNTEFmdGVyRGV0ZWN0aW5n
RGF0YSk7CiAjZW5kaWYKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZVBsdWdJbi5tbQko
cmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9CdW5kbGVSYW5nZUhhbmRsZVBsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgs
NyBAQCAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvCiAgICAgYXV0byBy
YW5nZUhhbmRsZSA9IFtXS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZSByYW5nZUhhbmRsZVdp
dGhKU1ZhbHVlOmpzUmFuZ2UgaW5Db250ZXh0OmNvbnRleHRdOwogCiAgICAgW19yZW1vdGVPYmpl
Y3QgdGV4dEZyb21Cb2R5UmFuZ2U6cmFuZ2VIYW5kbGUudGV4dF07Ci0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3JhbmdlSGFuZGxlIGRldGVjdERhdGFX
aXRoVHlwZXM6V0tEYXRhRGV0ZWN0b3JUeXBlQWxsIGNvbnRleHQ6QHsgfV07CiAgICAgW19yZW1v
dGVPYmplY3QgYm9keUlubmVySFRNTEFmdGVyRGV0ZWN0aW5nRGF0YTpbW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdIHRvU3RyaW5nXV07CiAjZW5kaWYK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29kaW5nLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29kaW5n
Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvZGluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBURVNUKENv
ZGluZywgV0tQcmVmZXJlbmNlcykKICAgICAvLyBDaGFuZ2UgYWxsIGRlZmF1bHRzIHRvIHNvbWV0
aGluZyBlbHNlLgogICAgIFthIHNldE1pbmltdW1Gb250U2l6ZToxMF07CiAgICAgW2Egc2V0SmF2
YVNjcmlwdEVuYWJsZWQ6Tk9dOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFthIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6
WUVTXTsKICNlbHNlCiAgICAgW2Egc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseTpOT107CkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChDb2RpbmcsIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24pCiAgICAgW2Egc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OkAiQXBwbGlj
YXRpb24gTmFtZSJdOwogICAgIFthIHNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrOk5P
XTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFth
IHNldERhdGFEZXRlY3RvclR5cGVzOldLRGF0YURldGVjdG9yVHlwZUFsbF07CiAgICAgW2Egc2V0
QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazpZRVNdOwogICAgIFthIHNldFJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2s6Tk9dOwpAQCAtMTE5LDcgKzExOSw3IEBAIFRFU1QoQ29kaW5n
LCBXS1dlYlZpZXdDb25maWd1cmF0aW9uKQogICAgIEVYUEVDVF9UUlVFKFtbYSBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnRdIGlzRXF1YWxUb1N0cmluZzpbYiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnRdXSk7CiAgICAgRVhQRUNUX0VRKFthIGFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrXSwgW2IgYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKTsKIAotI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEVYUEVDVF9FUShbYSBkYXRhRGV0
ZWN0b3JUeXBlc10sIFtiIGRhdGFEZXRlY3RvclR5cGVzXSk7CiAgICAgRVhQRUNUX0VRKFthIGFs
bG93c0lubGluZU1lZGlhUGxheWJhY2tdLCBbYiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSk7
CiAgICAgRVhQRUNUX0VRKFthIHJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2tdLCBb
YiByZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrXSk7CkBAIC0xMzYsNyArMTM2LDcg
QEAgVEVTVChDb2RpbmcsIFdLV2ViVmlldykKICAgICBbYSBzZXRBbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlczpZRVNdOwogICAgIFthIHNldEN1c3RvbVVzZXJBZ2VudDpAIkN1c3Rv
bVVzZXJBZ2VudCJdOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW2Egc2V0QWxsb3dzTGlua1ByZXZpZXc6WUVTXTsKICNlbHNlCiAgICAgW2Egc2V0
QWxsb3dzTGlua1ByZXZpZXc6Tk9dOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vy
dmljZXMuaD4KICNlbmRpZgogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvcHlVUkwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db3B5VVJMLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlVUkwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNl
cy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgpAQCAtNjAsNyArNjAsNyBAQCBOU1N0cmlu
ZyAqcmVhZFVSTEZyb21QYXN0ZWJvYXJkKCkKIAogc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlBcHBsaWNh
dGlvbkluaXRpYWxpemUoKTsKICNlbmRpZgogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvcHlpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5aW5nLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlpbmcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgVEVTVChDb3B5aW5nLCBXS1ByZWZlcmVuY2VzKQogICAg
IFJldGFpblB0cjxXS1ByZWZlcmVuY2VzPiBhID0gYWRvcHROUyhbW1dLUHJlZmVyZW5jZXMgYWxs
b2NdIGluaXRdKTsKICAgICBbYSBzZXRNaW5pbXVtRm9udFNpemU6MTBdOwogICAgIFthIHNldEph
dmFTY3JpcHRFbmFibGVkOk5PXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBbYSBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
OllFU107CiAjZWxzZQogICAgIFthIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHk6Tk9dOwpAQCAtNTgsNyArNTgsNyBAQCBURVNUKENvcHlpbmcsIFdLUHJlZmVyZW5jZXMp
CiAgICAgLy8gQ2hhbmdlIGFsbCBkZWZhdWx0cyBvbiB0aGUgY29waWVkIGluc3RhbmNlLgogICAg
IFtiIHNldE1pbmltdW1Gb250U2l6ZToxM107CiAgICAgW2Igc2V0SmF2YVNjcmlwdEVuYWJsZWQ6
WUVTXTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
YiBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5Ok5PXTsKICNlbHNlCiAg
ICAgW2Igc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTpZRVNdOwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0
YURldGVjdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIGJvb2wgcmFuU2NyaXB0
OwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvQWZ0ZXJO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlQWZ0ZXJDcmFzaC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlQWZ0ZXJDcmFzaC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jh
c2gubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
V0tfQVBJX0VOQUJMRUQKIAogVEVTVChXZWJLaXQsIERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlQWZ0ZXJDcmFzaCkKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRWRpdG9yU3RhdGVUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0JKHJldmlzaW9uIDIzNzI2
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRWRpdG9yU3RhdGVU
ZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIAotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjZW5kaWYKQEAgLTIzNCw3ICsyMzQsNyBAQCBU
RVNUKEVkaXRvclN0YXRlVGVzdHMsIFR5cGluZ0F0dHJpYnV0ZUxpCiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20vIiwgW1t0ZXN0SGFybmVzcyB3ZWJWaWV3XSBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYScpLmhy
ZWYiXSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogc3RhdGljIHZvaWQgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0
aW9uKFRlc3RXS1dlYlZpZXcgKndlYlZpZXcsIEJPT0wgZXhwZWN0ZWRUb0hhdmVUZXh0LCBOU1N0
cmluZyAqZGVzY3JpcHRpb24pCiB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0V4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V4aXRGdWxsc2NyZWVuT25FbnRlclBp
UC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9FeGl0RnVsbHNjcmVlbk9uRW50ZXJQaVAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgKFdLX0FQSV9FTkFCTEVE
ICYmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKKyNp
ZiAoV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0ZpbmRJblBhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAm
JiAhUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogCiB0eXBlZGVmIGVudW0gOiBOU1VJbnRlZ2VyIHsKICAgICBOU1RleHRGaW5kZXJBc3lu
Y2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAwLApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaXhlZExheW91dFNpemUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaXhlZExh
eW91dFNpemUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRml4ZWRMYXlvdXRTaXplLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykK
KyNpZiBXS19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIGJv
b2wgZml4ZWRMYXlvdXRTaXplRG9uZTsKIHN0YXRpYyBib29sIGZpeGVkTGF5b3V0U2l6ZUFmdGVy
TmF2aWdhdGlvbkRvbmU7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ZvbnRBdHRyaWJ1dGVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2VuZGlm
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR2VvbG9jYXRp
b24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9HZW9sb2NhdGlvbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9HZW9sb2NhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYm
IFBMQVRGT1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgpAQCAtMjY3LDQgKzI2Nyw0IEBAIFRFU1QoV2ViS2l0LCBEdXBsaWNhdGVHZW9sb2NhdGlv
bkF1dGhvcmkKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0ludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW50ZXJhY3Rpb25EZWFkbG9j
a0FmdGVyQ3Jhc2gubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25B
dFBvaW50OihDRwogCiBAZW5kCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVE
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKIAogc3RhdGljIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKnJlY3Vyc2l2ZUZpbmRIaWdobGlnaHRMb25nUHJlc3NSZWNvZ25p
emVyKFVJVmlldyAqdmlldykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTG9jYWxTdG9yYWdlQ2xlYXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VDbGVhci5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0
b3JhZ2VDbGVhci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIE5TU3RyaW5n
ICpzd2l6emxlZEJ1bmRsZUlkZW50aWZpZXJXZWJCb28KIAogTlNTdHJpbmcgKmRlZmF1bHRXZWJz
aXRlQ2FjaGVEaXJlY3RvcnkoKQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHJldHVybiBuaWw7CiAjZWxzZQogICAgIHJldHVybiBAIn4vTGlicmFy
eS9DYWNoZXMvVGVzdFdlYktpdEFQSS9XZWJLaXQiOwpAQCAtMTE4LDcgKzExOCw3IEBAIE5TU3Ry
aW5nICpkZWZhdWx0V2Vic2l0ZUNhY2hlRGlyZWN0b3J5KCkKIAogTlNTdHJpbmcgKmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGlzIGlzIHRvIG1pcnJvciBhIHF1aXJrIGluIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IGFuZCBjYXRj
aCBhbnkgcmVncmVzc2lvbnMuCiAgICAgcmV0dXJuIFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBw
Q2FjaGUiXTsKICNlbHNlCkBAIC0xMjgsNyArMTI4LDcgQEAgTlNTdHJpbmcgKmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0bwogCiBURVNUKFdLV2ViVmlldywgQ2xlYXJBcHBDYWNoZSkKIHsK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBp
T1MsIE1vYmlsZVNhZmFyaSBhbmQgd2ViYm9va21hcmtzZCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1l
IEFwcENhY2hlIGRpcmVjdG9yeS4KICAgICBUZXN0V2ViS2l0QVBJOjpJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGUoW05TQnVuZGxlIGNsYXNzXSwgQHNlbGVjdG9yKGJ1bmRsZUlkZW50aWZp
ZXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRCdW5kbGVJZGVudGlmaWVyV2ViQm9v
a21hcmtzRCkpOwogI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL05TRmlsZU1hbmFnZXJFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCShyZXZpc2lv
biAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05TRmls
ZU1hbmFnZXJFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lt
cG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIK
QEAgLTU4LDQgKzU4LDQgQEAgVEVTVChXZWJLaXQsIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMpCiAg
ICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6ZmlsZVBhdGggZXJyb3I6bmlsXTsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5n
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Tm93UGxheWluZy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmIFVT
RShNRURJQVJFTU9URSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpICYmIChQTEFURk9STShJ
T1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSAxMDEzMDQpKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFVTRShNRURJQVJFTU9URSkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTMw
NCkpCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBfY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgIFtfY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpb107Ci0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtfY29uZmlndXJhdGlvbiBzZXRBbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrOllFU107CiAgICAgICAgIFtfY29uZmlndXJhdGlvbiBfc2V0
SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOwogI2Vu
ZGlmCkBAIC0yNzYsNCArMjc2LDQgQEAgVEVTVF9GKE5vd1BsYXlpbmdUZXN0LCBWaWRlb0VsZW1l
bnRXaXRobwogICAgIEFTU0VSVF9ORSh3ZWJWaWV3UGlkKCksIGdldE5vd1BsYXlpbmdDbGllbnRQ
aWQoKSk7CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBVU0UoTUVESUFSRU1PVEUp
ICYmIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDEzMDQpKQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFVT
RShNRURJQVJFTU9URSkgJiYgKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDQpKQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxKQorI2lmIFdLX0FQSV9FTkFCTEVEICYm
IChQTEFURk9STShJT1NfRkFNSUxZKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gMTAxMjAxKQogCiBAaW50ZXJmYWNlIE5vd1BsYXlpbmdUZXN0V2ViVmlldyA6IFRlc3RXS1dl
YlZpZXcKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBoYXNBY3RpdmVOb3dQ
bGF5aW5nU2Vzc2lvbjsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUKE5vd1BsYXlpbmdDb250cm9s
c1Rlc3RzLCBOb3dQbGF5aW5nCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFU
Rk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC8vIEZJWE1FOiBSZS1lbmFibGUg
dGhpcyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChO
b3dQbGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQog
ewpAQCAtMjM4LDQgKzIzOCw0IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIERJU0FC
TEVEX04KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExP
V0VEID49IDEwMTIwMSkKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTIwMSkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVI
VE1MLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Bhc3RlSFRNTC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRl
IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJ
bWFnZS5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFzdGVNaXhlZENvbnRlbnQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMyMSwxNCArMzIxLDE0IEBAIFRFU1QoUGFzdGVNaXhlZENvbnRlbnQsIENvcHlB
bmRQYXN0ZVdpdGgKICAgICBbZGVzdGluYXRpb24gc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
Om1hcmt1cEZvckRlc3RpbmF0aW9uIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzYW1l
Oi8vIl1dOwogICAgIFtkZXN0aW5hdGlvbiBwYXN0ZTpuaWxdOwogICAgIEVYUEVDVF9XS19TVFJF
USgiYmFyIiwgW2Rlc3RpbmF0aW9uIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlIl0pOwotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEVYUEVDVF9UUlVFKFtkZXN0aW5hdGlvbiBj
YW5QZXJmb3JtQWN0aW9uOkBzZWxlY3RvcihwYXN0ZTopIHdpdGhTZW5kZXI6bmlsXSk7CiAjZW5k
aWYKIAogICAgIFtkZXN0aW5hdGlvbiBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6bWFya3Vw
Rm9yRGVzdGluYXRpb24gYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImRpZmZlcmVudDov
LyJdXTsKICAgICBbZGVzdGluYXRpb24gcGFzdGU6bmlsXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
IiIsIFtkZXN0aW5hdGlvbiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSJdKTsKLSNpZiBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBFWFBFQ1RfRkFMU0UoW2Rlc3RpbmF0aW9uIGNhblBl
cmZvcm1BY3Rpb246QHNlbGVjdG9yKHBhc3RlOikgd2l0aFNlbmRlcjpuaWxdKTsKICNlbmRpZgog
fQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
YXN0ZVJURkQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lu
Y2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgog
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1
aWNrTG9vay5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3QuaCIKQEAgLTIzMyw0ICsyMzMsNCBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tM
b29rQ29udGVudCkKICAgICBFWFBFQ1RfTlVMTChtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tM
b29rQ29udGVudCk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCAgICAgYXV0byByZW1vdGVPYmplY3QgPSByZXRhaW5QdHIoW1t3ZWJWCiAKICAgICBf
X2Jsb2NrIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgW3JlbW90ZU9iamVjdCByZW5k
ZXJJbWFnZVdpdGhXaWR0aDp3aWR0aCBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSBpbWFnZVNp
emUpIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgQ0dGbG9hdCBzY2FsZSA9IFtVSVNjcmVlbiBtYWluU2NyZWVuXS5zY2FsZTsKICNlbGlmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgQ0dGbG9hdCBzY2FsZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVu
XS5iYWNraW5nU2NhbGVGYWN0b3I7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9uc1BsdWdJbi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgLSAodm9pZClyZW5kZXJJbWFnZVdpdGhXaWR0
aDooTlNOdW1iZXIgKgogICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtfZnJhbWUganNDb250ZXh0
Rm9yV29ybGQ6W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5vcm1hbFdvcmxkXV07CiAg
ICAgSlNWYWx1ZSAqY29udGFpbmVyVmFsdWUgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250YWluZXInKSJdOwogICAgIFdLV2ViUHJvY2Vzc1Bs
dWdJbk5vZGVIYW5kbGUgKmNvbnRhaW5lck5vZGUgPSBbV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZSBub2RlSGFuZGxlV2l0aEpTVmFsdWU6Y29udGFpbmVyVmFsdWUgaW5Db250ZXh0OmNvbnRl
eHRdOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJ
SW1hZ2UgKmltYWdlID0gW2NvbnRhaW5lck5vZGUgcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOmtX
S1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdyB3aWR0aDp3aWR0aF07CiAjZWxpZiBQTEFU
Rk9STShNQUMpCiAgICAgTlNJbWFnZSAqaW1hZ2UgPSBbY29udGFpbmVyTm9kZSByZW5kZXJlZElt
YWdlV2l0aE9wdGlvbnM6a1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92ZXJmbG93IHdpZHRoOndp
ZHRoXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJy
b3dzaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2FmZUJyb3dzaW5nLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmICgoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KSkgJiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMpCisjaWYgKChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKSkgJiYgIWRlZmluZWQoX19pMzg2X18pICYmICFQTEFURk9STShJT1NNQUMp
CiAKICNpbXBvcnQgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1No
cmlua1RvRml0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2hyaW5rVG9GaXQubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2hyaW5rVG9GaXQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiAhUExBVEZP
Uk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBz
dGF0aWMgYm9vbCBzaHJpbmtUb0ZpdERvbmU7CiBzdGF0aWMgYm9vbCBzaHJpbmtUb0ZpdEFmdGVy
TmF2aWdhdGlvbkRvbmU7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgRVhQRUNUX1dLX1NU
UkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TKSAvLyBGSVhNRTogaGFuZ3MgaW4gdGhlIGlPUyBzaW11bGF0b3IK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2lt
dWxhdG9yCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhOYXZpZ2F0aW9uKQogewogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaXNpYmxlQ29udGVu
dFJlY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9WaXNpYmxlQ29udGVudFJlY3QubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVmlzaWJsZUNvbnRlbnRSZWN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYg
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xMTksNSArMTE5LDUgQEAgVEVTVChXZWJL
aXQsIFZpc2libGVDb250ZW50UmVjdF9DbGlwcGVkQgogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMSArMzYsMTEgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vydmlj
ZXMuaD4KICNlbmRpZgogCi0jZGVmaW5lIFVTRVNfTU9ERVJOX0FUVFJJQlVURURfU1RSSU5HX0NP
TlZFUlNJT04gKChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApKQorI2RlZmluZSBVU0VTX01PREVSTl9BVFRSSUJVVEVEX1NU
UklOR19DT05WRVJTSU9OICgoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkpCiAKICNpZiBXS19BUElfRU5BQkxF
RCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKFRWT1MpCiAKQEAgLTQ1NCw3ICs0
NTQsNyBAQCBCT09MIGlzQ29tcGxldGVseVRyYW5zcGFyZW50KE5TSW1hZ2UgKmltCiAKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHR5cGVk
ZWYgdm9pZCheSXRlbVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAq
KTsKIApAQCAtNDkyLDcgKzQ5Miw3IEBAIC0gKHZvaWQpZXhwZWN0VHlwZTooTlNTdHJpbmcgKil0
eXBlIHdpdGgKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVsdGlw
bGVBdHRhY2htZW50cygpCiB7CkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBwbGF0Zm9ybUNvcHlS
aWNoVGV4dFdpdGhNdWx0aXBsZUF0dAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwogICAgIFtwYXN0ZWJvYXJkIGNsZWFyQ29u
dGVudHNdOwogICAgIFtwYXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAWyByaWNoVGV4dC5nZXQoKSBd
XTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
YXV0byBpdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
W2l0ZW0gcmVnaXN0ZXJPYmplY3Q6cmljaFRleHQuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW1VJUGFzdGVib2FyZCBnZW5l
cmFsUGFzdGVib2FyZF0uaXRlbVByb3ZpZGVycyA9IEBbIGl0ZW0uZ2V0KCkgXTsKQEAgLTUyOSw3
ICs1MjksNyBAQCB2b2lkIHBsYXRmb3JtQ29weVJpY2hUZXh0V2l0aEltYWdlKCkKICAgICBOU1Bh
c3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsK
ICAgICBbcGFzdGVib2FyZCBjbGVhckNvbnRlbnRzXTsKICAgICBbcGFzdGVib2FyZCB3cml0ZU9i
amVjdHM6QFsgcmljaFRleHQuZ2V0KCkgXV07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdF0pOwogICAgIFtpdGVtIHJlZ2lzdGVyT2JqZWN0OnJpY2hUZXh0Lmdl
dCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxd
OwogICAgIFtVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdLml0ZW1Qcm92aWRlcnMgPSBA
WyBpdGVtLmdldCgpIF07CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBwbGF0Zm9ybUNvcHlQTkco
KQogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBh
c3RlYm9hcmRdOwogICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TUGFzdGVib2FyZFR5
cGVQTkddIG93bmVyOm5pbF07CiAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTp0ZXN0SW1hZ2VEYXRh
KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUE5HXTsKLSNlbGlmIFBMQVRGT1JNKElPUykKKyNl
bGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0g
W1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF07CiAgICAgYXV0byBpdGVtID0gYWRvcHRO
UyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW0gc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRd
OwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgRHJhZ0F0
dGFjaG1lbgogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIElu
c2VydERyb3BwZWRJbWFnZUFzQXR0YWNobWVudCkKIHsKQEAgLTE3NzUsNyArMTc3NSw3IEBAIFRF
U1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIERyYWdBdHRhY2htZW4KICAgICBbZHJhZ0FuZERyb3BT
aW11bGF0b3IgZW5kRGF0YVRyYW5zZmVyXTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tD
b250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVGVzdC5oIgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlv
bi5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBURVNUKFdl
YktpdCwgV0tIVFRQQ29va2llU3RvcmVIdHRwT25seSkgCiAgICAgW2Nvb2tpZXMgcmVsZWFzZV07
CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogVEVTVChXZWJL
aXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRpb25UaW1lKSAKIHsgICAKICAgICBhdXRvIGRhdGFT
dG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC00MDIsMTAg
KzQwMiwxMCBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVDcmVhdGlvblRpCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7
CiB9Ci0jZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkK
IAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3Byb2JsZW0v
MzUzNDQyMDI+IGlzIHJlc29sdmVkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDEzMDEpIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gMTEwMTAy
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8
PSAxMDEzMDEpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01BWF9BTExPV0VEIDw9IDExMDEwMikKIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZU5v
blBlcnNpc3RlbnQpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gbm9uUGVy
c2lzdGVudERhdGFTdG9yZTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQ
Q29va2llU3RvcmVDdXN0b20pCiAgICAgYXV0byBjdXN0b21EYXRhU3RvcmUgPSBhZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgcnVuVGVzdFdpdGhXZWJzaXRlRGF0
YVN0b3JlKGN1c3RvbURhdGFTdG9yZS5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEwMTMwMSkgfHwgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMTAxMDIpCisj
ZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDw9IDEwMTMwMSkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPD0gMTEwMTAyKQogCiBURVNUKFdlYktpdCwgQ29va2llT2JzZXJ2ZXJD
cmFzaCkKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQ
REZWaWV3U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2subW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXdTdGFibGVQcmVz
ZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25V
cGRhdGVDYWxsYmFjay5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYg
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIFRFU1QoV2ViS2l0LCBXS1BERlZpZXdTdGFibGVQcmVzZW50
YXRpb25VcGRhdGVDYWxsYmFjaykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tSZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEluZm8ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3RpdmF0
ZWRFbGVtZW50SW5mby5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElf
RU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
VVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgcnVuVW50aWxUYXNr
c0luRmxpZ2h0KHNpemVfdAogCiBhdXRvIGUgPSBFUEVSTTsKIAotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gVGhpcyB0ZXN0IGlzIHNvbWV0aW1lcyB0aW1p
bmcgb3V0IG9uIGlPUyAocmRhcjovL3Byb2JsZW0vMzM2NjU2NzYpLgogVEVTVChVUkxTY2hlbWVI
YW5kbGVyLCBESVNBQkxFRF9MZWFrczEpCiAjZWxzZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdTbmFwc2hvdC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1t
CShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2ViVmlld1NuYXBzaG90Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBA
IFRFU1QoV0tXZWJWaWV3LCBTbmFwc2hvdEltYWdlQmFzZUNhc2UpCiAgICAgd2luZG93ID0gYWRv
cHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1l
XSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmll
dzp3ZWJWaWV3LmdldCgpXTsKICAgICBiYWNraW5nU2NhbGVGYWN0b3IgPSBbd2luZG93IGJhY2tp
bmdTY2FsZUZhY3Rvcl07Ci0jZWxpZiBQTEFURk9STShJT1MpCisjZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHdpbmRvdyA9IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpbd2ViVmlldyBmcmFtZV1dKTsKICAgICBbd2luZG93IGFkZFN1YnZpZXc6d2ViVmlldy5n
ZXQoKV07CiAgICAgYmFja2luZ1NjYWxlRmFjdG9yID0gW1t3aW5kb3cgc2NyZWVuXSBzY2FsZV07
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24g
MjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzCiAgICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnNxbFBh
dGgucGF0aF0pOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VQYXRoLnBhdGhdKTsKIAotI2lmIFBMQVRG
T1JNKElPUykgfHwgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEzMDApCiAgICAgaW50IHJldHJ5Q291bnQgPSAzMDsKICAgICB3aGlsZSAocmV0cnlD
b3VudC0tKSB7CiAgICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6Y29va2llU3RvcmFnZUZpbGUucGF0aF0pCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2ll
cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNlbmRpZgogCkBA
IC0yNDAsNyArMjQwLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5RW5h
YgogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrOllFU107CiAjZW5kaWYKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tJbnB1dERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5wdXREZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjM3
MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnB1dERl
bGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChXZWJLaXQs
IEZvcm1TdWJtaXNzaW9uKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogVEVTVChX
ZWJLaXQsIEZvY3VzZWRFbGVtZW50SW5mbykKIHsKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUKFdl
YktpdCwgRm9jdXNlZEVsZW1lbnRJbmZvKQogICAgIEVYUEVDVF9XS19TVFJFUSgiZ2FycGx5Iiwg
W2N1cnJlbnRFbGVtZW50IGxhYmVsXSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9BdWRp
b1Nlc3Npb25DYXRlZ29yeUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0JKHJldmlz
aW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lv
cy9BdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9z
L1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJ
bkNvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQWNjZXNz
aW5nUGFzdGVkSW1hZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRMZWdhY3kvbWFjL0FjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQWNjZXNz
aW5nUGFzdGVkSW1hZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBv
cnQgPFdlYktpdC9ET00uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY2Nlc3NpYmlsaXR5VGVz
dHNJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0FjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFdLX0FQ
SV9FTkFCTEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKIAog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
QEAgLTExNiw1ICsxMTYsNSBAQCBURVNUKEFjY2Vzc2liaWxpdHlUZXN0cywgU3RvcmVTZWxlY3Rp
b24pCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykgJiYgV0tfQVBJX0VOQUJMRUQKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBXS19BUElfRU5BQkxFRAogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9B
Y3Rpb25TaGVldFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdC5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
IkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIu
aCIKQEAgLTM2OCw0ICszNjgsNCBAQCBURVNUKEFjdGlvblNoZWV0VGVzdHMsIENvcHlMaW5rV3Jp
dGVzVVJMCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCShy
ZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5k
RHJvcFRlc3RzSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElP
UykgJiYgV0tfQVBJX0VOQUJMRUQKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJDbGFzc01ldGhvZFN3
aXp6bGVyLmgiCiAjaW1wb3J0ICJEcmFnQW5kRHJvcFNpbXVsYXRvci5oIgpAQCAtMTkyOSw0ICsx
OTI5LDQgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTYW5pdAogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JU
KSAmJiBQTEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisjZW5kaWYgLy8gRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0ZvY3VzUHJlc2VydmF0aW9uVGVzdHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRm9jdXNQcmVz
ZXJ2YXRpb25UZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRm9jdXNQcmVzZXJ2YXRpb25UZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKLSNp
ZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCkBAIC0xMDUs
NCArMTA1LDQgQEAgVEVTVChGb2N1c1ByZXNlcnZhdGlvblRlc3RzLCBDaGFuZ2luZ0ZvYwogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0JKHJldmlzaW9u
IDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tf
QVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCkBAIC0yNjEsNCArMjYx
LDQgQEAgVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEtleWJvYXJkVHlwZUZvcgogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1JlbmRlcmluZ1Byb2dyZXNz
VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvUmVu
ZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
c3RhCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBURVNUKFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMsIERpZFJlbmRlclNpZ25pZmljYW50QW1v
dW50T2ZUZXh0KQogewpAQCAtNzEsNyArNzEsNyBAQCBURVNUKFJlbmRlcmluZ1Byb2dyZXNzVGVz
dHMsIERpZFJlbmRlclNpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZvYnNlcnZlZFNp
Z25pZmljYW50UmVuZGVyZWRUZXh0KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU2Nyb2xsVmlld0luc2V0VGVzdHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU2Nyb2xsVmll
d0luc2V0VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL1Njcm9sbFZpZXdJbnNldFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYm
IFBMQVRGT1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgpAQCAtMjA4LDQgKzIwOCw0IEBAIFRFU1QoU2Nyb2xsVmlld0luc2V0VGVz
dHMsIFJlc3RvcmVJbml0aWEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCi0jZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9TZXRUaW1lb3V0RnVuY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvU2V0VGltZW91dEZ1bmN0aW9uLm1tCShyZXZpc2lvbiAyMzcy
NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9TZXRUaW1lb3V0RnVuY3Rpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgi
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC05NSw0
ICs5NSw0IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBTZXRUaW1lb3V0RnVuY3Rpb24pCiAKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU3luY2hyb25vdXNUaW1lb3V0VGVz
dHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvU3luY2hy
b25vdXNUaW1lb3V0VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL1N5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogCi0jaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZP
Uk0oSU9TKQorI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCkBAIC03Niw1ICs3Niw1IEBAIFRFU1QoU3lu
Y2hyb25vdXNUaW1lb3V0VGVzdHMsIFVucmVzcG9uc2kKICAgICAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKIAotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9UZXN0SW5wdXREZWxlZ2F0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVnYXRl
LmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rl
c3RJbnB1dERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tf
QVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViS2l0L19X
S0ZvY3VzZWRFbGVtZW50SW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Zvcm1JbnB1dFNlc3Np
b24uaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJbnB1dERlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rlc3RJ
bnB1dERlbGVnYXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9UZXN0SW5wdXREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RJbnB1dERlbGVnYXRl
LmgiCiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VO
QUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAKQEAgLTY4LDQgKzY4LDQgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyB3aQogCiBAZW5kCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1Mp
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1RleHRBdXRvc2l6aW5nQm9vc3QubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVGV4dEF1dG9zaXppbmdC
b29zdC5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvVGV4dEF1dG9zaXppbmdCb29zdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYg
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogVEVTVChUZXh0QXV0b3Np
emluZ0Jvb3N0LCBDaGFuZ2VBdXRvc2l6aW5nQm9vc3RBdFJ1bnRpbWUpCiB7CkBAIC01NCw0ICs1
NCw0IEBAIFRFU1QoVGV4dEF1dG9zaXppbmdCb29zdCwgQ2hhbmdlQXV0b3NpemkKICAgICBFWFBF
Q1RfRVEoMzgsIGJvb3N0ZWRTaXplLmhlaWdodCk7CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRCAmJiBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1VJUGFz
dGVib2FyZFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1VJUGFzdGVib2FyZFRlc3RzLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9VSVBhc3RlYm9hcmRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFdLX0FQSV9FTkFCTEVECisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJ
X0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xs
Vmlld0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKyNpZiBXS19BUElfRU5BQkxFRCAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgpAQCAtNzEsNCArNzEsNCBAQCBURVNUKFdLU2Nyb2xs
Vmlld1Rlc3RzLCBQb3NpdGlvbkZpeGVkTGF5CiAgICAgRVhQRUNUX1RSVUUoZm91bmRMYXllckZv
ckZpeGVkTmF2aWdhdGlvbkJhcik7CiB9CiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQ
TEFURk9STShJT1MpCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0F1dG9m
aWxsVGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
V0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBXS19B
UElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQ2xhc3NNZXRob2RTd2l6emxlci5oIgogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKQEAgLTE4Niw0ICsxODYsNCBAQCBURVNUKFdLV2ViVmll
d0F1dG9maWxsVGVzdHMsIEF1dG9maWxsUmVxCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKIAotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0J
KHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2Vi
Vmlld0VkaXRBY3Rpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBXS19BUElfRU5BQkxFRAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCkBAIC0xOTIsNCAr
MTkyLDQgQEAgVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0Rm9udEZhbWlseQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIFdL
X0FQSV9FTkFCTEVECisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VO
QUJMRUQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9w
U2ltdWxhdG9yLmgJKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEy
IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5wdXREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtp
dEFkZGl0aW9ucy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFz
ZSkgewogICAgIERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQgPSAwLApAQCAtNzEsNyArNzEsNyBA
QCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlCiAtIChVSURyYWdJbnRl
cmFjdGlvbiAqKWRyYWdJbnRlcmFjdGlvbjsKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW50ZXJmYWNlIERyYWdBbmRE
cm9wU2ltdWxhdG9yIDogTlNPYmplY3Q8V0tVSURlbGVnYXRlUHJpdmF0ZSwgX1dLSW5wdXREZWxl
Z2F0ZT4KIApAQCAtODUsNyArODUsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAq
LCBOU1ZhbHVlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8X1dLQXR0
YWNobWVudCAqPiAqcmVtb3ZlZEF0dGFjaG1lbnRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6
KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0
TG9jYXRpb24gdG86KENHUG9pbnQpZW5kTG9jYXRpb24gYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9j
YXRpb25zOihQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwKWFkZGl0aW9uYWxJdGVtUmVxdWVzdExv
Y2F0aW9uczsKQEAgLTEwOCw3ICsxMDgsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJl
ciAqLCBOU1ZhbHVlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBsYXN0
S25vd25EcmFnQ2FyZXRSZWN0OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0Fy
cmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqbGlmdFByZXZpZXdzOwogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFU
Rk9STShNQUMpCiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDcgKzExNiw3IEBAIC0gKHZvaWQpX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b24KIAogICAgIHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlID0gbmlsOwogCi0jaWYgUExBVEZPUk0o
SU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX19ibG9jayBib29sIHByZXNlbnRh
dGlvblVwZGF0ZUhhcHBlbmVkID0gZmFsc2U7CiAgICAgW3NlbGYgX2RvQWZ0ZXJOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZUZvclRlc3Rpbmc6XnsK
ICAgICAgICAgcHJlc2VudGF0aW9uVXBkYXRlSGFwcGVuZWQgPSB0cnVlOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgJKHJldmlzaW9uIDIzNzI2MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAKIEBjbGFzcyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247
CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBjbGFzcyBf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKIEBwcm90b2NvbCBVSVRleHRJbnB1dE11bHRpRG9jdW1l
bnQ7CiAjZW5kaWYKQEAgLTcwLDcgKzcwLDcgQEAKIC0gKHZvaWQpY29sbGFwc2VUb0VuZDsKIEBl
bmQKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVy
ZmFjZSBUZXN0V0tXZWJWaWV3IChJT1NPbmx5KQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBVSVZpZXcgPFVJVGV4dElucHV0LCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQ+ICp0ZXh0
SW5wdXRDb250ZW50VmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUmV0YWlu
UHRyPE5TQXJyYXk+IHNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGU7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgPHd0Zi9tYWMvQXBwS2l0Q29t
cGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC0zMzksNyAr
MzM5LDcgQEAgLSAodm9pZCljb2xsYXBzZVRvRW5kCiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2Vi
VmlldyAoSU9TT25seSkKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERy
b3BTaW11bGF0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0Fu
ZERyb3BTaW11bGF0b3IuaCIKIAotI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KElPUykgJiYgV0tfQVBJX0VOQUJMRUQKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpAQCAtNzA5LDQg
KzcwOSw0IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGkKIAogQGVu
ZAogCi0jZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TKSAmJiBX
S19BUElfRU5BQkxFRAorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgJKHJldmlzaW9uIDIzNzI2MCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CiAKQEAgLTQyLDQgKzQyLDQgQEAKIAogQGVuZAogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5t
bQkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2Vi
Vmlld0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCIKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KIApAQCAtOTQsNCArOTQsNCBAQCAtICh2b2lkKXNldERpc21pc3NhbEhhbmRs
ZXI6KGRpc3BhdGNoX2JsCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
VUlLaXRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQ
SS5oCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dFRyYWl0cy5oPgogCkBAIC0x
NjgsNCArMTY4LDQgQEAgV1RGX0VYVEVSTl9DX0VORAogKyAoQk9PTClpc0luSGFyZHdhcmVLZXli
b2FyZE1vZGU7CiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6cmVhdHRhY2hQYWdlVG9XZWJQcgogY29uc3QgY2hhciogVGVzdENv
bnRyb2xsZXI6OndlYlByb2Nlc3NOYW1lKCkKIHsKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0
byBub3QgaGFyZGNvZGUgdGhlIHByb2Nlc3MgbmFtZS4KLSNpZiBQTEFURk9STShJT1MpICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudCI7CiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gImNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCI7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBj
b25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6d2ViUHJvY2Vzc05hCiBjb25zdCBjaGFyKiBUZXN0
Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NOYW1lKCkKIHsKICAgICAvLyBGSVhNRTogRmluZCBh
IHdheSB0byBub3QgaGFyZGNvZGUgdGhlIHByb2Nlc3MgbmFtZS4KLSNpZiBQTEFURk9STShJT1Mp
ICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICByZXR1cm4gImNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya2luZyI7CiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5EZXZlbG9wbWVudCI7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSA8
Q2FyYm9uL0NhcmJvbi5oPgogI2VuZGlmCiAKQEAgLTE4MiwxMCArMTgyLDEwIEBAIHZvaWQgVGVz
dEludm9jYXRpb246Omludm9rZSgpCiAgICAgZHVtcFJlc3VsdHMoKTsKIAogZW5kOgotI2lmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZ290SW5p
dGlhbFJlc3BvbnNlKQogICAgICAgICBXS0luc3BlY3RvckNsb3NlKFdLUGFnZUdldEluc3BlY3Rv
cihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpKSk7Ci0j
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogICAgIGlmIChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhtX29wdGlvbnMsIFRlc3RDb250cm9sbGVyOjpSZXNldFN0YWdlOjpBZnRlclRl
c3QpKQogICAgICAgICByZXR1cm47CkBAIC04NTIsNyArODUyLDcgQEAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZAogICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCIp
KSB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVh
blJlZj4gcmVzdWx0KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShJc1NlY3VyZUV2ZW50SW5wdXRF
bmFibGVkKCkpKTsKICNlbHNlCiAgICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gcmVz
dWx0KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShmYWxzZSkpOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNW
YWxpZCgpIGMKIH0KIAogLy8gaU9TIHNwZWNpZmljIG1ldGhvZHMKLSNpZiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlkZW50aWZpZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dHJhaXRzKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRU
ZXh0UG9zaXRpb24oKSB7IHJldHVybiAwOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0CiAgICAgV0tCdW5kbGVTZXRQb3B1cEJs
b2NraW5nRW5hYmxlZChtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIGZhbHNlKTsKICAgICBXS0J1bmRs
ZVNldEFsbG93U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMUyhtX2J1bmRsZSwgbV9wYWdlR3JvdXAs
IGZhbHNlKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFdLQnVuZGxlUGFnZVNldFVzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24ocGFnZSgp
LT5wYWdlKCksICFib29sZWFuRm9yS2V5KHNldHRpbmdzLCAiVXNlRmxleGlibGVWaWV3cG9ydCIp
KTsKICNlbmRpZgogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9UZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlzaW9uIDIzNzI2MCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgIkluamVjdGVk
QnVuZGxlLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3Rv
clVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKQEAgLTczLDcgKzczLDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdAogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
VGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQogewotI2lmIFBMQVRGT1JNKElPUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBudWxscHRyOwogI2Vsc2UKICAg
ICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwg
dGhlbiBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyIHdpbGwgd29yay4KSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAkocmV2aXNp
b24gMjM3MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL01E
NS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgPExhdW5jaFNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6IGdldCBr
VVRUeXBlUE5HIGZyb20gTW9iaWxlQ29yZVNlcnZpY2VzIG9uIGlPUwogc3RhdGljIGNvbnN0IENG
U3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOwogI2VuZGlmCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCShyZXZpc2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
dm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29ucwogICAgIGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLl9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsK
ICAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fYXBwbGVQYXlFbmFibGVkID0gWUVTOwog
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IFBMQVRGT1JNKElPUykKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZChXS0NvbnRl
eHRHZXRDb29raWVNYW5hZ2VyKGNvbnRleHQpLCB0cnVlKTsKICNlbmRpZgogCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnMKICAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeTpOT107CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrID0gWUVTOwogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9pbmxpbmVNZWRpYVBs
YXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POwogICAgIGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLl9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IE5POwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmkK
ICNpZiBXS19BUElfRU5BQkxFRAogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24gY29weV0pOwogCi0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKG9wdGlvbnMudXNlRGF0YURldGVjdGlvbikKICAgICAgICAgW2NvcGllZENvbmZp
Z3VyYXRpb24gc2V0RGF0YURldGVjdG9yVHlwZXM6V0tEYXRhRGV0ZWN0b3JUeXBlQWxsXTsKICAg
ICBpZiAob3B0aW9ucy5pZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKQEAgLTIzNiw3ICsyMzYs
NyBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0
ZWJvYXJkXSBkYXRhRm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07Ci0jZWxpZiBQTEFURk9S
TShJT1MpCisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRGF0YSAqZGF0YSA9IFtb
VUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3RlYm9hcmRUeXBlOldl
YkFyY2hpdmVQYm9hcmRUeXBlXTsKICNlbmRpZgogICAgIGlmICghZGF0YSkKQEAgLTI5OCw3ICsy
OTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLCiB2b2lkIFRl
c3RDb250cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVL
ZXlCYXNlNjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0
aW9uVGFnQmFzZTY0KQogewogICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBA
ewogICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQ
cmltZVJhbmRvbSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktl
eUNsYXNzUHJpdmF0ZSwKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjph
ZGRUZXN0S2V5VG9LZXljaGFpCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4o
Y29uc3QgU3RyaW5nJiBhdHRyTGFiZWwpCiB7CiAgICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBM
QVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRGljdGlvbmFyeSog
ZGVsZXRlUXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsCkBAIC0zMzgsNyArMzM4LDcg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbgogYm9vbCBUZXN0Q29u
dHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKICAgICAvLyBGSVhNRSgxODI3NzIp
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0
aW9uYXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NL
ZXksCiAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1By
aXZhdGUsCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dl
YlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RS
dW5uZXJXS1dlYlZpZXcuaAkocmV2aXNpb24gMjM3MjYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKIAogQGludGVyZmFjZSBUZXN0UnVubmVyV0tXZWJWaWV3IDogV0tXZWJWaWV3CiAK
LSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25D
YWxsYmFjaykodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEVu
ZEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFjaykodm9pZCk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMzcyNjApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJX
S1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0VGVzdFNQSS5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIEBpbnRlcmZhY2UgV0tXZWJW
aWV3ICgpCkBAIC03MCw3ICs3MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKSB7CkBAIC0y
NTgsNyArMjU4LDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaQog
ICAgIFtzZWxmIF9pbnZva2VIaWRlS2V5Ym9hcmRDYWxsYmFja0lmTmVjZXNzYXJ5XTsKIH0KIAot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiBAZW5kCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDIzNzI2MCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVSVNjcmlwdENvbnRy
b2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJISURFdmVudEdlbmVyYXRvci5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3
LmgiCkBAIC03ODYsNCArNzg2LDQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbXBsZXRl
QmFja1N3aQogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>