<?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>200539</bug_id>
          
          <creation_ts>2019-08-08 09:06:55 -0700</creation_ts>
          <short_desc>[FTW] Get WebKit, WebKit2, and MiniBrowser building and executing</short_desc>
          <delta_ts>2019-11-29 01:08:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559526</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 09:06:55 -0700</bug_when>
    <thetext>This patch gets the remaining pieces of WebKit needed to run MiniBrowser working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559533</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-08 09:20:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/54082550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559572</commentid>
    <comment_count>2</comment_count>
      <attachid>375823</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 11:06:39 -0700</bug_when>
    <thetext>Created attachment 375823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559575</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-08 11:09:58 -0700</bug_when>
    <thetext>Attachment 375823 did not pass style-queue:


ERROR: Source/WebKit/PlatformFTW.cmake:177:  Alphabetical sorting problem. &quot;D2d1.lib&quot; should be before &quot;PRIVATE&quot;.  [list/order] [5]
Total errors found: 1 in 73 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>1559591</commentid>
    <comment_count>4</comment_count>
      <attachid>375826</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 11:33:09 -0700</bug_when>
    <thetext>Created attachment 375826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559592</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-08 11:36:48 -0700</bug_when>
    <thetext>Attachment 375826 did not pass style-queue:


ERROR: Source/WebKit/PlatformFTW.cmake:177:  Alphabetical sorting problem. &quot;D2d1.lib&quot; should be before &quot;PRIVATE&quot;.  [list/order] [5]
Total errors found: 1 in 68 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>1559633</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 12:59:09 -0700</bug_when>
    <thetext>Windows is generating a weird error, that Google searching indicates is caused by a machine configuration issue:

c:\program files (x86)\windows kits\10\include\10.0.17134.0\cppwinrt\winrt\base.h(10253): error C2039: &apos;GetSystemTimePreciseAsFileTime&apos;: is not a member of &apos;`global namespace&apos;&apos; [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
c:\program files (x86)\windows kits\10\include\10.0.17134.0\cppwinrt\winrt\base.h(10253): error C3861: &apos;GetSystemTimePreciseAsFileTime&apos;: identifier not found [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]

We do not use or reference &apos;GetSystemTimePreciseAsFileTime&apos; anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559638</commentid>
    <comment_count>7</comment_count>
      <attachid>375826</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 13:09:09 -0700</bug_when>
    <thetext>Comment on attachment 375826
Patch

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

&gt; Source/WebKitLegacy/win/WebKitPrefix.h:34
&gt; +#include &lt;winrt/Windows.Foundation.Collections.h&gt;

Oh whoops! This is the build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559641</commentid>
    <comment_count>8</comment_count>
      <attachid>375834</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-08 13:16:55 -0700</bug_when>
    <thetext>Created attachment 375834
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559659</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-08 14:24:45 -0700</bug_when>
    <thetext>Attachment 375834 did not pass style-queue:


ERROR: Source/WebKit/PlatformFTW.cmake:177:  Alphabetical sorting problem. &quot;D2d1.lib&quot; should be before &quot;PRIVATE&quot;.  [list/order] [5]
Total errors found: 1 in 67 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>1559671</commentid>
    <comment_count>10</comment_count>
      <attachid>375834</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-08 15:04:06 -0700</bug_when>
    <thetext>Comment on attachment 375834
Patch for landing

Clearing flags on attachment: 375834

Committed r248444: &lt;https://trac.webkit.org/changeset/248444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559672</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-08 15:04:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594147</commentid>
    <comment_count>12</comment_count>
      <attachid>375834</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-29 01:08:45 -0800</bug_when>
    <thetext>Comment on attachment 375834
Patch for landing

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

&gt; Source/WebKitLegacy/CMakeLists.txt:63
&gt; +     if (APPLE)

Filed: Bug 204695 – [AppleWin] WebKitQuartzCoreAdditions.dll isn&apos;t compiled since r248444</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375823</attachid>
            <date>2019-08-08 11:06:39 -0700</date>
            <delta_ts>2019-08-08 11:33:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200539-20190808110636.patch</filename>
            <type>text/plain</type>
            <size>159496</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4
LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFdd
IEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNGVFcu
Y21ha2U6CisKIDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFu
ZCBORVdTIGZvciAyLjI1LjQgcmVsZWFzZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2Vi
S2l0MiwgYW5kIE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1GVFcuY21ha2U6
IEFkZGVkLgorCiAyMDE5LTA3LTE3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgQU5HTEUgd29yayBpbnNpZGUgV2ViS2l0MidzIHNhbmRib3gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKyMgV2UncmUgdGFyZ2V0aW5nIFdpbmRvd3MgMTAgd2hp
Y2ggd2lsbCBoYXZlIERpcmVjdFggMTEgb24gaXQgc28gcmVxdWlyZSB0aGF0CisjIGJ1dCBtYWtl
IERpcmVjdFggOSBvcHRpb25hbAorCitsaXN0KEFQUEVORCBBTkdMRV9ERUZJTklUSU9OUworICAg
IEdMX0FQSUNBTEw9CisgICAgR0xfQVBJPQorICAgIE5PTUlOTUFYCispCisKK2lmIChVU0VfQU5H
TEVfRUdMKQorICAgICMgV2UncmUgdGFyZ2V0aW5nIFdpbmRvd3MgMTAgd2hpY2ggd2lsbCBoYXZl
IERpcmVjdFggMTEKKyAgICBsaXN0KEFQUEVORCBBTkdMRV9TT1VSQ0VTCisgICAgICAgICR7YW5n
bGVfc3lzdGVtX3V0aWxzX3NvdXJjZXNfd2lufQorICAgICAgICAke2FuZ2xlX3RyYW5zbGF0b3Jf
aGxzbF9zb3VyY2VzfQorCisgICAgICAgICR7bGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzfQor
ICAgICAgICAke2xpYmFuZ2xlX2QzZDExX3NvdXJjZXN9CisgICAgICAgICR7bGliYW5nbGVfZDNk
MTFfd2luMzJfc291cmNlc30KKyAgICApCisKKyAgICBsaXN0KEFQUEVORCBBTkdMRV9ERUZJTklU
SU9OUworICAgICAgICBBTkdMRV9FTkFCTEVfSExTTAorICAgICAgICBBTkdMRV9FTkFCTEVfRDNE
MTEKKyAgICApCisKKyAgICBsaXN0KEFQUEVORCBBTkdMRUdMRVN2Ml9MSUJSQVJJRVMgZHhndWlk
KQorCisgICAgIyBEaXJlY3RYIDkgc3VwcG9ydCBzaG91bGQgYmUgb3B0aW9uYWwgYnV0IEFOR0xF
IHdpbGwgbm90IGNvbXBpbGUgd2l0aG91dCBpdAorICAgIGxpc3QoQVBQRU5EIEFOR0xFX1NPVVJD
RVMgJHtsaWJhbmdsZV9kM2Q5X3NvdXJjZXN9KQorICAgIGxpc3QoQVBQRU5EIEFOR0xFX0RFRklO
SVRJT05TIEFOR0xFX0VOQUJMRV9EM0Q5KQorICAgIGxpc3QoQVBQRU5EIEFOR0xFR0xFU3YyX0xJ
QlJBUklFUyBkM2Q5KQorZW5kaWYgKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcz
IEBACisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGlu
ZyBhbmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpyZW5kZXJUYXJnZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpzdXJmYWNlIGNvbnN0
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6fkJhY2tpbmdTdG9yZUJhY2tlbmREaXJl
Y3QyREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJE
SW1wbDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURpcmVjdDJESW1hZ2VTdXJm
YWNlV2l0aEZhc3RNYWxsb2MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpESUJQ
aXhlbERhdGE6OkRJQlBpeGVsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3Qy
RE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpmaWxsUmVjdFdpdGhH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6UGxhdGZv
cm1Db250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXJlY3Qy
RDo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6flBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0
YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBs
YXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmJpdG1hcFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmJpdG1hcFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0MkQ6OmNyZWF0ZVdpY0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3Qy
RDo6Y3JlYXRlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9u
ZVN1cmZhY2VUb0Fub3RoZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRFV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OkdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6OnNldEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpiZWdp
bkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
OjplbmREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5EcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ6OmJlZ2luRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRDo6ZW5kRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHRTdGF0ZVNhdmVyOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6On5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNv
bnN0KToKKwogMjAxOS0wOC0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZG9wdCBub24tZGVwcmVjYXRlZCBDR0NvbG9yU3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFj
a2VuZERpcmVjdDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFj
a2VuZERpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHdpbmNvZGVjLmg+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAoraW50ZXJmYWNlIElEMkQxQml0bWFwOworaW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJn
ZXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDMsOCBAQCBjbGFzcyBCYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkJhY2tpbmdT
dG9yZUJhY2tlbmREaXJlY3QyRCgpID0gZGVmYXVsdDsKIAotICAgIElXSUNCaXRtYXAqIHN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKyAgICBJRDJEMURDUmVuZGVy
VGFyZ2V0KiByZW5kZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRhcmdldC5nZXQo
KTsgfQorICAgIElEMkQxQml0bWFwKiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNl
LmdldCgpOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpID0gMDsKQEAgLTUzLDggKzU1LDggQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zdXJmYWNl
OwotICAgIHZvaWQqIG1fc3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9OworICAgIENPTVB0
cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKKyAgICBDT01QdHI8SUQyRDFC
aXRtYXA+IG1fc3VyZmFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0
MkRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbC5jcHAJKHJldmlzaW9uIDI0ODQw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjEgKzQwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxIeXN0ZXJl
c2lzRHVyYXRpb24geyAzMDBfbXMgfTsKIAotc3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBjcmVh
dGVEaXJlY3QyREltYWdlU3VyZmFjZVdpdGhGYXN0TWFsbG9jKGNvbnN0IEludFNpemUmIHNpemUs
IGRvdWJsZSBkZXZpY2VTY2FsZUZhY3Rvciwgdm9pZComIGJhY2tpbmdTdG9yZURhdGEpCi17Ci0g
ICAgYXV0byBieXRlc1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4oc2l6ZS53aWR0aCgpKTsKLSAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVy
Zmxvdz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oc2l6ZS5o
ZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJhY2tpbmdTdG9yZURhdGEgPSBmYXN0
WmVyb2VkTWFsbG9jKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKLQotICAgIHJldHVybiBEaXJlY3Qy
RDo6Y3JlYXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRGF0YShiYWNraW5nU3RvcmVEYXRhLCBz
aXplLCBieXRlc1BlclJvdy51bnNhZmVHZXQoKSk7Ci19Ci0KIEJhY2tpbmdTdG9yZUJhY2tlbmRE
aXJlY3QyREltcGw6OkJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBCYWNraW5nU3RvcmVCYWNr
ZW5kRGlyZWN0MkQoc2l6ZSkKICAgICAsIG1fc2Nyb2xsZWRIeXN0ZXJlc2lzKFt0aGlzXShQQUw6
Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgewpAQCAtNjIsMTUgKzQ3LDE1IEBAIEJhY2tpbmdTdG9y
ZUJhY2tlbmREaXJlY3QyREltcGw6OkJhY2tpbmcKICAgICAgICAgICAgIG1fc2Nyb2xsU3VyZmFj
ZSA9IG51bGxwdHI7CiAgICAgICAgIH0sIHNjcm9sbEh5c3RlcmVzaXNEdXJhdGlvbikKIHsKKyAg
ICBtX3JlbmRlclRhcmdldCA9IFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElSZW5kZXJUYXJn
ZXQoKTsKKwogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKICAgICBzY2FsZWRTaXpl
LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBtX3N1cmZhY2UgPSBjcmVhdGVEaXJlY3Qy
REltYWdlU3VyZmFjZVdpdGhGYXN0TWFsbG9jKHNjYWxlZFNpemUsIGRldmljZVNjYWxlRmFjdG9y
LCBtX3N1cmZhY2VCYWNraW5nRGF0YSk7CisgICAgbV9zdXJmYWNlID0gRGlyZWN0MkQ6OmNyZWF0
ZUJpdG1hcChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2NhbGVkU2l6ZSk7CiB9CiAKIEJhY2tpbmdT
dG9yZUJhY2tlbmREaXJlY3QyREltcGw6On5CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBs
KCkKIHsKLSAgICBmYXN0RnJlZShtX3N1cmZhY2VCYWNraW5nRGF0YSk7Ci0gICAgZmFzdEZyZWUo
bV9zY3JvbGxTdXJmYWNlQmFja2luZ0RhdGEpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZUJhY2tl
bmREaXJlY3QyREltcGw6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJ
bnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC04MywxMCArNjgsMTEgQEAgdm9pZCBCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
c2Nyb2xsU3VyZmFjZSkgewotICAgICAgICBhdXRvIHNpemUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6
ZShtX3N1cmZhY2UuZ2V0KCkpOworICAgICAgICBhdXRvIGZsb2F0U2l6ZSA9IERpcmVjdDJEOjpi
aXRtYXBTaXplKG1fc3VyZmFjZS5nZXQoKSk7CisgICAgICAgIEludFNpemUgc2l6ZShmbG9hdFNp
emUud2lkdGgoKSwgZmxvYXRTaXplLmhlaWdodCgpKTsKICAgICAgICAgYXV0byBzY2FsZSA9IERp
cmVjdDJEOjpiaXRtYXBSZXNvbHV0aW9uKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VChzY2FsZS54KCkgPT0gc2NhbGUueSgpKTsKLSAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gY3Jl
YXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRmFzdE1hbGxvYyhzaXplLCBzY2FsZS54KCksIG1f
c2Nyb2xsU3VyZmFjZUJhY2tpbmdEYXRhKTsKKyAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gRGly
ZWN0MkQ6OmNyZWF0ZUJpdG1hcChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2l6ZSk7CiAgICAgfQog
CiAgICAgRGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIobV9zdXJmYWNl
LmdldCgpLCBtX3Njcm9sbFN1cmZhY2UuZ2V0KCksIHNjcm9sbE9mZnNldCwgdGFyZ2V0UmVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpZiBVU0UoRElSRUNUMkQpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5k
RGlyZWN0MkQuaCIKLSNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNp
c0FjdGl2aXR5Lmg+CiAKIGludGVyZmFjZSBJV0lDQml0bWFwOwpAQCAtNDMsOCArNDIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zY3JvbGxTdXJm
YWNlOwotICAgIHZvaWQqIG1fc2Nyb2xsU3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9Owor
ICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gbV9zY3JvbGxTdXJmYWNlOwogCiAgICAgUEFMOjpIeXN0
ZXJlc2lzQWN0aXZpdHkgbV9zY3JvbGxlZEh5c3RlcmVzaXM7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9ESUJQaXhlbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxNSBAQCB2b2lk
IERJQlBpeGVsRGF0YTo6aW5pdGlhbGl6ZShIQklUTUFQIGJpCiAgICAgbV9iaXRzUGVyUGl4ZWwg
PSBibXBJbmZvLmJtQml0c1BpeGVsOwogfQogCitESUJQaXhlbERhdGE6OkRJQlBpeGVsRGF0YSh2
b2lkKiBkYXRhLCBJbnRTaXplIHNpemUpCisgICAgOiBtX2JpdG1hcEJ1ZmZlcihyZWludGVycHJl
dF9jYXN0PFVJbnQ4Kj4oZGF0YSkpCisgICAgLCBtX2JpdG1hcEJ1ZmZlckxlbmd0aCg4ICogc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9i
eXRlc1BlclJvdyg4ICogc2l6ZS53aWR0aCgpKQorICAgICwgbV9iaXRzUGVyUGl4ZWwoOCkKK3sK
K30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgRElCUGl4ZWxEYXRhOjp3cml0ZVRvRmlsZShMUENX
U1RSIGZpbGVQYXRoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RJQlBpeGVsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIERJQlBpeGVs
RGF0YShIQklUTUFQKTsKKyAgICBESUJQaXhlbERhdGEodm9pZCogZGF0YSwgSW50U2l6ZSk7CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNDcgKzU1
LDYgQEAgbmFtZXNwYWNlIERpcmVjdDJEIHsKIGVudW0gUGF0dGVybkFkanVzdG1lbnQgeyBOb0Fk
anVzdG1lbnQsIEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSB9OwogZW51bSBBbHBoYVByZXNl
cnZhdGlvbiB7IERvTm90UHJlc2VydmVBbHBoYSwgUHJlc2VydmVBbHBoYSB9OwogCi0KLWNsYXNz
IFBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtQ29udGV4
dFN0YXRlU2F2ZXIoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIGNvbnRleHQsIGJvb2wgc2F2ZUFu
ZFJlc3RvcmUgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAs
IG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAobV9z
YXZlQW5kUmVzdG9yZSkKLSAgICAgICAgICAgIG1fY29udGV4dC5zYXZlKCk7Ci0gICAgfQotCi0g
ICAgflBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2F2
ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0KLQot
ICAgIHZvaWQgc2F2ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUp
OwotICAgICAgICBtX2NvbnRleHQuc2F2ZSgpOwotICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fc2F2ZUFuZFJlc3RvcmUpOwotICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgICAg
ICBtX3NhdmVBbmRSZXN0b3JlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRTYXZlKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVBbmRSZXN0b3JlOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgbV9jb250ZXh0OwotICAgIGJv
b2wgbV9zYXZlQW5kUmVzdG9yZSB7IGZhbHNlIH07Ci19OwotCiAvLyBGSVhNRTogUmVwbGFjZSBv
bmNlIEdyYXBoaWNzQ29udGV4dDo6ZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgo
KQogLy8gaXMgcmVmYWN0b3JlZCBhcyBhIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24uCiBzdGF0aWMg
ZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQgc3Ryb2tlV2lk
dGgsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCkBAIC01
MjEsNyArNDgwLDcgQEAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbgog
ICAgIEZpbGxTb3VyY2UgZmlsbFdpdGhIb2xlU291cmNlID0gZmlsbFNvdXJjZTsKICAgICBmaWxs
V2l0aEhvbGVTb3VyY2UuZmlsbFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZDsKIAotICAgIGZpbGxQ
YXRoKHBsYXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFNvdXJjZSwgc2hhZG93U3RhdGUpOworICAg
IGZpbGxQYXRoKHBsYXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFdpdGhIb2xlU291cmNlLCBzaGFk
b3dTdGF0ZSk7CiB9CiAKIHZvaWQgZmlsbFJlY3RXaXRoR3JhZGllbnQoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBJRDJEMUJy
dXNoKiBncmFkaWVudCkKQEAgLTUzNCw2ICs0OTMsOCBAQCB2b2lkIGZpbGxSZWN0V2l0aEdyYWRp
ZW50KFBsYXRmb3JtQ29udGV4CiAgICAgICAgIGNvbnN0IEQyRDFfUkVDVF9GIGQyZFJlY3QgPSBy
ZWN0OwogICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIGdyYWRp
ZW50KTsKICAgICB9OworCisgICAgZHJhd1dpdGhvdXRTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBy
ZWN0LCBkcmF3RnVuY3Rpb24pOwogfQogCiB2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3Vy
Y2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKQEAgLTczNSwx
MiArNjk2LDczIEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJgogICAg
IH0pOwogfQogCi0vKgotdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFN0cm9r
ZVNvdXJjZSYgc3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqIHNjYWxlZEZvbnQs
IGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8RGlyZWN0V3JpdGVHbHlw
aFR5cGU+JiBnbHlwaHMsIGZsb2F0IHhPZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRv
d09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQorCit2b2lkIGRyYXdHbHlwaHMoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYg
ZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQm
IGZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8dW5zaWduZWQg
c2hvcnQ+JiBnbHlwaHMsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywg
Y29uc3QgVmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+JiBnbHlwaE9mZnNldHMsIGZsb2F0IHhP
ZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNo
YWRvd0NvbG9yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgYXV0byByZW5kZXJUYXJn
ZXQgPSBwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCk7CisgICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC5zYXZlKCk7CisKKyAgICBEMkQxX01BVFJJWF8zWDJfRiBtYXRyaXg7CisgICAg
cmVuZGVyVGFyZ2V0LT5HZXRUcmFuc2Zvcm0oJm1hdHJpeCk7CisKKyAgICAvKgorICAgIC8vIEZJ
WE1FOiBHZXQgU3ludGhldGljIE9ibGlxdWUgd29ya2luZworICAgIGlmIChwbGF0Zm9ybURhdGEu
c3ludGhldGljT2JsaXF1ZSgpKSB7CisgICAgICAgIHN0YXRpYyBmbG9hdCBza2V3ID0gLXRhbmYo
c3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgKiBwaUZsb2F0IC8gMTgwLjBmKTsKKyAgICAgICAgYXV0
byBza2V3TWF0cml4ID0gRDJEMTo6TWF0cml4M3gyRjo6U2tldyhza2V3LCAwKTsKKyAgICAgICAg
Y29udGV4dC0+U2V0VHJhbnNmb3JtKG1hdHJpeCAqIHNrZXdNYXRyaXgpOworICAgIH0KKyAgICAq
LworCisgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1EYXRhLmR3Rm9udCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChwbGF0Zm9ybURhdGEuZHdGb250RmFjZSgpKTsKKworICAgIERXUklURV9HTFlQ
SF9SVU4gZ2x5cGhSdW47CisgICAgZ2x5cGhSdW4uZm9udEZhY2UgPSBwbGF0Zm9ybURhdGEuZHdG
b250RmFjZSgpOworICAgIGdseXBoUnVuLmZvbnRFbVNpemUgPSBwbGF0Zm9ybURhdGEuc2l6ZSgp
OworICAgIGdseXBoUnVuLmdseXBoQ291bnQgPSBnbHlwaHMuc2l6ZSgpOworICAgIGdseXBoUnVu
LmdseXBoSW5kaWNlcyA9IGdseXBocy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhBZHZhbmNl
cyA9IGhvcml6b250YWxBZHZhbmNlcy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhPZmZzZXRz
ID0gbnVsbHB0cjsKKyAgICBnbHlwaFJ1bi5pc1NpZGV3YXlzID0gcGxhdGZvcm1EYXRhLm9yaWVu
dGF0aW9uKCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKKyAgICBnbHlwaFJ1bi5iaWRp
TGV2ZWwgPSAwOworCisgICAgLyoKKyAgICAvLyBGSVhNRSgpOiBHZXQgU2hhZG93cyB3b3JraW5n
CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAg
IENvbG9yIHNoYWRvd0NvbG9yOworICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwg
JiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250
ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgp
LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGlmIChoYXNTaW1wbGVT
aGFkb3cpIHsKKyAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3Rl
YWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50
aWFsaWFzaW5nLgorICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAg
ICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOworICAgICAg
ICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdy
ZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xv
ci5hbHBoYSgpIC8gMjU1KTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkg
KyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKKyAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3Jp
bmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBm
bGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkg
PSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworCisgICAgICAgIGF1dG8gc2hhZG93
QnJ1c2ggPSBncmFwaGljc0NvbnRleHQuYnJ1c2hXaXRoQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsK
KyAgICAgICAgY29udGV4dC0+RHJhd0dseXBoUnVuKEQyRDE6OlBvaW50MkYoc2hhZG93VGV4dFgs
IHNoYWRvd1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgICAgIGlmIChmb250
LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPkRyYXdHbHlwaFJ1
bihEMkQxOjpQb2ludDJGKHNoYWRvd1RleHRYICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCks
IHNoYWRvd1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgfQorICAgICovCisK
KyAgICByZW5kZXJUYXJnZXQtPkRyYXdHbHlwaFJ1bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSwg
cG9pbnQueSgpKSwgJmdseXBoUnVuLCBmaWxsU291cmNlLmJydXNoLmdldCgpKTsKKyAgICAvLyBp
ZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpCisgICAgLy8gICAgIGNvbnRleHQtPkRyYXdH
bHlwaFJ1bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNl
dCgpLCBwb2ludC55KCkpLCAmZ2x5cGhSdW4sIGdyYXBoaWNzQ29udGV4dC5zb2xpZEZpbGxCcnVz
aCgpKTsKKworICAgIC8vIGlmIChoYXNTaW1wbGVTaGFkb3cpCisgICAgLy8gICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7
CisKKyAgICBwbGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQotKi8KKwogCiB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lD
Qml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmCiB2b2lkIHN0cm9rZVBhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAK
LS8vIEZJWE1FKElNUExFTUVOVCk6IHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqLCBkb3Vi
bGUsIGNvbnN0IFZlY3RvcjxEaXJlY3RXcml0ZUdseXBoVHlwZT4mLCBmbG9hdCwgVGV4dERyYXdp
bmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwordm9p
ZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYs
IGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGds
eXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0
b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZs
b2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCiB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1
YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTUzLDYgKzU0
LDExIEBAIEludFNpemUgYml0bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKiBiaXQKICAgICByZXR1
cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAorRmxvYXRTaXplIGJpdG1hcFNpemUoSUQy
RDFCaXRtYXAqIGJpdG1hcFNvdXJjZSkKK3sKKyAgICByZXR1cm4gYml0bWFwU291cmNlLT5HZXRT
aXplKCk7Cit9CisKIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFwU291cmNl
KiBiaXRtYXBTb3VyY2UpCiB7CiAgICAgY29uc3RleHByIGRvdWJsZSBkcGlCYXNlID0gOTYuMDsK
QEAgLTYzLDggKzY5LDIxIEBAIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFw
U28KICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UG9pbnQgcmVzdWx0KGRwaVgsIGRw
aVkpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gZHBpQmFzZSk7CisgICAgcmVzdWx0LnNjYWxlKDEu
MCAvIGRwaUJhc2UpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Zsb2F0UG9pbnQgYml0bWFw
UmVzb2x1dGlvbihJRDJEMUJpdG1hcCogYml0bWFwKQoreworICAgIGNvbnN0ZXhwciBkb3VibGUg
ZHBpQmFzZSA9IDk2LjA7CisKKyAgICBmbG9hdCBkcGlYLCBkcGlZOworICAgIGJpdG1hcC0+R2V0
RHBpKCZkcGlYLCAmZHBpWSk7CisKKyAgICBGbG9hdFBvaW50IHJlc3VsdChkcGlYLCBkcGlZKTsK
KyAgICByZXN1bHQuc2NhbGUoMS4wIC8gZHBpQmFzZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKwog
fQogCiB1bnNpZ25lZCBiaXRzUGVyUGl4ZWwoR1VJRCBiaXRtYXBGb3JtYXQpCkBAIC0xMDEsNiAr
MTIwLDI5IEBAIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3QyREltYWdlU3UKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAorQ09NUHRyPElXSUNCaXRtYXA+IGNyZWF0ZVdpY0JpdG1hcChj
b25zdCBJbnRTaXplJiBzaXplKQoreworICAgIENPTVB0cjxJV0lDQml0bWFwPiBzdXJmYWNlOwor
ICAgIEhSRVNVTFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3Rv
cnkoKS0+Q3JlYXRlQml0bWFwKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgR1VJRF9XSUNQ
aXhlbEZvcm1hdDMyYnBwUEJHUkEsIFdJQ0JpdG1hcENhY2hlT25EZW1hbmQsICZzdXJmYWNlKTsK
KyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIHN1cmZhY2U7Cit9CisKK0NPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQml0bWFwKElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgYXV0byBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFwUHJvcGVydGllcyhEMkQxOjpQ
aXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BS
RU1VTFRJUExJRUQpKTsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEQy
RDFfU0laRV9VIGJpdG1hcFNpemUgPSBzaXplOworICAgIEhSRVNVTFQgaHIgPSByZW5kZXJUYXJn
ZXQtPkNyZWF0ZUJpdG1hcChiaXRtYXBTaXplLCBiaXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsK
KyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGJpdG1hcDsKK30KKwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5k
ZXJUYXJnZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqIGJpdG1hcFNvdXJjZSkKIHsKICAgICBh
dXRvIHRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKEQyRDFf
UkVOREVSX1RBUkdFVF9UWVBFX0RFRkFVTFQsCkBAIC0xMTUsMTQgKzE1NywyNiBAQCBDT01QdHI8
SUQyRDFSZW5kZXJUYXJnZXQ+IGNyZWF0ZVJlbmRlclRhCiAgICAgcmV0dXJuIGJpdG1hcENvbnRl
eHQ7CiB9CiAKLXZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJV0lDQml0bWFw
KiBmcm9tLCBJV0lDQml0bWFwKiB0bywgY29uc3QgSW50U2l6ZSYgc291cmNlT2Zmc2V0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ09NUHRyPElEMkQx
RENSZW5kZXJUYXJnZXQ+IGNyZWF0ZUdESVJlbmRlclRhcmdldCgpCit7CisgICAgYXV0byB0YXJn
ZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9U
QVJHRVRfVFlQRV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAg
ICAwLCAwLCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEUsIEQyRDFfRkVB
VFVSRV9MRVZFTF9ERUZBVUxUKTsKKworICAgIENPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiBy
ZW5kZXJUYXJnZXQ7CisgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFj
dG9yeSgpLT5DcmVhdGVEQ1JlbmRlclRhcmdldCgmdGFyZ2V0UHJvcGVydGllcywgJnJlbmRlclRh
cmdldCk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQgfHwgIVNVQ0NFRURFRChocikpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJlbmRlclRhcmdldDsKK30KKwordm9pZCBj
b3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKElEMkQxQml0bWFwKiBmcm9tLCBJRDJEMUJp
dG1hcCogdG8sIGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKIHsKLSAgICAvKgotICAgIFJlZlB0cjxjYWly
b190PiBjb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHRvKSk7Ci0gICAgY2Fpcm9fdHJh
bnNsYXRlKGNvbnRleHQuZ2V0KCksIGRlc3RPZmZzZXQud2lkdGgoKSwgZGVzdE9mZnNldC5oZWln
aHQoKSk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQuZ2V0KCksIGNhaXJvT3BlcmF0
b3IpOwotICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0
LmdldCgpLCBzb3VyY2VPZmZzZXQsIHJlY3QpOwotICAgICovCisgICAgYXV0byBvZmZzZXQgPSBE
MkQxOjpQb2ludDJVKCk7CisgICAgYXV0byBzb3VyY2VSZWN0ID0gRDJEMTo6UmVjdFUoc291cmNl
T2Zmc2V0LndpZHRoKCksIC1zb3VyY2VPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisgICAgSFJFU1VMVCBociA9IHRvLT5Db3B5RnJvbUJpdG1hcCgmb2Zmc2V0
LCBmcm9tLCAmc291cmNlUmVjdCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBEaXJlY3QyRApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI0
ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw4IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAoraW50ZXJmYWNlIElEMkQxQml0
bWFwOworaW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJnZXQ7CiBpbnRlcmZhY2UgSUQyRDFSZW5k
ZXJUYXJnZXQ7CiBpbnRlcmZhY2UgSVdJQ0JpdG1hcFNvdXJjZTsKIGludGVyZmFjZSBJV0lDQml0
bWFwOwpAQCAtMzksMTggKzQyLDI0IEBAIGludGVyZmFjZSBJV0lDQml0bWFwOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEludFNpemU7CiAKIG5hbWVzcGFjZSBEaXJlY3QyRCB7CiAKIEludFNp
emUgYml0bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKik7CitGbG9hdFNpemUgYml0bWFwU2l6ZShJ
RDJEMUJpdG1hcCopOwogRmxvYXRQb2ludCBiaXRtYXBSZXNvbHV0aW9uKElXSUNCaXRtYXBTb3Vy
Y2UqKTsKK0Zsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJRDJEMUJpdG1hcCopOwogdW5zaWdu
ZWQgYml0c1BlclBpeGVsKEdVSUQpOworQ09NUHRyPElEMkQxQml0bWFwPiBjcmVhdGVCaXRtYXAo
SUQyRDFSZW5kZXJUYXJnZXQqLCBjb25zdCBJbnRTaXplJik7CitDT01QdHI8SVdJQ0JpdG1hcD4g
Y3JlYXRlV2ljQml0bWFwKGNvbnN0IEludFNpemUmKTsKIENPTVB0cjxJV0lDQml0bWFwPiBjcmVh
dGVEaXJlY3QyREltYWdlU3VyZmFjZVdpdGhEYXRhKHZvaWQqIGRhdGEsIGNvbnN0IEludFNpemUm
LCB1bnNpZ25lZCBzdHJpZGUpOwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5k
ZXJUYXJnZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqKTsKK0NPTVB0cjxJRDJEMURDUmVuZGVy
VGFyZ2V0PiBjcmVhdGVHRElSZW5kZXJUYXJnZXQoKTsKIAotdm9pZCBjb3B5UmVjdEZyb21PbmVT
dXJmYWNlVG9Bbm90aGVyKElXSUNCaXRtYXAqIGZyb20sIElXSUNCaXRtYXAqIHRvLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0
T2Zmc2V0ID0gSW50U2l6ZSgpKTsKK3ZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhl
cihJRDJEMUJpdG1hcCogZnJvbSwgSUQyRDFCaXRtYXAqIHRvLCBjb25zdCBJbnRTaXplJiBzb3Vy
Y2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0ID0gSW50
U2l6ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgRGlyZWN0MkQKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KEhEQyBoZGMKIAogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQy
RDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkVDVCByZWN0LCBib29sIGhhc0FscGhh
KQogewotICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7Ci0KICAgICAvLyBDcmVhdGUgYSBEQyByZW5k
ZXIgdGFyZ2V0LgogICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRhcmdl
dFByb3BlcnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKICAgICAgICAgRDJE
MTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9E
RV9QUkVNVUxUSVBMSUVEKSwKQEAgLTY3LDYgKzY1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHQoSERDIGhkYwogCiAgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwog
ICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShv
d25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOworICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKiBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgcmVuZGVyZXJUeXBlKQpAQCAtMTY0LDgg
KzE2MywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0cm95KCkKIAogUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQqIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkg
Y29uc3QKIHsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBBU1NFUlQoIXBhaW50aW5nRGlzYWJsZWQoKSk7Ci0gICAgcmV0dXJu
IG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgcmV0dXJuICZtX2RhdGEtPnBsYXRmb3Jt
Q29udGV4dCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c3lu
Y0NvbnRleHQoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmKQpAQCAtMTk3LDE4ICsxOTgsMTIgQEAg
ZmxvYXQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjdQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghcGFpbnRpbmdEaXNh
YmxlZCgpKTsKLSAgICBBU1NFUlQoIW1faW1wbCk7Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1D
b250ZXh0KCkpOwogICAgIERpcmVjdDJEOjpzYXZlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNT
RVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VSVCghbV9pbXBsKTsKLQogICAgIEFT
U0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRm
b3JtQ29udGV4dCgpKTsKIH0KQEAgLTI0NywxNCArMjQyLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKIAogICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQy
RDE6OkJpdG1hcFByb3BlcnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSk7CiAKKyAgICBBU1NFUlQo
aGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICp0aGlz
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOwot
ICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPkNyZWF0
ZUJpdG1hcChwaXhlbERhdGEuc2l6ZSgpLCBwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5i
eXRlc1BlclJvdygpLCAmYml0bWFwUHJvcGVydGllcywgJmJpdG1hcCk7CisgICAgSFJFU1VMVCBo
ciA9IHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKS0+Q3JlYXRlQml0bWFwKHBpeGVsRGF0
YS5zaXplKCksIHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksICZi
aXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAK
LSAgICBEMkRDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptX2RhdGEpOworICAgIFBsYXRm
b3JtQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAg
Ly8gTm90ZTogVGhlIGNvbnRlbnQgaW4gdGhlIEhEQyBpcyBpbnZlcnRlZCBjb21wYXJlZCB0byBE
aXJlY3QyRCwgc28gaXQgbmVlZHMgdG8gYmUgZmxpcHBlZC4KLSAgICBhdXRvIGNvbnRleHQgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCk7CisgICAgYXV0byBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpOwogCiAgICAgRDJEMV9NQVRSSVhfM1gyX0YgY3Vy
cmVudFRyYW5zZm9ybTsKICAgICBjb250ZXh0LT5HZXRUcmFuc2Zvcm0oJmN1cnJlbnRUcmFuc2Zv
cm0pOwpAQCAtMzE0LDcgKzMxMiw3IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
fkdyYXBoaWMKICAgICBpZiAoIW1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoYmVnaW5EcmF3Q291bnQpCisgICAgaWYgKG1fcGxhdGZv
cm1Db250ZXh0LmJlZ2luRHJhd0NvdW50KQogICAgICAgICBlbmREcmF3KCk7CiB9CiAKQEAgLTM0
NiwyMSArMzQ0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpmbHUK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCiB7Ci0g
ICAgQVNTRVJUKG1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKTsKLSAgICBtX3BsYXRm
b3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKS0+QmVnaW5EcmF3KCk7Ci0gICAgKytiZWdpbkRyYXdD
b3VudDsKKyAgICBtX3BsYXRmb3JtQ29udGV4dC5iZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXcoKQogewotICAgIEFTU0VSVChtX3Bs
YXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKSk7Ci0gICAgRDJEMV9UQUcgZmlyc3QsIHNlY29u
ZDsKLSAgICBIUkVTVUxUIGhyID0gbV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCktPkVu
ZERyYXcoJmZpcnN0LCAmc2Vjb25kKTsKLQotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAg
ICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
OjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIsIGhyLCBmaXJzdCwgc2Vj
b25kKTsKLQotICAgIC0tYmVnaW5EcmF3Q291bnQ7CisgICAgbV9wbGF0Zm9ybUNvbnRleHQuZW5k
RHJhdygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9y
ZSgpCkBAIC00MTksMTIgKzQwOCwxNCBAQCBJRDJEMUJydXNoKiBHcmFwaGljc0NvbnRleHQ6OnBh
dHRlcm5GaWxsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXcoKQogewotICAgIG1f
ZGF0YS0+YmVnaW5EcmF3KCk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+YmVnaW5EcmF3KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjplbmREcmF3KCkKIHsKLSAgICBtX2RhdGEtPmVuZERyYXcoKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5lbmREcmF3KCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmbHVzaCgpCkBAIC05OTUsNyArOTg2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpzZXRDVE0oKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsK
KyAgICAgICAgbV9pbXBsLT5zZXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTEzMSwxMCArMTEyMiw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJc0Fj
Y2VsZXJhdGVkQ28KIAogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgY29uc3QKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghaGFzUGxh
dGZvcm1Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6aXNBY2NlbGVy
YXRlZENvbnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTMgKzE1NSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkK
IHsKLSAgICBhdXRvIHBsYXRmb3JtR3JhZGllbnQgPSBhZG9wdENPTShncmFkaWVudC5jcmVhdGVQ
bGF0Zm9ybUdyYWRpZW50SWZOZWNlc3NhcnkobV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0
KCkpKTsKKyAgICBDT01QdHI8SUQyRDFCcnVzaD4gcGxhdGZvcm1HcmFkaWVudCA9IGdyYWRpZW50
LmNyZWF0ZVBsYXRmb3JtR3JhZGllbnRJZk5lY2Vzc2FyeShtX3BsYXRmb3JtQ29udGV4dC5yZW5k
ZXJUYXJnZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUdyYWRpZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBEaXJlY3QyRDo6c2F2ZShtX3BsYXRmb3JtQ29udGV4dCk7CiAgICAgRGlyZWN0MkQ6
OmZpbGxSZWN0V2l0aEdyYWRpZW50KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LCBwbGF0Zm9ybUdy
YWRpZW50LmdldCgpKTsKLSAgICBEaXJlY3QyRDo6cmVzdG9yZShtX3BsYXRmb3JtQ29udGV4dCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0xOTAsOSArMTg4LDE0IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUm8KICAgICBEaXJlY3QyRDo6
U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgcHJldmlvdXNP
cGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRI
b2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIERpcmVjdDJEOjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCB7
IH0sIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpKSk7Cisg
ICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOworCisgICAgRGlyZWN0
MkQ6OkZpbGxTb3VyY2UgZmlsbFNvdXJjZShzdGF0ZSwgbV9wbGF0Zm9ybUNvbnRleHQpOworICAg
IGZpbGxTb3VyY2UuYnJ1c2ggPSBtX3BsYXRmb3JtQ29udGV4dC5icnVzaFdpdGhDb2xvcihjb2xv
cik7CisKKyAgICBEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUobV9wbGF0Zm9ybUNv
bnRleHQsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgZmlsbFNvdXJjZSwgRGlyZWN0MkQ6OlNoYWRv
d1N0YXRlKGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0yMzgsNyAr
MjQxLDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3R2wKICAgICBp
ZiAoIWZvbnQucGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKKyAgICBWZWN0
b3I8dW5zaWduZWQgc2hvcnQ+IGdseXBocyhudW1HbHlwaHMpOworICAgIFZlY3RvcjxmbG9hdD4g
aG9yaXpvbnRhbEFkdmFuY2VzKG51bUdseXBocyk7CisgICAgVmVjdG9yPERXUklURV9HTFlQSF9P
RkZTRVQ+IGdseXBoT2Zmc2V0cyhudW1HbHlwaHMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bUdseXBoczsgKytpKSB7CisgICAgICAgIGlmIChpICsgZnJvbSA+PSBnbHlwaEJ1
ZmZlci5hZHZhbmNlc0NvdW50KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRv
IGFkdmFuY2UgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpICsgZnJvbSk7CisgICAgICAgIGlmICgh
YWR2YW5jZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdseXBoc1tpXSA9IGds
eXBoQnVmZmVyLmdseXBoQXQoaSArIGZyb20pOworICAgICAgICBob3Jpem9udGFsQWR2YW5jZXNb
aV0gPSBhZHZhbmNlLT53aWR0aCgpOworICAgICAgICBnbHlwaE9mZnNldHNbaV0uYWR2YW5jZU9m
ZnNldCA9IGFkdmFuY2UtPndpZHRoKCk7CisgICAgICAgIGdseXBoT2Zmc2V0c1tpXS5hc2NlbmRl
ck9mZnNldCA9IGFkdmFuY2UtPmhlaWdodCgpOworICAgIH0KKworICAgIGRvdWJsZSBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CisKKyAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CisgICAgRGlyZWN0MkQ6OmRyYXdHbHlw
aHMobV9wbGF0Zm9ybUNvbnRleHQsIERpcmVjdDJEOjpGaWxsU291cmNlKHN0YXRlLCBtX3BsYXRm
b3JtQ29udGV4dCksIERpcmVjdDJEOjpTdHJva2VTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1Db250
ZXh0KSwKKyAgICAgICAgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIGZvbnQs
IHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgaG9yaXpvbnRhbEFkdmFuY2VzLCBnbHlwaE9m
ZnNldHMsIHhPZmZzZXQsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yKTsKIH0K
IAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd0ltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVEaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXNo
ZXMoY29uc3QgRGFzaEFycmF5Jik7CiAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CiAKLSAgICBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCogcGxhdGZvcm1Db250ZXh0KCkgeyByZXR1cm4gJm1fcGxh
dGZvcm1Db250ZXh0OyB9CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1Db250ZXh0OyB9CiAgICAgSUQyRDFSZW5kZXJUYXJn
ZXQqIHJlbmRlclRhcmdldCgpOwogCiAgICAgSERDIG1faGRjIHsgbnVsbHB0ciB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJl
Y3QyRC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIz
LDkgQEAgdm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmbwogICAgIGlmICgh
Y3VycmVudFBvaW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fYWN0aXZlUGF0aCkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbV9hY3RpdmVQYXRoLT5TZXRGaWxsTW9kZShmaWxsTW9k
ZSk7CiAKICAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSB0cmFuc2Zvcm0ubWFwUG9pbnQoY3Vy
cmVudFBvaW50LnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3Bw
CShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiAr
MjQxLDI1IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnNldFBhdHRlcm4KICAgICBt
X3N0cm9rZVN5bGVJc0RpcnR5ID0gdHJ1ZTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRDo6YmVnaW5EcmF3KCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJUYXJnZXQpOworICAgIG1f
cmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKyAgICArK2JlZ2luRHJhd0NvdW50OworfQorCit2
b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjplbmREcmF3KCkKK3sKKyAgICBBU1NFUlQobV9y
ZW5kZXJUYXJnZXQpOworICAgIEQyRDFfVEFHIGZpcnN0LCBzZWNvbmQ7CisgICAgSFJFU1VMVCBo
ciA9IG1fcmVuZGVyVGFyZ2V0LT5FbmREcmF3KCZmaXJzdCwgJnNlY29uZCk7CisKKyAgICBpZiAo
IVNVQ0NFRURFRChocikpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEOjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIs
IGhyLCBmaXJzdCwgc2Vjb25kKTsKKworICAgIC0tYmVnaW5EcmF3Q291bnQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0
Zm9ybUNvbnRleHREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NhdmVkU3Rh
dGUoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJTdGF0ZXMuaXNFbXB0eSgpOyB9CiAKKyAgICB2
b2lkIGJlZ2luRHJhdygpOworICAgIHZvaWQgZW5kRHJhdygpOworCiAgICAgZW51bSBEaXJlY3Qy
RExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAgICAgdm9pZCBwdXNo
UmVuZGVyQ2xpcChEaXJlY3QyRExheWVyVHlwZSk7CiAgICAgdm9pZCBzZXRBY3RpdmVMYXllcihD
T01QdHI8SUQyRDFMYXllcj4mJik7CkBAIC0xMjgsNiArMTMxLDggQEAgcHJpdmF0ZToKICAgICBT
dHJva2VTdHlsZSBtX3N0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBEYXNoQXJyYXkg
bV9kYXNoZXM7CiAKKyAgICB1bnNpZ25lZCBiZWdpbkRyYXdDb3VudCB7IDAgfTsKKwogICAgIGZs
b2F0IG1fbWl0ZXJMaW1pdCB7IDEwLjBmIH07CiAgICAgZmxvYXQgbV9kYXNoT2Zmc2V0IHsgMCB9
OwogICAgIGZsb2F0IG1fcGF0dGVybldpZHRoIHsgMS4wZiB9OwpAQCAtMTQ0LDYgKzE0OSw0NiBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU7CiB9OwogCitjbGFzcyBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBjb250
ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAgICAgLCBtX3NhdmVBbmRSZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQorICAgIHsK
KyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQuc2F2
ZSgpOworICAgIH0KKworICAgIH5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICB9CisKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9z
YXZlQW5kUmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJl
c3RvcmUoKTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKworICAg
IGJvb2wgZGlkU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZlQW5kUmVz
dG9yZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIG1f
Y29udGV4dDsKKyAgICBib29sIG1fc2F2ZUFuZFJlc3RvcmUgeyBmYWxzZSB9OworfTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5k
IE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTQwODI1NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZTogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0
MkQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkJhY2tp
bmdTdG9yZTo6cmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVj
dDJELmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQ
YWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRl
c3RQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ckJhc2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlX
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5n
c1VSTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRT
dHJpbmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluV2luKToKKwogMjAxOS0wOC0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gc29tZSBJVFAg
dGhyZWFkaW5nIEFTU0VSVHMgaW50byBSRUxFQVNFX0FTU0VSVHMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bUZUVy5jbWFrZQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzg3IEBACitzZXQoV2ViS2l0X09VVFBVVF9O
QU1FIFdlYktpdDIpCitzZXQoV2ViS2l0X1dlYlByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0V2Vi
UHJvY2VzcykKK3NldChXZWJLaXRfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0TmV0
d29ya1Byb2Nlc3MpCitzZXQoV2ViS2l0X1BsdWdpblByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0
UGx1Z2luUHJvY2VzcykKKworYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQorCits
aXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKKworICAgIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisKKyAgICBOZXR3b3Jr
UHJvY2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NNYWluV2luLmNwcAorCisgICAgUGxhdGZvcm0vSVBD
L3dpbi9BdHRhY2htZW50V2luLmNwcAorICAgIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAKKworICAgIFBsYXRmb3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXIuY3BwCisKKyAgICBQbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKyAgICBQbGF0
Zm9ybS93aW4vTW9kdWxlV2luLmNwcAorICAgIFBsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4u
Y3BwCisKKyAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisK
KyAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3Bw
CisKKyAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcAorICAgIFNoYXJl
ZC93aW4vTmF0aXZlV2ViS2V5Ym9hcmRFdmVudFdpbi5jcHAKKyAgICBTaGFyZWQvd2luL05hdGl2
ZVdlYk1vdXNlRXZlbnRXaW4uY3BwCisgICAgU2hhcmVkL3dpbi9OYXRpdmVXZWJUb3VjaEV2ZW50
V2luLmNwcAorICAgIFNoYXJlZC93aW4vTmF0aXZlV2ViV2hlZWxFdmVudFdpbi5jcHAKKyAgICBT
aGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKKworICAgIFVJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuY3BwCisgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKKyAgICBVSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvV2Vi
R3JhbW1hckRldGFpbC5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNw
cAorCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1dGVzLmNwcAorCisgICAg
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tQcm90ZWN0aW9uU3BhY2VDdXJsLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCisKKyAgICBVSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKKworICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdl
YnNpdGVEYXRhU3RvcmVXaW4uY3BwCisKKyAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKworICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAorCisgICAgVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1cmwuY3BwCisKKyAgICBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisKKyAgICBVSVByb2Nlc3Mv
d2luL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy93aW4vVGV4dENoZWNrZXJXaW4u
Y3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAorICAgIFVJ
UHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9X
ZWJQYWdlUHJveHlXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdp
bi5jcHAKKyAgICBVSVByb2Nlc3Mvd2luL1dlYlByZWZlcmVuY2VzV2luLmNwcAorICAgIFVJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAorCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVX
aW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk5vbmUuY3BwCisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblBy
b3h5V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViQ29udGV4
dE1lbnVDbGllbnRXaW4uY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2Vi
UG9wdXBNZW51V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3Vy
ZmFjZS5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKworICAgIFdlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NNYWluV2luLmNwcAorICAgIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3Bw
CispCisKKyMgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyBpcworIyBleHBlY3RlZCBpbiBEZXJpdmVkU291cmNlcy9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sLy4KK2FkZF9jdXN0b21fY29tbWFuZCgK
KyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworICAgIERFUEVORFMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzCisgICAgQ09NTUFORCBjcCAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworKQorCitsaXN0KEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL3dpbiIK
KyAgICAiJHtXRUJLSVRfRElSfS9QbGF0Zm9ybS9jbGFzc2lmaWVyIgorICAgICIke1dFQktJVF9E
SVJ9L1BsdWdpblByb2Nlc3Mvd2luIgorICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvYy93
aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCisgICAg
IiR7V0VCS0lUX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yIgorICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9QbHVnaW5zL3dpbiIKKyAgICAiJHtXRUJL
SVRfRElSfS9TaGFyZWQvdW5peCIKKyAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvd2luIgorICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKKyAgICAiJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL0MvY3VybCIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L0Mvd2luIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL3dpbiIKKyAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucy93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL3dpbiIKKyAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93aW4iCisgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd2luL0RPTSIKKyAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luIgorICAgICIke1dFQktJVF9ESVJ9L3dpbiIKKykKKworbGlzdChBUFBFTkQgV2Vi
S2l0X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCispCisKK3NldChXZWJLaXRDb21tb25JbmNs
dWRlRGlyZWN0b3JpZXMgJHtXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFU30pCitzZXQoV2ViS2l0
Q29tbW9uU3lzdGVtSW5jbHVkZURpcmVjdG9yaWVzICR7V2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJ
UkVDVE9SSUVTfSkKKworbGlzdChBUFBFTkQgV2ViUHJvY2Vzc19TT1VSQ0VTCisgICAgV2ViUHJv
Y2Vzcy9FbnRyeVBvaW50L3dpbi9XZWJQcm9jZXNzTWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQg
TmV0d29ya1Byb2Nlc3NfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvd2lu
L05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKKykKKworaWYgKCR7RU5BQkxFX1BMVUdJTl9QUk9DRVNT
fSkKKyAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX1NPVVJDRVMKKyAgICApCitlbmRpZiAo
KQorCithZGRfZGVmaW5pdGlvbnMoLURVU0VfRElSRUNUMkQ9MSAtRFVTRV9DVVJMPTEpCisKK2xp
c3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJs
L1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUN1cmwuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsQ3VybC5jcHAKKworICAgIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3Vy
bC5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKKwor
ICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisKKyAgICBTaGFy
ZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorCisgICAgVUlQcm9jZXNzL3dpbi9C
YWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Y3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKQorCitsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L2N1cmwiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
IgorKQorCitsaXN0KEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCisgICAgUFJJVkFURQorICAgICAg
ICAke09QRU5TU0xfTElCUkFSSUVTfQorICAgICAgICBEMmQxLmxpYgorICAgICAgICBEd3JpdGUK
KyAgICAgICAgRHhndWlkCisgICAgICAgIFdpbmRvd3NDb2RlY3MKKyAgICAgICAgbWZ1dWlkLmxp
YgorICAgICAgICBzdHJtaWlkcy5saWIKKykKKworaWYgKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
KQorICAgIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgICAgIFVJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorICAgICAgICBVSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKworICAgICAgICBVSVByb2Nlc3Mvd2lu
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAorICAgICkKKworICAgIGxpc3QoQVBQRU5E
IFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9zb2NrZXQiCisgICAgKQorZW5kaWYgKCkKKworc2V0KFNoYXJlZFdlYktpdExpYnJhcmll
cworICAgICR7V2ViS2l0X0xJQlJBUklFU30KKykKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgk
e1dlYktpdF9TT1VSQ0VTfSkKKworIyBUZW1wb3JhcmlseSBsaXN0IG91dCBzaGFyZWQgaGVhZGVy
cyBoZXJlCitzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUworICAgIFNoYXJlZC9B
UEkvYy9XS0FycmF5LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmgKKyAgICBTaGFyZWQvQVBJ
L2MvV0tDZXJ0aWZpY2F0ZUluZm8uaAorICAgIFNoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rpb25SZWYu
aAorICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oCisgICAgU2hhcmVkL0FQSS9j
L1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS0RhdGEuaAorICAg
IFNoYXJlZC9BUEkvYy9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oCisgICAgU2hhcmVkL0FQSS9j
L1dLRGVwcmVjYXRlZC5oCisgICAgU2hhcmVkL0FQSS9jL1dLRGlhZ25vc3RpY0xvZ2dpbmdSZXN1
bHRUeXBlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmgKKyAgICBTaGFyZWQvQVBJ
L2MvV0tFcnJvclJlZi5oCisgICAgU2hhcmVkL0FQSS9jL1dLRXZlbnQuaAorICAgIFNoYXJlZC9B
UEkvYy9XS0ZpbmRPcHRpb25zLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oCisgICAg
U2hhcmVkL0FQSS9jL1dLSW1hZ2UuaAorICAgIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5o
CisgICAgU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaAorICAgIFNoYXJlZC9BUEkv
Yy9XS051bWJlci5oCisgICAgU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCisgICAgU2hh
cmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaAorICAgIFNoYXJlZC9BUEkvYy9XS1Bh
Z2VWaXNpYmlsaXR5VHlwZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9u
LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5oCisgICAgU2hhcmVkL0FQ
SS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tTdHJpbmcu
aAorICAgIFNoYXJlZC9BUEkvYy9XS1N0cmluZ1ByaXZhdGUuaAorICAgIFNoYXJlZC9BUEkvYy9X
S1R5cGUuaAorICAgIFNoYXJlZC9BUEkvYy9XS1VSTC5oCisgICAgU2hhcmVkL0FQSS9jL1dLVVJM
UmVxdWVzdC5oCisgICAgU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaAorICAgIFNoYXJlZC9B
UEkvYy9XS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lLmgKKworICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oCisgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRIaXN0b3J5Q2xpZW50LmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVN
YW5hZ2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsVHlwZXMuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVI
YW5kbGVSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25NYW5hZ2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBv
c2l0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTGF5b3V0TW9kZS5oCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrRGlz
cGxheS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tOYXRpdmVFdmVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkFjdGlvblJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05hdmlnYXRpb25SZXNwb25zZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VGaW5kQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlRmluZE1hdGNoZXNDbGll
bnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VGb3JtQ2xpZW50LmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlR3JvdXAuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUxvYWRlckNsaWVudC5o
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQb2xpY3lDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHMuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGx1Z2luTG9hZFBvbGljeS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLVGV4dENoZWNrZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLVmlld3BvcnRBdHRyaWJ1dGVzLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuaAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1dpbmRvd0ZlYXR1cmVzUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV2ViS2l0Ml9DLmgKKworICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKKwor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKKyAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZpbGVIYW5kbGVSZWYuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbml0aWFsaXplLmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW5zcGVjdG9yLmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuaAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZUZvcm1DbGllbnQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaAorICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlVUlDbGllbnQu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgK
KyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3Js
ZC5oCispCisKKyMgV2luZG93cyBzcGVjaWZpYworbGlzdChBUFBFTkQgV2ViS2l0X1BVQkxJQ19G
UkFNRVdPUktfSEVBREVSUworICAgIFNoYXJlZC9BUEkvYy93aW4vV0tCYXNlV2luLmgKKworICAg
IFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKKykKKworc2V0KFdlYktpdF9GT1JXQVJESU5H
X0hFQURFUlNfRElSRUNUT1JJRVMKKyAgICBTaGFyZWQvQVBJL2MKKworICAgIFNoYXJlZC9BUEkv
Yy9jZgorICAgIFNoYXJlZC9BUEkvYy93aW4KKworICAgIFVJUHJvY2Vzcy9BUEkvQworICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwCisKKyAgICBVSVByb2Nlc3MvQVBJL0Mvd2luCisKKyAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jCispCisKK2xpc3QoQVBQRU5EIFdlYktpdF9QVUJMSUNf
RlJBTUVXT1JLX0hFQURFUlMKKyAgICAjU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5o
CisKKyAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuaAorCisgICAg
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tQcm90ZWN0aW9uU3BhY2VDdXJsLmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgKKykKKworV0VCS0lUX01B
S0VfRk9SV0FSRElOR19IRUFERVJTKFdlYktpdAorICAgIFRBUkdFVF9OQU1FIFdlYktpdEZyYW1l
d29ya0hlYWRlcnMKKyAgICBERVNUSU5BVElPTiAke1dlYktpdF9GUkFNRVdPUktfSEVBREVSU19E
SVJ9L1dlYktpdAorICAgIEZJTEVTICR7V2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSU30K
KyAgICBGTEFUVEVORUQKKykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTaGFyZWFibGVCaXRtYXBfaAot
I2RlZmluZSBTaGFyZWFibGVCaXRtYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTQwLDYgKzM5LDEy
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
RElSRUNUMkQpCitpbnRlcmZhY2UgSVdJQ0JpdG1hcDsKKworI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2U7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xMjUsNiArMTMwLDkgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hh
cmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdl
IGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hh
bmdlLgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwor
I2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3Qy
RFN1cmZhY2UoKTsKKyAgICB2b2lkIHN5bmMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE0MSwxNiArMTQ5LDIyIEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNv
bnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KTsKICNlbmRpZgogCi0jaWYgVVNFKENBSVJP
KQorI2lmIFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIHN0YXRpYyB2b2lkIHJlbGVh
c2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCk7CiAjZW5kaWYKIAorcHVibGljOgog
ICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKK3ByaXZhdGU6CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9jb25maWd1cmF0aW9u
KS51bnNhZmVHZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgQ29u
ZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgQ09N
UHRyPElXSUNCaXRtYXA+IG1fYml0bWFwOworI2VuZGlmCisKICAgICAvLyBJZiB0aGUgc2hhcmVh
YmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhl
IHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVk
TWVtb3J5OwogCkBAIC0xNjAsNCArMTc0LDMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyBTaGFyZWFibGVCaXRtYXBfaApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJ
bWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRElCUGl4ZWxEYXRhLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9EaXJlY3QyRE9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpcmVjdDJEVXRp
bGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CisjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBhdXRvIGJpdG1hcEZvcm1hdCA9IEdVSURf
V0lDUGl4ZWxGb3JtYXQzMmJwcFBCR1JBOworCitzdGF0aWMgdW5zaWduZWQgc3RyaWRlRm9yV2lk
dGgodW5zaWduZWQgd2lkdGgpCit7CisgICAgc3RhdGljIHVuc2lnbmVkIGJpdHNQZXJQaXhlbCA9
IERpcmVjdDJEOjpiaXRzUGVyUGl4ZWwoYml0bWFwRm9ybWF0KTsKKyAgICByZXR1cm4gYml0c1Bl
clBpeGVsICogd2lkdGggLyA4OworfQorCitDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4gU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXpl
IHNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJu
IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uZmlndXJhdGlvbikgKiBzaXplLndpZHRoKCk7Cit9
CisKK3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25z
dCBDb25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKworc3RhdGljIGlubGluZSBD
T01QdHI8SVdJQ0JpdG1hcD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisgICAgY29uc3QgdW5zaWduZWQgc3RyaWRlID0g
c3RyaWRlRm9yV2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICByZXR1cm4gRGlyZWN0MkQ6OmNyZWF0
ZURpcmVjdDJESW1hZ2VTdXJmYWNlV2l0aERhdGEoZGF0YSwgc2l6ZSwgc3RyaWRlKTsKK30KKwor
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoKQoreworICAgIG1fYml0bWFwID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNl
KCk7CisgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0ID0gRGlyZWN0
MkQ6OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAobV9iaXRtYXAuZ2V0KCkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKK30KKwor
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQoreworICAgIHBh
aW50KGNvbnRleHQsIDEsIGRzdFBvaW50LCBzcmNSZWN0KTsKK30KKwordm9pZCBTaGFyZWFibGVC
aXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3Is
IGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKKworICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChkc3RQb2ludCwgc3JjUmVjdC5zaXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNS
ZWN0U2NhbGVkKHNyY1JlY3QpOworICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUoc2NhbGVGYWN0b3Ip
OworCisgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIGF1dG8m
IHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOworICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3RTY2FsZWQsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24oKSwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxw
aGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworfQorCitDT01QdHI8SVdJQ0JpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKQoreworICAgIG1fYml0
bWFwID0gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEoKSwgbV9zaXplKTsKKyAgICByZWYoKTsg
Ly8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZVN1cmZhY2VEYXRhLgorICAgIHJldHVybiBt
X2JpdG1hcDsKK30KKwordm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTdXJmYWNlRGF0YSh2
b2lkKiB0eXBlbGVzc0JpdG1hcCkKK3sKKyAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAq
Pih0eXBlbGVzc0JpdG1hcCktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVD
YWlyb1N1cmZhY2UuCit9CisKK1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJ
bWFnZSgpCit7CisgICAgYXV0byBzdXJmYWNlID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7Cisg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworfQorCit2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6c3luYyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBB
U1NFUlQobV9iaXRtYXApOworCisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZERyYXcoKTsKKworICAg
IFdJQ1JlY3QgcmNMb2NrID0geyAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
IH07CisKKyAgICBDT01QdHI8SVdJQ0JpdG1hcExvY2s+IGJpdG1hcERhdGFMb2NrOworICAgIEhS
RVNVTFQgaHIgPSBtX2JpdG1hcC0+TG9jaygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrUmVhZCwgJmJp
dG1hcERhdGFMb2NrKTsKKyAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICBVSU5UIGJ1
ZmZlclNpemUgPSAwOworICAgICAgICBXSUNJblByb2NQb2ludGVyIGRhdGFQdHIgPSBudWxscHRy
OworICAgICAgICBociA9IGJpdG1hcERhdGFMb2NrLT5HZXREYXRhUG9pbnRlcigmYnVmZmVyU2l6
ZSwgJmRhdGFQdHIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgIG1l
bWNweShkYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFQdHIpLCBidWZmZXJTaXpl
KTsKKyAgICB9CisKKyAgICAvLyBPbmNlIHdlIGFyZSBkb25lIG1vZGlmeWluZyB0aGUgZGF0YSwg
dW5sb2NrIHRoZSBiaXRtYXAKKyAgICBiaXRtYXBEYXRhTG9jayA9IG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9C
YWNraW5nU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKIAorI2lmIFVT
RShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQmFja2luZ1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0ICsyMywxOSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQmFja2luZ1N0
b3JlX2gKLSNkZWZpbmUgQmFja2luZ1N0b3JlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBV
U0UoQ0FJUk8pCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8uaD4K
KyNlbGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tl
bmREaXJlY3QyRC5oPgorI2VuZGlmCisKKyNpZiBVU0UoRElSRUNUMkQpCitpbnRlcmZhY2UgSUQy
RDFSZW5kZXJUYXJnZXQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MiwxNyAr
NTcsMjUgQEAgcHVibGljOgogCiAjaWYgVVNFKENBSVJPKQogICAgIHR5cGVkZWYgY2Fpcm9fdCog
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgdHlwZWRl
ZiBJRDJEMVJlbmRlclRhcmdldCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcGFpbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mKTsK
IAorI2lmIFVTRShESVJFQ1QyRCkKKyAgICBJRDJEMURDUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQoKSB7IHJldHVybiBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpOyB9CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCosIGNvbnN0
IFVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOwogCiAjaWYg
VVNFKENBSVJPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNr
ZW5kQ2Fpcm8+IGNyZWF0ZUJhY2tlbmQoKTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBjcmVhdGVC
YWNrZW5kKCk7CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwpAQCAtNzAs
OSArODMsOSBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CiAj
aWYgVVNFKENBSVJPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVC
YWNrZW5kQ2Fpcm8+IG1fYmFja2VuZDsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBtX2JhY2tlbmQ7
CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gQmFja2lu
Z1N0b3JlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTAgQEAKICNp
bmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgogCisjaWYg
VVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPGQyZDEuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCShyZXZpc2lv
biAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxh
dGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpS
ZWdpb24mIHVucGFpbnRlZFJlZ2lvbik7CiAjZW5kaWYKIAorI2lmIFVTRShESVJFQ1QyRCkKKyAg
ICBJRDJEMURDUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQoKSB7IHJldHVybiBtX2JhY2tpbmdT
dG9yZSA/IG1fYmFja2luZ1N0b3JlLT5yZW5kZXJUYXJnZXQoKSA6IG51bGxwdHI7IH0KKyNlbmRp
ZgorCiAgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJlZUNv
bnRleHQ7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9y
ZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
QmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNs
dWRlICJVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpcmVjdDJEVXRpbGl0aWVzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg+CisjaW5jbHVkZSA8ZDJkMS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVu
aXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0
ZUJhY2tlbmQoKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJh
Y2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK3Zv
aWQgQmFja2luZ1N0b3JlOjpwYWludChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHJlbmRlclRhcmdldC0+QmVnaW5EcmF3KCk7CisK
KyAgICBBU1NFUlQobV9iYWNrZW5kKTsKKworICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9wZXJ0aWVz
ID0gRDJEMTo6Qml0bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CisgICAgYXV0byBicnVzaFByb3BlcnRp
ZXMgPSBEMkQxOjpCcnVzaFByb3BlcnRpZXMoKTsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcEJy
dXNoPiBwYXR0ZXJuQnJ1c2g7CisgICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+Q3JlYXRl
Qml0bWFwQnJ1c2gobV9iYWNrZW5kLT5zdXJmYWNlKCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMs
ICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEFTU0VSVChTVUNDRUVERUQo
aHIpKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybjsKKworICAgIEQy
RDFfUkVDVF9GIGRlc3RSZWN0KHJlY3QpOworICAgIHJlbmRlclRhcmdldC0+RmlsbFJlY3Rhbmds
ZSgmZGVzdFJlY3QsIHBhdHRlcm5CcnVzaC5nZXQoKSk7CisgICAgcmVuZGVyVGFyZ2V0LT5FbmRE
cmF3KCk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFi
bGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKK3sKKyAgICBX
VEZMb2dBbHdheXMoIkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUiKTsKKyAgICBpZiAo
IW1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kID0gY3JlYXRlQmFja2VuZCgpOworCisgICAg
c2Nyb2xsKHVwZGF0ZUluZm8uc2Nyb2xsUmVjdCwgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQpOwor
CisgICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0cy4KKyAgICBJbnRQb2ludCB1cGRhdGVSZWN0
TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKKworICAg
IENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwUmVuZGVyVGFyZ2V0OworICAg
IEhSRVNVTFQgaHIgPSBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpLT5DcmVhdGVDb21wYXRpYmxl
UmVuZGVyVGFyZ2V0KCZiaXRtYXBSZW5kZXJUYXJnZXQpOworICAgIEdyYXBoaWNzQ29udGV4dCBn
cmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5
KGJpdG1hcFJlbmRlclRhcmdldC5nZXQoKSkpOworCisgICAgLy8gV2hlbiBtX3dlYlBhZ2VQcm94
eS5kcmF3c0JhY2tncm91bmQoKSBpcyBmYWxzZSwgYml0bWFwIGNvbnRhaW5zIHRyYW5zcGFyZW50
IHBhcnRzIGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgd2VicGFnZS4KKyAgICAvLyBGb3Igc3VjaCBj
YXNlLCBiaXRtYXAgbXVzdCBiZSBkcmF3biB1c2luZyBDb21wb3NpdGVDb3B5IHRvIG92ZXJ3cml0
ZSB0aGUgZXhpc3Rpbmcgc3VyZmFjZS4KKyAgICBncmFwaGljc0NvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZUNvcHkpOworCisgICAgZm9yIChjb25zdCBhdXRv
JiB1cGRhdGVSZWN0IDogdXBkYXRlSW5mby51cGRhdGVSZWN0cykgeworICAgICAgICBJbnRSZWN0
IHNyY1JlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJlY3RM
b2NhdGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKKyAgICAgICAgYml0bWFwLT5w
YWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxlRmFjdG9yKCksIHVwZGF0ZVJlY3QubG9j
YXRpb24oKSwgc3JjUmVjdCk7CisgICAgfQorCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBvdXRw
dXQ7CisgICAgaHIgPSBiaXRtYXBSZW5kZXJUYXJnZXQtPkdldEJpdG1hcCgmb3V0cHV0KTsKKyAg
ICBEMkQxX1BPSU5UXzJVIGRlc3RQb2ludCA9IEQyRDE6OlBvaW50MlUoKTsKKyAgICBhdXRvIHNp
emUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6ZShvdXRwdXQuZ2V0KCkpOworICAgIEQyRDFfUkVDVF9V
IGRlc3RSZWN0ID0gRDJEMTo6UmVjdFUoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKKyAgICBociA9IG1fYmFja2VuZC0+c3VyZmFjZSgpLT5Db3B5RnJvbUJpdG1hcCgmZGVzdFBv
aW50LCBvdXRwdXQuZ2V0KCksICZkZXN0UmVjdCk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpz
Y3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zm
c2V0KQoreworICAgIGlmIChzY3JvbGxPZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFdURkxvZ0Fsd2F5cygiQmFja2luZ1N0b3JlOjpzY3JvbGwiKTsKKworICAgIEFTU0VS
VChtX2JhY2tlbmQpOworICAgIG1fYmFja2VuZC0+c2Nyb2xsKHNjcm9sbFJlY3QsIHNjcm9sbE9m
ZnNldCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCShyZXZpc2lv
biAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJv
eHlXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViQ29yZUluc3RhbmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dN
ZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisKKyNpZiBV
U0UoQ0YpCiAjaW5jbHVkZSA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CisjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTI2NSwyMCArMjY4LDMyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ2xvc2VGcm8KIAogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JQYWdlVVJMKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1s
VVJMUmVmID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChXZWJDb3JlOjp3ZWJLaXRC
dW5kbGUoKSwgQ0ZTVFIoIk1haW4iKSwgQ0ZTVFIoImh0bWwiKSwgQ0ZTVFIoIldlYkluc3BlY3Rv
clVJIikpKTsKICAgICByZXR1cm4gQ0ZVUkxHZXRTdHJpbmcoaHRtbFVSTFJlZi5nZXQoKSk7Cisj
ZWxzZQorICAgIHJldHVybiB7IH07CisjZW5kaWYKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpCiB7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHRtbFVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwo
V2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENGU1RSKCJUZXN0IiksIENGU1RSKCJodG1sIiksIENG
U1RSKCJXZWJJbnNwZWN0b3JVSSIpKSk7CiAgICAgcmV0dXJuIENGVVJMR2V0U3RyaW5nKGh0bWxV
UkxSZWYuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCiB9CiAKIFN0cmlu
ZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpCiB7CisjaWYgVVNFKENGKQog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYmFzZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5
UmVzb3VyY2VVUkwoV2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENGU1RSKCJXZWJJbnNwZWN0b3JV
SSIpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgcmV0dXJuIENGVVJMR2V0U3RyaW5nKGJhc2VV
UkxSZWYuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCiB9CiAKIHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDg0
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdl
YldoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
V2luLmgiCiAjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgpAQCAtNTMsMTQgKzUyLDI2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V2luZG93c1RvdWNoLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KLSNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5r
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmgiCisjZW5kaWYKKworI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlIDxj
YWlyby13aW4zMi5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisjZW5kaWYgCisKKyNpZiBVU0UoRElS
RUNUMkQpCisjaW5jbHVkZSA8V2ViQ29yZS9EaXJlY3QyRFV0aWxpdGllcy5oPgorI2VuZGlmCisK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDcx
LDYgKzQ4Miw3IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmUKICAg
ICBpZiAoYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcyo+KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwb3J0IFdlYktpdDEncyByZWN0IGNvYWxlc2NpbmcgbG9naWMgaGVy
ZS4KICAgICAgICAgUmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsKKyNpZiBVU0UoQ0FJUk8pCiAgICAg
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX3dpbjMyX3N1cmZhY2VfY3JlYXRl
KGhkYyk7CiAgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7
CiAKQEAgLTQ3OCw2ICs0OTAsMTMgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25z
dCBJbnRSZQogCiAgICAgICAgIGNhaXJvX2Rlc3Ryb3koY29udGV4dCk7CiAgICAgICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKyNlbHNlCisgICAgICAgIFJFQ1QgZDJEaXJ0eVJl
Y3QgPSBkaXJ0eVJlY3Q7CisgICAgICAgIGlmIChDT01QdHI8SUQyRDFEQ1JlbmRlclRhcmdldD4g
cmVuZGVyVGFyZ2V0ID0gZHJhd2luZ0FyZWEtPnJlbmRlclRhcmdldCgpKSB7CisgICAgICAgICAg
ICByZW5kZXJUYXJnZXQtPkJpbmREQyhoZGMsICZkMkRpcnR5UmVjdCk7CisgICAgICAgICAgICBk
cmF3aW5nQXJlYS0+cGFpbnQocmVuZGVyVGFyZ2V0LmdldCgpLCBkaXJ0eVJlY3QsIHVucGFpbnRl
ZFJlZ2lvbik7CisgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgIGF1dG8gdW5wYWludGVkUmVj
dHMgPSB1bnBhaW50ZWRSZWdpb24ucmVjdHMoKTsKICAgICAgICAgZm9yIChhdXRvJiByZWN0IDog
dW5wYWludGVkUmVjdHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNz
YWdlTGlzdGVuZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaD4KKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYK
KworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29w
U291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpAQCAtMjQxLDYgKzI0OCw3IEBAIHZvaWQgRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjptYWkKICAgICAgICAgbV9wcmV2aW91c0xheWVyVHJl
ZUhvc3QtPmNvbnRlbnRzU2l6ZUNoYW5nZWQoc2l6ZSk7CiB9CiAKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQgRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewogICAg
IGlmIChtX2xheWVyVHJlZUhvc3QpCkBAIC0yNTYsNiArMjY0LDcgQEAgdm9pZCBEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpZAogICAgIGVsc2UgaWYgKG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0KQogICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdC0+ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKFdURk1vdmUoYXR0cnMpKTsKIH0KKyNlbmRpZgogCiBHcmFwaGljc0xheWVy
RmFjdG9yeSogRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpncmFwaGljc0xheWVyRmFj
dG9yeSgpCiB7CkBAIC03NDQsNiArNzUzLDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjpkaXMKICAgICAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0cy5hcHBlbmQocmVj
dCk7CiAgICAgfQogCisjaWYgVVNFKERJUkVDVDJEKQorICAgIGJpdG1hcC0+c3luYygqZ3JhcGhp
Y3NDb250ZXh0KTsKKyNlbmRpZgorCiAgICAgLy8gTGF5b3V0IGNhbiB0cmlnZ2VyIG1vcmUgY2Fs
bHMgdG8gc2V0TmVlZHNEaXNwbGF5IGFuZCB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3MgdGhlbQog
ICAgIC8vIHVudGlsIHRoZSBVSSBwcm9jZXNzIGhhcyBwYWludGVkIHRoZSB1cGRhdGUsIHNvIHdl
IHN0b3AgdGhlIHRpbWVyIGhlcmUuCiAgICAgbV9kaXNwbGF5VGltZXIuc3RvcCgpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0UGFpbnRpbmdFbmFibGVkKGJvb2wgcGFpbnRpbmdFbmFibGVkKSBvdmVycmlkZSB7
IG1faXNQYWludGluZ0VuYWJsZWQgPSBwYWludGluZ0VuYWJsZWQ7IH07CiAgICAgdm9pZCB1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IG92ZXJyaWRlOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVS
RV9NQVBQRVIpCiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3Bl
Y3RvclVJV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMjIgQEAgYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2Fu
U2F2ZSgpCiAKIFN0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7
CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc3RyaW5nc1VSTFJlZiA9IGFk
b3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoV2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENG
U1RSKCJsb2NhbGl6ZWRTdHJpbmdzIiksIENGU1RSKCJqcyIpLCBDRlNUUigiV2ViSW5zcGVjdG9y
VUkiKSkpOwogICAgIHJldHVybiBDRlVSTEdldFN0cmluZyhzdHJpbmdzVVJMUmVmLmdldCgpKTsK
KyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgogfQogCiBTdHJpbmcgUmVtb3RlV2ViSW5z
cGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogeworI2lmIFVTRShDRikKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHN0cmluZ3NVUkxSZWYgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291
cmNlVVJMKFdlYkNvcmU6OndlYktpdEJ1bmRsZSgpLCBDRlNUUigibG9jYWxpemVkU3RyaW5ncyIp
LCBDRlNUUigianMiKSwgQ0ZTVFIoIldlYkluc3BlY3RvclVJIikpKTsKICAgICByZXR1cm4gQ0ZV
UkxHZXRTdHJpbmcoc3RyaW5nc1VSTFJlZi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB7IH07
CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAkocmV2aXNpb24g
MjQ4NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkF1eGls
aWFyeVByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPE9i
amJhc2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTQyLDYgKzQzLDkgQEAgcHVibGljOgogCiBpbnQgV2ViUHJvY2Vzc01haW5XaW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogeworICAgIC8vIFdlIFByb2Nlc3MgdXNlcyBEaXJlY3RYCisgICAg
SFJFU1VMVCBociA9IDo6Q29Jbml0aWFsaXplRXgobnVsbHB0ciwgQ09JTklUX01VTFRJVEhSRUFE
RUQpOworICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBBdXhp
bGlhcnlQcm9jZXNzTWFpbjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBh
bmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogUGxhdGZvcm1GVFcuY21ha2U6IEFkZGVkLgorCiAyMDE5LTA4LTA2ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggQXBw
bGVXaW4gYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBpZiAoTVNWQykKICAgICAgICAgQ09NTUFORCAke1BFUkxf
RVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9u
LXN0YW1wLnBsICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9ICQ8VEFSR0VUX0ZJ
TEU6V2ViS2l0TGVnYWN5PgogICAgICAgICBWRVJCQVRJTSkKIAotICAgICBpZiAoTk9UIFdURl9Q
TEFURk9STV9XSU5fQ0FJUk8pCisgICAgIGlmIChBUFBMRSkKICAgICAgICAgIGFkZF9zdWJkaXJl
Y3Rvcnkod2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMpCiAgICAgIGVuZGlmICgpCiBlbmRp
ZiAoKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybUZUVy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtRlRXLmNtYWtlCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NjggQEAKK2FkZF9kZWZpbml0aW9ucygtRFVTRV9ESVJFQ1QyRD0xIC1E
VVNFX0NVUkw9MSAtRFdFQktJVF9FWFBPUlRTPTEpCitsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lf
UFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7V0VCS0lUX0xJQlJBUklFU19ESVJ9
L2luY2x1ZGUiCispCitsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfU09VUkNFU19DbGFzc2VzCisg
ICAgd2luL1dlYkRvd25sb2FkQ1VSTC5jcHAKKyAgICB3aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXJDVVJMLmNwcAorKQorbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X0xJQlJB
UklFUworICAgICR7T1BFTlNTTF9MSUJSQVJJRVN9CisgICAgUFJJVkFURSBtZnV1aWQubGliCisg
ICAgUFJJVkFURSBzdHJtaWlkcy5saWIKKyAgICBQUklWQVRFICR7TElCWE1MMl9MSUJSQVJJRVN9
CisgICAgUFJJVkFURSAke0xJQlhTTFRfTElCUkFSSUVTfQorICAgIFBSSVZBVEUgJHtTUUxJVEVf
TElCUkFSSUVTfQorICAgIFBSSVZBVEUgJHtaTElCX0xJQlJBUklFU30KKykKKworYWRkX2N1c3Rv
bV9jb21tYW5kKAorICAgIE9VVFBVVCAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9XZWJLaXRWZXJzaW9uLmgKKyAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJLSVRMRUdBQ1lfRElS
fS9zY3JpcHRzL2dlbmVyYXRlLXdlYmtpdHZlcnNpb24ucGwKKyAgICBERVBFTkRTICR7V0VCS0lU
TEVHQUNZX0RJUn0vbWFjL0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25maWcKKyAgICBDT01N
QU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVExFR0FDWV9ESVJ9L3NjcmlwdHMvZ2VuZXJh
dGUtd2Via2l0dmVyc2lvbi5wbCAtLWNvbmZpZyAke1dFQktJVExFR0FDWV9ESVJ9L21hYy9Db25m
aWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnIC0tb3V0cHV0RGlyICR7V2ViS2l0TGVnYWN5X0RF
UklWRURfU09VUkNFU19ESVJ9CisgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBXZWJLaXRMZWdh
Y3lfU09VUkNFUyAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJLaXRWZXJz
aW9uLmgpCisKK2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9QUklWQVRFX0lOQ0xVREVfRElSRUNU
T1JJRVMKKyAgICAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUiCisgICAg
IiR7Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlIgor
ICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9XZWJDb3JlIgorICAg
ICIke1dFQktJVExFR0FDWV9ESVJ9L3dpbiIKKyAgICAiJHtXRUJLSVRMRUdBQ1lfRElSfS93aW4v
cGx1Z2lucyIKKyAgICAiJHtXRUJLSVRMRUdBQ1lfRElSfS93aW4vV2ViQ29yZVN1cHBvcnQiCisg
ICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L2luY2x1ZGUiCisgICAgIiR7
V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMiCispCisKK2xpc3Qo
QVBQRU5EIFdlYktpdExlZ2FjeV9JTkNMVURFUworICAgIHdpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZy5oCisgICAgd2luL0NPTUVudW1WYXJpYW50LmgKKyAgICB3aW4vQ09NUHJvcGVydHlCYWcu
aAorICAgIHdpbi9DT01WYXJpYW50U2V0dGVyLmgKKyAgICB3aW4vQ29kZUFuYWx5c2lzQ29uZmln
LmgKKyAgICB3aW4vRE9NQ1NTQ2xhc3Nlcy5oCisgICAgd2luL0RPTUNvcmVDbGFzc2VzLmgKKyAg
ICB3aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCisgICAgd2luL0RPTUhUTUxDbGFzc2VzLmgKKyAgICB3
aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuaAorICAgIHdpbi9EZWZhdWx0UG9saWN5RGVsZWdh
dGUuaAorICAgIHdpbi9Gb3JFYWNoQ29DbGFzcy5oCisgICAgd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaAorICAgIHdpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAorICAgIHdpbi9NZW1vcnlT
dHJlYW0uaAorICAgIHdpbi9Qcm9nSURNYWNyb3MuaAorICAgIHdpbi9XZWJBY3Rpb25Qcm9wZXJ0
eUJhZy5oCisgICAgd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAorICAgIHdpbi9XZWJBcmNoaXZl
LmgKKyAgICB3aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKKyAgICB3aW4vV2ViQ2FjaGUuaAorICAg
IHdpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisgICAgd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmgKKyAgICB3aW4vV2ViRGF0YVNvdXJjZS5oCisgICAgd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5oCisgICAgd2luL1dlYkRvY3VtZW50TG9hZGVyLmgKKyAgICB3aW4vV2ViRG93bmxvYWQuaAor
ICAgIHdpbi9XZWJEcm9wU291cmNlLmgKKyAgICB3aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmgK
KyAgICB3aW4vV2ViRXJyb3IuaAorICAgIHdpbi9XZWJGcmFtZS5oCisgICAgd2luL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXIuaAorICAgIHdpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgK
KyAgICB3aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisgICAgd2luL1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5oCisgICAgd2luL1dlYkhpc3RvcnkuaAorICAgIHdpbi9XZWJIaXN0b3J5SXRlbS5o
CisgICAgd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuaAorICAgIHdpbi9XZWJLaXRDT01BUEku
aAorICAgIHdpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuaAorICAgIHdpbi9XZWJLaXRETEwuaAorICAg
IHdpbi9XZWJLaXRHcmFwaGljcy5oCisgICAgd2luL1dlYktpdExvZ2dpbmcuaAorICAgIHdpbi9X
ZWJLaXRTdGF0aXN0aWNzLmgKKyAgICB3aW4vV2ViS2l0U3RhdGlzdGljc1ByaXZhdGUuaAorICAg
IHdpbi9XZWJLaXRTeXN0ZW1CaXRzLmgKKyAgICB3aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmgK
KyAgICB3aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuaAorICAgIHdpbi9XZWJOYXZpZ2F0aW9uRGF0
YS5oCisgICAgd2luL1dlYk5vdGlmaWNhdGlvbi5oCisgICAgd2luL1dlYk5vdGlmaWNhdGlvbkNl
bnRlci5oCisgICAgd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisgICAgd2luL1dlYlBy
ZWZlcmVuY2VzLmgKKyAgICB3aW4vV2ViUmVzb3VyY2UuaAorICAgIHdpbi9XZWJTY3JpcHRPYmpl
Y3QuaAorICAgIHdpbi9XZWJTY3JpcHRXb3JsZC5oCisgICAgd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmgKKyAgICB3aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuaAorICAgIHdpbi9XZWJUZXh0UmVuZGVy
ZXIuaAorICAgIHdpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCisgICAgd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgKKyAgICB3aW4vV2ViVVJMQ3JlZGVu
dGlhbC5oCisgICAgd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5oCisgICAgd2luL1dlYlVSTFJl
c3BvbnNlLmgKKyAgICB3aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKyAgICB3aW4vV2Vi
Vmlldy5oCisgICAgd2luL1dlYldvcmtlcnNQcml2YXRlLmgKKykKKworbGlzdChBUFBFTkQgV2Vi
S2l0TGVnYWN5X1NPVVJDRVNfQ2xhc3NlcworICAgIHdpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKyAg
ICB3aW4vQWNjZXNzaWJsZURvY3VtZW50LmNwcAorICAgIHdpbi9BY2Nlc3NpYmxlSW1hZ2UuY3Bw
CisgICAgd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAKKyAgICB3aW4vQmFja0ZvcndhcmRMaXN0
LmNwcAorICAgIHdpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKyAgICB3aW4vRE9NQ1NT
Q2xhc3Nlcy5jcHAKKyAgICB3aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisgICAgd2luL0RPTUV2ZW50
c0NsYXNzZXMuY3BwCisgICAgd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorICAgIHdpbi9EZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZS5jcHAKKyAgICB3aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAor
ICAgIHdpbi9Gb3JFYWNoQ29DbGFzcy5jcHAKKyAgICB3aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAKKyAgICB3aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorICAgIHdpbi9NZW1vcnlT
dHJlYW0uY3BwCisgICAgd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorICAgIHdpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcAorICAgIHdpbi9XZWJBcmNoaXZlLmNwcAorICAgIHdpbi9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCisgICAgd2luL1dlYkNhY2hlLmNwcAorICAgIHdpbi9XZWJDb3Jl
U3RhdGlzdGljcy5jcHAKKyAgICB3aW4vV2ViRGF0YVNvdXJjZS5jcHAKKyAgICB3aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcAorICAgIHdpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKyAgICB3aW4v
V2ViRG93bmxvYWQuY3BwCisgICAgd2luL1dlYkRyb3BTb3VyY2UuY3BwCisgICAgd2luL1dlYkVs
ZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKyAgICB3aW4vV2ViRXJyb3IuY3BwCisgICAgd2luL1dlYkZy
YW1lLmNwcAorICAgIHdpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorICAgIHdpbi9XZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorICAgIHdpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcAorICAgIHdpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisgICAgd2luL1dlYkhp
c3RvcnkuY3BwCisgICAgd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorICAgIHdpbi9XZWJJbnNwZWN0
b3IuY3BwCisgICAgd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCisgICAgd2luL1dlYktp
dENPTUFQSS5jcHAKKyAgICB3aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorICAgIHdpbi9XZWJL
aXRETEwuY3BwCisgICAgd2luL1dlYktpdExvZ2dpbmcuY3BwCisgICAgd2luL1dlYktpdE1lc3Nh
Z2VMb29wLmNwcAorICAgIHdpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorICAgIHdpbi9XZWJLaXRT
eXN0ZW1CaXRzLmNwcAorICAgIHdpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisgICAgd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorICAgIHdpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAK
KyAgICB3aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAKKyAgICB3aW4vV2ViTm90aWZpY2F0aW9uLmNw
cAorICAgIHdpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisgICAgd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAorICAgIHdpbi9XZWJSZXNvdXJjZS5jcHAKKyAgICB3aW4vV2ViU2NyaXB0T2JqZWN0
LmNwcAorICAgIHdpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKyAgICB3aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCisgICAgd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorICAgIHdpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCisgICAgd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAor
ICAgIHdpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKyAgICB3aW4v
V2ViVVJMQ3JlZGVudGlhbC5jcHAKKyAgICB3aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAor
ICAgIHdpbi9XZWJVUkxSZXNwb25zZS5jcHAKKyAgICB3aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcAorICAgIHdpbi9XZWJWaWV3LmNwcAorICAgIHdpbi9XZWJXb3JrZXJzUHJpdmF0ZS5j
cHAKKworICAgIHdpbi9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorICAgIHdpbi9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcAorICAgIHdpbi9wbHVnaW5zL1BsdWdpbkRlYnVnLmNwcAor
ICAgIHdpbi9wbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCisgICAgd2luL3Bs
dWdpbnMvUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5jcHAKKyAgICB3aW4vcGx1Z2lucy9QbHVn
aW5QYWNrYWdlLmNwcAorICAgIHdpbi9wbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisgICAg
d2luL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorICAgIHdpbi9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisgICAgd2luL3BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKyAgICB3aW4vcGx1Z2lucy9u
cGFwaS5jcHAKKworICAgIHdpbi9zdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCispCisK
K2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9TT1VSQ0VTX1dlYkNvcmVTdXBwb3J0CisgICAgd2lu
L1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorICAgIHdp
bi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBv
cnQvRW1iZWRkZWRXaWRnZXQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisgICAgd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorICAgIHdpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorICAgIHdpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisg
ICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKyAgICB3aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JEZWxlZ2F0ZS5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdh
dGUuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisg
ICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisgICAgd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKKyAgICB3aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaXRlZExpbmtTdG9yZS5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5oCispCisKK2lmIChDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDgpCisgICAgZW5h
YmxlX2xhbmd1YWdlKEFTTV9NQVNNKQorICAgIGlmIChNU1ZDKQorICAgICAgICBzZXQoTUFTTV9F
WEVDVVRBQkxFIG1sNjQpCisgICAgICAgIHNldChNQVNNX0ZMQUdTIC9jIC9GbykKKyAgICAgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICAgICAgT1VUUFVUICR7V2ViS2l0TGVnYWN5X0RF
UklWRURfU09VUkNFU19ESVJ9L1BhaW50SG9va3Mub2JqCisgICAgICAgICAgICBNQUlOX0RFUEVO
REVOQ1kgd2luL3BsdWdpbnMvUGFpbnRIb29rcy5hc20KKyAgICAgICAgICAgIENPTU1BTkQgJHtN
QVNNX0VYRUNVVEFCTEV9ICR7TUFTTV9GTEFHU30KKyAgICAgICAgICAgICAgICAke1dlYktpdExl
Z2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9QYWludEhvb2tzLm9iagorICAgICAgICAgICAgICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93aW4vcGx1Z2lucy9QYWludEhvb2tzLmFzbQor
ICAgICAgICAgICAgVkVSQkFUSU0pCisgICAgICAgIGxpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9T
T1VSQ0VTCisgICAgICAgICAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Q
YWludEhvb2tzLm9iagorICAgICAgICApCisgICAgZWxzZSAoKQorICAgICAgICBsaXN0KEFQUEVO
RCBXZWJLaXRMZWdhY3lfU09VUkNFUworICAgICAgICAgICAgd2luL3BsdWdpbnMvUGFpbnRIb29r
cy5hc20KKyAgICAgICAgKQorICAgIGVuZGlmICgpCitlbmRpZiAoKQorCitpZiAoQ09NUElMRVJf
SVNfR0NDX09SX0NMQU5HKQorICAgIFdFQktJVF9BRERfVEFSR0VUX0NYWF9GTEFHUyhXZWJLaXRM
ZWdhY3kgLVduby1vdmVybG9hZGVkLXZpcnR1YWwpCitlbmRpZiAoKQorCitsaXN0KEFQUEVORCBX
ZWJLaXRMZWdhY3lfU09VUkNFUyAke1dlYktpdExlZ2FjeV9JTkNMVURFU30gJHtXZWJLaXRMZWdh
Y3lfU09VUkNFU19DbGFzc2VzfSAke1dlYktpdExlZ2FjeV9TT1VSQ0VTX1dlYkNvcmVTdXBwb3J0
fSkKKworc291cmNlX2dyb3VwKEluY2x1ZGVzIEZJTEVTICR7V2ViS2l0TGVnYWN5X0lOQ0xVREVT
fSkKK3NvdXJjZV9ncm91cChDbGFzc2VzIEZJTEVTICR7V2ViS2l0TGVnYWN5X1NPVVJDRVNfQ2xh
c3Nlc30pCitzb3VyY2VfZ3JvdXAoV2ViQ29yZVN1cHBvcnQgRklMRVMgJHtXZWJLaXRMZWdhY3lf
U09VUkNFU19XZWJDb3JlU3VwcG9ydH0pCisKKyMgQnVpbGQgdGhlIENPTSBpbnRlcmZhY2U6Citt
YWNybyhHRU5FUkFURV9JTlRFUkZBQ0UgX2luZmlsZSBfZGVmaW5lcyBfZGVwZW5kcykKKyAgICBn
ZXRfZmlsZW5hbWVfY29tcG9uZW50KF9maWxld2UgJHtfaW5maWxlfSBOQU1FX1dFKQorICAgIGFk
ZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICAke1dlYktpdExlZ2FjeV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzLyR7X2ZpbGV3ZX0uaAorICAgICAgICBNQUlOX0RFUEVO
REVOQ1kgJHtfaW5maWxlfQorICAgICAgICBERVBFTkRTICR7X2RlcGVuZHN9CisgICAgICAgIENP
TU1BTkQgbWlkbC5leGUgL0kgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93aW4vSW50ZXJm
YWNlcyIgL0kgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93aW4vSW50ZXJmYWNlcy9BY2Nl
c3NpYmxlMiIgL0kgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L2luY2x1ZGUi
IC9JICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2luIiAvV1ggL2NoYXIgc2lnbmVkIC9l
bnYgd2luMzIgL3RsYiAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9LyR7X2ZpbGV3
ZX0udGxiIiAvb3V0ICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZh
Y2VzIiAvaCAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy8k
e19maWxld2V9LmgiIC9paWQgIiR7X2ZpbGV3ZX1faS5jIiAke19kZWZpbmVzfSAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9LyR7X2luZmlsZX0iCisgICAgICAgIFVTRVNfVEVSTUlOQUwgVkVS
QkFUSU0pCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7V2ViS2l0TGVnYWN5X0RF
UklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvJHtfZmlsZXdlfS5oIFBST1BFUlRJRVMgR0VO
RVJBVEVEIFRSVUUpCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7V2ViS2l0TGVn
YWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvJHtfZmlsZXdlfV9pLmMgUFJPUEVS
VElFUyBHRU5FUkFURUQgVFJVRSkKK2VuZG1hY3JvKCkKKworc2V0KE1JRExfREVGSU5FUyAvRFwg
XCJfX1BST0RVQ1RJT05fXz0wMVwiKQorCitzZXQoV0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJ
RVMKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFyYWJsZS5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9ET01DU1MuaWRsCisgICAgd2luL0ludGVyZmFjZXMvRE9NQ29yZS5pZGwKKyAg
ICB3aW4vSW50ZXJmYWNlcy9ET01FdmVudHMuaWRsCisgICAgd2luL0ludGVyZmFjZXMvRE9NRXh0
ZW5zaW9ucy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9ET01IVE1MLmlkbAorICAgIHdpbi9JbnRl
cmZhY2VzL0RPTVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvRE9NUmFuZ2UuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvRE9NV2luZG93LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lHRU5f
RE9NT2JqZWN0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJBcmNoaXZlLmlkbAorICAgIHdp
bi9JbnRlcmZhY2VzL0lXZWJCYWNrRm9yd2FyZExpc3QuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkNh
Y2hlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJDb3JlU3RhdGlzdGljcy5pZGwKKyAgICB3
aW4vSW50ZXJmYWNlcy9JV2ViRGF0YVNvdXJjZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2Vi
RGF0YWJhc2VNYW5hZ2VyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJEb2N1bWVudC5pZGwK
KyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRG93bmxvYWQuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYkVkaXRpbmdEZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRW1iZWRkZWRW
aWV3LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJFcnJvci5pZGwKKyAgICB3aW4vSW50ZXJm
YWNlcy9JV2ViRXJyb3JQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJGb3JtRGVs
ZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lLmlkbAorICAgIHdpbi9JbnRl
cmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2Vi
RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJGcmFt
ZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVBy
aXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lVmlldy5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9JV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9J
V2ViR2VvbG9jYXRpb25Qcm92aWRlci5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSFRNTFJl
cHJlc2VudGF0aW9uLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJIVFRQVVJMUmVzcG9uc2Uu
aWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnkuaWRsCisgICAgd2luL0ludGVyZmFj
ZXMvSVdlYkhpc3RvcnlEZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9y
eUl0ZW0uaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5pZGwK
KyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeVByaXZhdGUuaWRsCisgICAgd2luL0ludGVy
ZmFjZXMvSVdlYkluc3BlY3Rvci5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9y
UHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5p
ZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViS2l0U3RhdGlzdGljcy5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViTXV0YWJsZVVSTFJlcXVlc3QuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdl
Yk11dGFibGVVUkxSZXF1ZXN0UHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViTmF2
aWdhdGlvbkRhdGEuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYk5vdGlmaWNhdGlvbi5pZGwK
KyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorICAgIHdpbi9J
bnRlcmZhY2VzL0lXZWJOb3RpZmljYXRpb25PYnNlcnZlci5pZGwKKyAgICB3aW4vSW50ZXJmYWNl
cy9JV2ViUG9saWN5RGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlBvbGljeURl
bGVnYXRlUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRs
CisgICAgd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9JV2ViUmVzb3VyY2UuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlJlc291
cmNlTG9hZERlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlJlc291cmNlTG9hZERl
bGVnYXRlUHJpdmF0ZTIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlNjcmlwdE9iamVjdC5p
ZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViU2NyaXB0V29ybGQuaWRsCisgICAgd2luL0ludGVy
ZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJTZXJp
YWxpemVkSlNWYWx1ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViU2VyaWFsaXplZEpTVmFs
dWVQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJUZXh0UmVuZGVyZXIuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYlVJRGVsZWdhdGUyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlUHJp
dmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlVSTFJlcXVlc3QuaWRsCisgICAgd2luL0lu
dGVyZmFjZXMvSVdlYlVSTFJlc3BvbnNlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVUkxS
ZXNwb25zZVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlVuZG9NYW5hZ2VyLmlk
bAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVbmRvVGFyZ2V0LmlkbAorICAgIHdpbi9JbnRlcmZh
Y2VzL0lXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdl
YlZpZXcuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAorICAgIHdp
bi9JbnRlcmZhY2VzL0lXZWJXb3JrZXJzUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9K
YXZhU2NyaXB0Q29yZUFQSVR5cGVzLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwK
KyAgICB3aW4vSW50ZXJmYWNlcy9XZWJTY3JvbGxiYXJUeXBlcy5pZGwKKworICAgIHdpbi9JbnRl
cmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGUyXzIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNzaWJs
ZTIvQWNjZXNzaWJsZUFwcGxpY2F0aW9uLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGVFZGl0YWJsZVRleHQuaWRsCisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNz
aWJsZTIvQWNjZXNzaWJsZVJlbGF0aW9uLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsCisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIv
QWNjZXNzaWJsZVRleHQuaWRsCisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNz
aWJsZVRleHQyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5
cGVzLmlkbAorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbmNsdWRl
L2F1dG92ZXJzaW9uLmgiCispCisKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtX
ZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vaW5jbHVkZS9hdXRvdmVyc2lvbi5oCisg
ICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9TT1VSQ0VfRElSfQorICAgIENPTU1BTkQgJHtQ
RVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvYXV0
by12ZXJzaW9uLnBsICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgVkVS
QkFUSU0pCisKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsICR7
TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lFU30iKQorR0VORVJB
VEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVBcHBsaWNh
dGlvbi5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVT
fSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNz
aWJsZTIuaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lF
U30iKQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vz
c2libGUyXzIuaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVO
Q0lFU30iKQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0Fj
Y2Vzc2libGVSZWxhdGlvbi5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExf
REVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNz
aWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FD
WV9JRExfREVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMv
QWNjZXNzaWJsZTIvSUEyQ29tbW9uVHlwZXMuaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRM
RUdBQ1lfSURMX0RFUEVOREVOQ0lFU30iKQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVFZGl0YWJsZVRleHQuaWRsICR7TUlETF9ERUZJTkVT
fSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lFU30iKQorR0VORVJBVEVfSU5URVJGQUNF
KHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVUZXh0LmlkbCAke01JRExfREVG
SU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVS
RkFDRSh3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlVGV4dDIuaWRsICR7TUlE
TF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lFU30iKQorCithZGRfbGli
cmFyeShXZWJLaXRMZWdhY3lHVUlEIFNUQVRJQworICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL1dlYktpdC5oIgorICAgICIke1dlYktpdExlZ2FjeV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVBcHBsaWNhdGlvbi5oIgor
ICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vz
c2libGUyLmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVy
ZmFjZXMvQWNjZXNzaWJsZTJfMi5oIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVSZWxhdGlvbi5oIgorICAgICIke1dlYktpdExl
Z2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVTdGF0ZXMuaCIK
KyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9JQTJD
b21tb25UeXBlcy5oIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bnRlcmZhY2VzL0FjY2Vzc2libGVFZGl0YWJsZVRleHQuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlVGV4dC5oIgorICAgICIk
e1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVU
ZXh0Mi5oIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZh
Y2VzL1dlYktpdF9pLmMiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9
L0ludGVyZmFjZXMvQWNjZXNzaWJsZUFwcGxpY2F0aW9uX2kuYyIKKyAgICAiJHtXZWJLaXRMZWdh
Y3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMl9pLmMiCisgICAg
IiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJs
ZTJfMl9pLmMiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVy
ZmFjZXMvQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0X2kuYyIKKyAg
ICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlVGV4dF9pLmMiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0lu
dGVyZmFjZXMvQWNjZXNzaWJsZVRleHQyX2kuYyIKKykKK3NldF90YXJnZXRfcHJvcGVydGllcyhX
ZWJLaXRMZWdhY3lHVUlEIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgV2ViS2l0R1VJRCR7REVCVUdf
U1VGRklYfSkKKworbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X0xJQlJBUklFUworICAgIFBSSVZB
VEUgQ29tY3RsMzIKKyAgICBQUklWQVRFIENvbXN1cHAKKyAgICBQUklWQVRFIENyeXB0MzIKKyAg
ICBQUklWQVRFIEQyZDEKKyAgICBQUklWQVRFIER3cml0ZQorICAgIFBSSVZBVEUgRHhndWlkCisg
ICAgUFJJVkFURSBJcGhscGFwaQorICAgIFBSSVZBVEUgUHNhcGkKKyAgICBQUklWQVRFIFJwY3J0
NAorICAgIFBSSVZBVEUgU2hsd2FwaQorICAgIFBSSVZBVEUgVXNwMTAKKyAgICBQUklWQVRFIFZl
cnNpb24KKyAgICBQUklWQVRFIFdlYktpdEdVSUQke0RFQlVHX1NVRkZJWH0KKyAgICBQUklWQVRF
IFdpbmRvd3NDb2RlY3MKKyAgICBQUklWQVRFIFdpbm1tCispCisKK3NldChDTUFLRV9TSEFSRURf
TElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9IC9TVUJTWVNURU06V0lO
RE9XUyIpCitzZXQoQ01BS0VfRVhFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZM
QUdTfSAvU1VCU1lTVEVNOldJTkRPV1MiKQorCisjIFdlIG5lZWQgdGhlIHdlYmtpdCBsaWJyYXJp
ZXMgdG8gY29tZSBiZWZvcmUgdGhlIHN5c3RlbSBkZWZhdWx0IGxpYnJhcmllcyB0byBwcmV2ZW50
IHN5bWJvbCBjb25mbGljdHMgd2l0aCB1dWlkLmxpYi4KKyMgVG8gZG8gdGhpcyB3ZSBhZGQgc3lz
dGVtIGRlZmF1bHQgbGlicyBhcyB3ZWJraXQgbGlicyBhbmQgemVybyBvdXQgc3lzdGVtIGRlZmF1
bHQgbGlicy4KK3N0cmluZyhSRVBMQUNFICIgIiAiXDsiIENYWF9MSUJTICR7Q01BS0VfQ1hYX1NU
QU5EQVJEX0xJQlJBUklFU30pCitsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfTElCUkFSSUVTICR7
Q1hYX0xJQlN9KQorc2V0KENNQUtFX0NYWF9TVEFOREFSRF9MSUJSQVJJRVMgIiIpCisKK3NldChD
TUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICR7
TVNWQ19SVU5USU1FX0xJTktFUl9GTEFHU30iKQorCisjIElmIHRoaXMgZGlyZWN0b3J5IGlzbid0
IGNyZWF0ZWQgYmVmb3JlIG1pZGwgcnVucyBhbmQgYXR0ZW1wdHMgdG8gb3V0cHV0IFdlYktpdC50
bGIsCisjIEl0IGZhaWxzIHdpdGggYW4gdW51c3VhbCBlcnJvciAtIG1pZGwgZmFpbGVkIC0gZmFp
bGVkIHRvIHNhdmUgYWxsIGNoYW5nZXMKK2ZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9KQorZmlsZShNQUtFX0RJUkVDVE9SWSAke1dlYktpdExlZ2Fj
eV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzKQorCitzZXQoV2ViS2l0TGVnYWN5X1BV
QkxJQ19GUkFNRVdPUktfSEVBREVSUworICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZTIuaAorICAgICR7V2ViS2l0TGVnYWN5X0RFUklW
RURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZTJfMi5oCisgICAgJHtXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQXBwbGljYXRp
b24uaAorICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMv
QWNjZXNzaWJsZUVkaXRhYmxlVGV4dC5oCisgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlUmVsYXRpb24uaAorICAgICR7V2ViS2l0TGVn
YWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZVN0YXRlcy5oCisg
ICAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlVGV4dC5oCisgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJm
YWNlcy9BY2Nlc3NpYmxlVGV4dDIuaAorICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVJ9L0ludGVyZmFjZXMvSUEyQ29tbW9uVHlwZXMuaAorICAgICR7V2ViS2l0TGVnYWN5X0RF
UklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvV2ViS2l0LmgKKworICAgIHdpbi9BY2Nlc3Np
YmxlQmFzZS5oCisgICAgd2luL0FjY2Vzc2libGVEb2N1bWVudC5oCisgICAgd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmgKKyAgICB3aW4vV2ViRGF0YVNvdXJjZS5oCisgICAgd2luL1dlYkZy
YW1lLmgKKyAgICB3aW4vV2ViS2l0Q09NQVBJLmgKKykKKworV0VCS0lUX01BS0VfRk9SV0FSRElO
R19IRUFERVJTKFdlYktpdExlZ2FjeUdVSUQKKyAgICBUQVJHRVRfTkFNRSBXZWJLaXRMZWdhY3lG
cmFtZXdvcmtIZWFkZXJzCisgICAgREVTVElOQVRJT04gJHtXZWJLaXRMZWdhY3lfRlJBTUVXT1JL
X0hFQURFUlNfRElSfS9XZWJLaXRMZWdhY3kKKyAgICBGSUxFUyAke1dlYktpdExlZ2FjeV9QVUJM
SUNfRlJBTUVXT1JLX0hFQURFUlN9CisgICAgRkxBVFRFTkVECispCithZGRfZGVwZW5kZW5jaWVz
KFdlYktpdExlZ2FjeUZyYW1ld29ya0hlYWRlcnMgV2ViQ29yZVByaXZhdGVGcmFtZXdvcmtIZWFk
ZXJzKQorCitzZXQoV2ViS2l0TGVnYWN5X09VVFBVVF9OQU1FCisgICAgV2ViS2l0JHtERUJVR19T
VUZGSVh9CispCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0
MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1MiBAQAorMjAxOS0wOC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBbRlRXXSBHZXQgV2ViS2l0LCBXZWJLaXQyLCBhbmQgTWluaUJy
b3dzZXIgYnVpbGRpbmcgYW5kIGV4ZWN1dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDA4
MjU1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfbG9jYWxl
KToKKyAgICAgICAgKiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChDb252
ZXJ0Q0ZUeXBlVG9WYXJpYW50KToKKyAgICAgICAgKENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpS
ZWFkKToKKyAgICAgICAgKENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpXcml0ZSk6CisgICAgICAg
ICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaDoKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJhZy5o
OgorICAgICAgICAoSGFzaFR5cGU+OjpSZWFkKToKKyAgICAgICAgKEhhc2hUeXBlPjo6R2V0UHJv
cGVydHlJbmZvKToKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUhVRFdpbmRvdyk6Cisg
ICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOgorICAgICAgICAqIE1hcnNoYWxs
aW5nSGVscGVycy5jcHA6CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAg
ICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6Cisg
ICAgICAgICogV2ViQXJjaGl2ZS5oOgorICAgICAgICAqIFdlYkNhY2hlLmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAg
ICAgICAqIFdlYktpdENPTUFQSS5jcHA6CisgICAgICAgICogV2ViS2l0Q09NQVBJLmg6CisgICAg
ICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3Ry
aW5ncy5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTktMDctMjggIEZ1amlp
IEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bV0sx
XSBDYW4ndCBjaGFuZ2UgV2ViIEluc3BlY3RvciBmcm9udGVuZCBoZWlnaHQgaW4gaGlnaCBEUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiwxMSBAQCBIUkVTVUxUIEFjY2Vzc2libGVC
YXNlOjpnZXRfbG9jYWxlKF9PdXRfCiAgICAgaWYgKCFtX29iamVjdCkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAorI2lmIFVTRShDRikKICAgICBsb2NhbGUtPmxhbmd1YWdlID0gQlN0cmluZyht
X29iamVjdC0+bGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKS5yZWxlYXNlKCk7Cisj
ZWxzZQorICAgIGxvY2FsZS0+bGFuZ3VhZ2UgPSBCU3RyaW5nKG1fb2JqZWN0LT5sYW5ndWFnZSgp
KS5yZWxlYXNlKCk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAko
cmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBA
IENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW8KICAgICByZXR1cm4gbmV3
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOwogfQogCisjaWYgVVNFKENGKQogdm9pZCBDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZzo6c2V0RGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiB7CiAgICAgbV9kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTsKQEAgLTU3LDYgKzU4
LDcgQEAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBDRkRpY3Rpb25hcnlQcm9wZQogewogICAgIHJl
dHVybiBtX2RpY3Rpb25hcnkuZ2V0KCk7CiB9CisjZW5kaWYKIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCkBAIC05Niw2ICs5OCw3IEBAIFVMT05HIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpS
ZWxlYXNlKCkKIAogc3RhdGljIGJvb2wgQ29udmVydENGVHlwZVRvVmFyaWFudChWQVJJQU5UKiBw
VmFyLCB2b2lkKiBjZk9iaikKIHsKKyNpZiBVU0UoQ0YpCiAgICAgaWYgKCFjZk9iaikgewogICAg
ICAgICBWX1ZUKHBWYXIpID0gVlRfTlVMTDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjEs
OSArMTI0LDExIEBAIHN0YXRpYyBib29sIENvbnZlcnRDRlR5cGVUb1ZhcmlhbnQoVkFSSUEKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorI2lmIFVTRShDRikKIHN0YXRpYyBib29sIENvbnZlcnRWYXJpYW50VG9DRlR5cGUoVkFS
SUFOVCogcFZhciwgdm9pZCoqIGNmT2JqKQogewogICAgIGlmIChWX1ZUKHBWYXIpID09IFZUX05V
TEwpIHsKQEAgLTE1MywxMSArMTU4LDEzIEBAIHN0YXRpYyBib29sIENvbnZlcnRWYXJpYW50VG9D
RlR5cGUoVkFSSUEKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorI2VuZGlmCiAKIEhSRVNV
TFQgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OlJlYWQoTFBDT0xFU1RSIHBzelByb3BOYW1lLCBW
QVJJQU5UICpwVmFyLCBJRXJyb3JMb2cgKiAvKnBFcnJvckxvZyovKQogewogICAgIGlmICghcHN6
UHJvcE5hbWUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisjaWYgVVNFKENGKQogICAgIGlm
IChtX2RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCogdmFsdWU7CiAgICAgICAgIENGU3RyaW5n
UmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQ
cm9wTmFtZSk7CkBAIC0xNzAsNiArMTc3LDcgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZzo6UmVhZChMUAogICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgcmV0dXJuIGhy
OwogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBFX0ZBSUw7CiB9CiAgICAgICAgIApAQCAtMTc3
LDYgKzE4NSw3IEBAIEhSRVNVTFQgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKF8KIHsK
ICAgICBpZiAoIXBzelByb3BOYW1lIHx8ICFwVmFyKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworI2lmIFVTRShDRikKICAgICBpZiAoIW1fZGljdGlvbmFyeSkgewogICAgICAgICBtX2RpY3Rp
b25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogICAgIH0KQEAgLTE4OSw1ICsxOTgsNiBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5
QmFnOjpXcml0ZShfCiAgICAgICAgIENGUmVsZWFzZShjZk9iaik7CiAgICAgICAgIHJldHVybiBT
X09LOwogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBFX0ZBSUw7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmgJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3Bl
cnR5QmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMDksIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0ICsyMywxNSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZ19oCi0j
ZGVmaW5lIENGRGljdGlvbmFyeVByb3BlcnR5QmFnX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0YpCiB0eXBlZGVmIHN0cnVjdCBfX0NGRGljdGlvbmFy
eSogQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZjsKKyNlbmRpZgogCiBjbGFzcyBDRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZyA6IHB1YmxpYyBJUHJvcGVydHlCYWcgewogcHVibGljOgpAQCAtNDAsOCArNDEs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVm
KCk7CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKKyNp
ZiBVU0UoQ0YpCiAgICAgdm9pZCBzZXREaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSk7CiAgICAgV0VCS0lUX0FQSSBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkoKSBjb25zdDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnKCk7CkBAIC01Myw4ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFJlYWQoTFBDT0xFU1RSIHBzelByb3BOYW1lLCBWQVJJQU5UKiwg
SUVycm9yTG9nKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdyaXRl
KF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBfSW5fICBWQVJJQU5UKik7CiAKKyNpZiBVU0Uo
Q0YpCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fZGljdGlvbmFyeTsK
KyNlbmRpZgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwotCi0jZW5kaWYgLy8gQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWdfaApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09N
UHJvcGVydHlCYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Q
cm9wZXJ0eUJhZy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DT01Qcm9wZXJ0eUJhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTIgKzEzOSwxNiBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnCiAgICAgaWYgKGl0ID09IGVu
ZCkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIAorI2lmIFVTRShDRikKICAgICBWQVJU
WVBFIHJlcXVlc3RlZFR5cGUgPSBWX1ZUKHBWYXIpOwogICAgIFZfVlQocFZhcikgPSBWVF9FTVBU
WTsKICAgICBDT01WYXJpYW50U2V0dGVyPFZhbHVlVHlwZT46OnNldFZhcmlhbnQocFZhciwgaXQt
PnZhbHVlKTsKIAogICAgIGlmIChyZXF1ZXN0ZWRUeXBlICE9IENPTVZhcmlhbnRTZXR0ZXI8VmFs
dWVUeXBlPjo6dmFyaWFudFR5cGUoaXQtPnZhbHVlKSAmJiByZXF1ZXN0ZWRUeXBlICE9IFZUX0VN
UFRZKQogICAgICAgICByZXR1cm4gOjpWYXJpYW50Q2hhbmdlVHlwZShwVmFyLCBwVmFyLCBWQVJJ
QU5UX05PVVNFUk9WRVJSSURFIHwgVkFSSUFOVF9BTFBIQUJPT0wsIHJlcXVlc3RlZFR5cGUpOwor
I2Vsc2UKKyAgICBBU1NFUlQoMCk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAt
MjAxLDYgKzIwNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJvcGVydHlCYWcK
ICAgICBpZiAobV9oYXNoTWFwLnNpemUoKSA8PSBpUHJvcGVydHkpCiAgICAgICAgIHJldHVybiBF
X0lOVkFMSURBUkc7CiAKKyNpZiBVU0UoQ0YpCiAgICAgKnBjUHJvcGVydGllcyA9IDA7CiAgICAg
YXV0byBjdXJyZW50ID0gbV9oYXNoTWFwLmJlZ2luKCk7CiAgICAgYXV0byBlbmQgPSBtX2hhc2hN
YXAuZW5kKCk7CkBAIC0yMjAsNiArMjI1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBD
T01Qcm9wZXJ0eUJhZwogICAgICAgICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3Vy
cmVudC0+a2V5Lmxlbmd0aCgpKzEsIGN1cnJlbnQtPmtleS53aWRlQ2hhcmFjdGVycygpLmRhdGEo
KSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4g
U19PSzsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksNyArMjQ5LDkgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNj
cmVlblZpZAogICAgICwgbV9sYXllckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50
Pih0aGlzKSkKICAgICAsIG1fcm9vdENoaWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2Vu
ZGlmCisjaWYgMAogICAgICwgbV9mdWxsc2NyZWVuV2luZG93KHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKKyNlbmRpZgogewogfQogCkBAIC0yNzQs
NiArMjc2LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWaWRlbwogCiB2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiB7CisjaWYg
MAogICAgIGlmICghbV92aWRlb0VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDEz
ICszMDIsMTYgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bAogICAg
IG1fZnVsbHNjcmVlblNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVj
dC50b3ApOwogCiAgICAgY3JlYXRlSFVEV2luZG93KCk7CisjZW5kaWYKIH0KIAogdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCiB7CiAgICAgU2V0V2luZG93
TG9uZ1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7CiAKKyNpZiAwCiAgICAgbV9mdWxsc2NyZWVuV2lu
ZG93ID0gbnVsbHB0cjsKKyNlbmRpZgogCiAgICAgQVNTRVJUKCFJc1dpbmRvdyhtX2h1ZFdpbmRv
dykpOwogICAgIG1faHVkV2luZG93ID0gMDsKQEAgLTQzMiw2ICs0MzgsNyBAQCB2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnJlZ2lzdGVyCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Y3JlYXRlSFVEV2luZG93KCkKIHsKKyNpZiAwCiAgICAgbV9odWRQb3NpdGlvbi5z
ZXRYKChtX2Z1bGxzY3JlZW5TaXplLndpZHRoKCkgLSB3aW5kb3dXaWR0aCkgLyAyKTsKICAgICBt
X2h1ZFBvc2l0aW9uLnNldFkobV9mdWxsc2NyZWVuU2l6ZS5oZWlnaHQoKSAqIGluaXRpYWxIVURQ
b3NpdGlvblkgLSB3aW5kb3dIZWlnaHQgLyAyKTsKIApAQCAtNDYxLDYgKzQ2OCw3IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKICAgICBTZXRXaW5kb3dMb25nUHRy
KG1faHVkV2luZG93LCAwLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPih0aGlzKSk7CiAKICAg
ICBkcmF3KCk7CisjZW5kaWYKIH0KIAogc3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQg
dGltZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDcgKzE1NCw5IEBAIHByaXZhdGU6CiAgICAgR0RJT2JqZWN0PEhCSVRNQVA+IG1fYml0bWFwOwog
ICAgIFdlYkNvcmU6OkludFNpemUgbV9mdWxsc2NyZWVuU2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX2h1ZFBvc2l0aW9uOworI2lmIDAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4gbV9mdWxsc2NyZWVuV2luZG93Owor
I2VuZGlmCiAKICNpZiBVU0UoQ0EpCiAgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAJKHJldmlzaW9u
IDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDEzIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCisjaWYgVVNFKENGKQorCiBDRkFycmF5Q2FsbEJhY2tzIE1hcnNoYWxsaW5nSGVs
cGVyczo6a0lVbmtub3duQXJyYXlDYWxsQmFja3MgPSB7MCwgSVVua25vd25SZXRhaW5DYWxsYmFj
aywgSVVua25vd25SZWxlYXNlQ2FsbGJhY2ssIDAsIDB9OwogQ0ZEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MgTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MgPSB7MCwgSVVua25vd25SZXRhaW5DYWxsYmFjaywgSVVua25vd25SZWxlYXNlQ2FsbGJhY2ss
IDAsIDB9OwogCisjZW5kaWYKKwogVVJMIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTChC
U1RSIHVybFN0cikKIHsKICAgICByZXR1cm4gVVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNT
dHJpbmdMZW4odXJsU3RyKSkpOwpAQCAtNDgsNiArNTIsNyBAQCBCU1RSIE1hcnNoYWxsaW5nSGVs
cGVyczo6VVJMVG9CU1RSKGNvbnN0CiAgICAgcmV0dXJuIEJTdHJpbmcodXJsLnN0cmluZygpKS5y
ZWxlYXNlKCk7CiB9CiAKKyNpZiBVU0UoQ0YpCiBDRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6
OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBy
ZXR1cm4gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKQEAgLTk5LDcgKzEw
NCw5IEBAIENGTnVtYmVyUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk4KIHsKICAgICBy
ZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51bSk7CiB9Cisj
ZW5kaWYKIAorI2lmIFVTRShDRikKIENGQWJzb2x1dGVUaW1lIE1hcnNoYWxsaW5nSGVscGVyczo6
d2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkKIHsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUg
d2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lID0gMDsKQEAgLTEwOSw4ICsxMTYsMzQgQEAgQ0ZBYnNv
bHV0ZVRpbWUgTWFyc2hhbGxpbmdIZWxwZXJzOjp3aW5kbwogICAgIH0KICAgICByZXR1cm4gd2lu
ZG93c0Vwb2NoQWJzb2x1dGVUaW1lOwogfQorI2Vsc2UKK2RvdWJsZSBNYXJzaGFsbGluZ0hlbHBl
cnM6OndpbmRvd3NFcG9jaEFic29sdXRlVGltZSgpCit7CisgICAgc3RhdGljIGRvdWJsZSB3aW5k
b3dzRXBvY2hBYnNvbHV0ZVRpbWUgPSAwOworICAgIGlmICghd2luZG93c0Vwb2NoQWJzb2x1dGVU
aW1lKSB7CisgICAgICAgIFNZU1RFTVRJTUUgd2luZG93c0Vwb2NoRGF0ZSA9IHsgfTsKKyAgICAg
ICAgd2luZG93c0Vwb2NoRGF0ZS53WWVhciA9IDE4OTk7CisgICAgICAgIHdpbmRvd3NFcG9jaERh
dGUud01vbnRoID0gMTI7CisgICAgICAgIHdpbmRvd3NFcG9jaERhdGUud0RheSA9IDMwOworCisg
ICAgICAgIEZJTEVUSU1FIGFic29sdXRlRmlsZVRpbWU7CisgICAgICAgIFN5c3RlbVRpbWVUb0Zp
bGVUaW1lKCZ3aW5kb3dzRXBvY2hEYXRlLCAmYWJzb2x1dGVGaWxlVGltZSk7CisKKyAgICAgICAg
VUxBUkdFX0lOVEVHRVIgdGltZVZhbHVlOworICAgICAgICB0aW1lVmFsdWUuTG93UGFydCA9IGFi
c29sdXRlRmlsZVRpbWUuZHdMb3dEYXRlVGltZTsKKyAgICAgICAgdGltZVZhbHVlLkhpZ2hQYXJ0
ID0gYWJzb2x1dGVGaWxlVGltZS5kd0hpZ2hEYXRlVGltZTsKKworICAgICAgICB3aW5kb3dzRXBv
Y2hBYnNvbHV0ZVRpbWUgPSB0aW1lVmFsdWUuUXVhZFBhcnQ7CisgICAgfQorICAgIHJldHVybiB3
aW5kb3dzRXBvY2hBYnNvbHV0ZVRpbWU7Cit9CisjZW5kaWYKIAorI2lmIFVTRShDRikKIENGQWJz
b2x1dGVUaW1lIE1hcnNoYWxsaW5nSGVscGVyczo6REFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSBk
YXRlKQorI2Vsc2UKK2RvdWJsZSBNYXJzaGFsbGluZ0hlbHBlcnM6OkRBVEVUb0Fic29sdXRlVGlt
ZShEQVRFIGRhdGUpCisjZW5kaWYKIHsKICAgICAvLyA8aHR0cDovL21zZG4yLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS9tczIyMTYyNy5hc3B4PgogICAgIC8vIERBVEU6IFRoaXMgaXMgdGhl
IHNhbWUgbnVtYmVyaW5nIHN5c3RlbSB1c2VkIGJ5IG1vc3Qgc3ByZWFkc2hlZXQgcHJvZ3JhbXMs
CkBAIC0xMjksMTEgKzE2MiwxNiBAQCBDRkFic29sdXRlVGltZSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkRBVEVUCiAgICAgcmV0dXJuIHJvdW5kKChkYXRlICsgd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1l
KCkpICogc2Vjb25kc1BlckRheSk7CiB9CiAKKyNpZiBVU0UoQ0YpCiBEQVRFIE1hcnNoYWxsaW5n
SGVscGVyczo6Q0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZBYnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1l
KQorI2Vsc2UKK0RBVEUgTWFyc2hhbGxpbmdIZWxwZXJzOjphYnNvbHV0ZVRpbWVUb0RBVEUoZG91
YmxlIGFic29sdXRlVGltZSkKKyNlbmRpZgogewogICAgIHJldHVybiAocm91bmQoYWJzb2x1dGVU
aW1lKS9zZWNvbmRzUGVyRGF5IC0gd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkpOwogfQogCisj
aWYgVVNFKENGKQogLy8gdXRpbGl0eSBtZXRob2QgdG8gc3RvcmUgYSAxLWRpbSBzdHJpbmcgdmVj
dG9yIGludG8gYSBuZXdseSBjcmVhdGVkIFNBRkVBUlJBWQogU0FGRUFSUkFZKiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OnN0cmluZ0FycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZiBpbkFycmF5KQogewpA
QCAtMTYzLDYgKzIwMSw3IEBAIFNBRkVBUlJBWSogTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRBcnJh
eVQKICAgICB9CiAgICAgcmV0dXJuIHNhOwogfQorI2VuZGlmCiAKIFNBRkVBUlJBWSogTWFyc2hh
bGxpbmdIZWxwZXJzOjppbnRSZWN0VG9TYWZlQXJyYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKIHsKQEAgLTE4OSw2ICsyMjgsOCBAQCBTQUZFQVJSQVkqIE1hcnNoYWxsaW5nSGVscGVy
czo6aW50UmVjdFRvCiAgICAgcmV0dXJuIHNhOwogfQogCisjaWYgVVNFKENGKQorCiAvLyB1dGls
aXR5IG1ldGhvZCB0byBzdG9yZSBhIDEtZGltIElVbmtub3duKiB2ZWN0b3IgaW50byBhIG5ld2x5
IGNyZWF0ZWQgU0FGRUFSUkFZCiBTQUZFQVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aXVua25v
d25BcnJheVRvU2FmZUFycmF5KENGQXJyYXlSZWYgaW5BcnJheSkKIHsKQEAgLTI2NywzICszMDgs
NSBAQCB2b2lkIE1hcnNoYWxsaW5nSGVscGVyczo6SVVua25vd25SZWxlYXNlCiB7CiAgICAgKChJ
VW5rbm93biopIHZhbHVlKS0+UmVsZWFzZSgpOwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCShyZXZpc2lvbiAyNDg0MDEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIE1hcnNoYWxsaW5nSGVscGVyc19ICi0jZGVmaW5lIE1hcnNoYWxsaW5nSGVscGVyc19ICisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKyNpZiBVU0UoQ0YpCiAj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMzgsNiArNDAsOCBAQCBjbGFzcyBN
YXJzaGFsbGluZ0hlbHBlcnMKIHB1YmxpYzoKICAgICBzdGF0aWMgVVJMIEJTVFJUb0tVUkwoQlNU
Uik7CiAgICAgc3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFVSTCYpOworCisjaWYgVVNFKENG
KQogICAgIHN0YXRpYyBDRlVSTFJlZiBQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RG
OjpTdHJpbmcmKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3Ry
aW5nKENGVVJMUmVmIGZpbGVVUkwpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJl
ZihCU1RSKTsKQEAgLTUwLDcgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgREFURSBDRkFi
c29sdXRlVGltZVRvREFURShDRkFic29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSog
c3RyaW5nQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmKTsKICAgICBzdGF0aWMgU0FGRUFSUkFZ
KiBpbnRBcnJheVRvU2FmZUFycmF5KENGQXJyYXlSZWYpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91
YmxlIERBVEVUb0Fic29sdXRlVGltZShEQVRFKTsKKyAgICBzdGF0aWMgREFURSBhYnNvbHV0ZVRp
bWVUb0RBVEUoZG91YmxlKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIFNBRkVBUlJBWSogaW50UmVj
dFRvU2FmZUFycmF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworI2lmIFVTRShDRikKICAg
ICBzdGF0aWMgU0FGRUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7
CiAgICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkq
KTsKICAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSop
OwpAQCAtNTksMTMgKzcwLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJl
bGVhc2VDYWxsYmFjayhDRkFsbG9jYXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBD
RkFycmF5Q2FsbEJhY2tzIGtJVW5rbm93bkFycmF5Q2FsbEJhY2tzOwogICAgIHN0YXRpYyBDRkRp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyBrSVVua25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3M7
CisjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBVU0UoQ0YpCiAgICAgc3RhdGljIENGQWJzb2x1dGVU
aW1lIHdpbmRvd3NFcG9jaEFic29sdXRlVGltZSgpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91Ymxl
IHdpbmRvd3NFcG9jaEFic29sdXRlVGltZSgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgTWFy
c2hhbGxpbmdIZWxwZXJzKCk7CiAgICAgfk1hcnNoYWxsaW5nSGVscGVycygpOwogfTsKLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDkgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gQ0ZTVFIoIldlYktpdExvY2FsQ2FjaGUi
KTsKKyNlbmRpZgogCiAvLyBXZWJBcHBsaWNhdGlvbkNhY2hlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CkBAIC0xODksNiArMTkxLDcgQEAgSFJFU1VMVCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5z
V2l0aAogCiAgICAgYXV0byBjb3JlT3JpZ2lucyA9IHN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hl
KCk7CiAKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJh
eUl0ZW0gPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGNvcmVPcmlnaW5zLnNpemUoKSwgJk1hcnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duQXJyYXlD
YWxsQmFja3MpKTsKIAogICAgIGZvciAoYXV0byYgY29yZU9yaWdpbiA6IGNvcmVPcmlnaW5zKQpA
QCAtMjAzLDYgKzIwNiw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dp
dGgKICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlv
bmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwogICAgIHJlc3VsdC0+c2V0RGljdGlv
bmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKICAgICAqb3JpZ2lucyA9IHJlc3VsdC5sZWFrUmVmKCk7
CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMCBAQAog
CiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJNZW1vcnlTdHJlYW0uaCIK
KworI2lmIFVTRShDRikKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzYsOSArMzksMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUlu
c3RhbmNlKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgV2ViQXJjaGl2ZSogaW5zdGFuY2UgPSBuZXcg
V2ViQXJjaGl2ZSgwKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3Rh
bmNlOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBXZWJBcmNoaXZl
KiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBj
b3JlQXJjaGl2ZSkKQEAgLTUwLDcgKzU3LDkgQEAgV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3Jl
YXRlSW5zdGFuY2UoUgogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQorI2lmIFVTRShDRikKICAgICA6IG1fYXJjaGl2ZShX
VEZNb3ZlKGNvcmVBcmNoaXZlKSkKKyNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CkBAIC0xMTMsOCArMTIyLDEwIEBA
IEhSRVNVTFQgV2ViQXJjaGl2ZTo6aW5pdFdpdGhOb2RlKF9Jbl9vcHQKICAgICBpZiAoIWRvbU5v
ZGUpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCisjaWYgVVNFKENGKQogICAgIG1f
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZG9tTm9kZS0+bm9kZSgpKTsKLSAg
ICAKKyNlbmRpZgorCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE0Nyw2ICsxNTgsNyBAQCBI
UkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0CiAgICAgaWYgKCFzdHJlYW0p
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKKyNpZiBVU0UoQ0YpCiAgICAgKnN0cmVhbSA9
IG51bGxwdHI7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICAgICBpZiAoIWNmRGF0YSkKQEAgLTE1NSw0ICsxNjcs
OCBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0CiAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQo
KSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBFX0ZBSUw7Cisj
ZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmgJKHJldmlzaW9u
IDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsOSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9O
RyBtX3JlZkNvdW50IHsgMCB9OworI2lmIFVTRShDRikKICAgICBSZWZQdHI8V2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZT4gbV9hcmNoaXZlOworI2VuZGlmCiB9OwogCiAjZW5kaWYgLy8gV2ViQXJj
aGl2ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCShyZXZpc2lvbiAy
NDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBIUkVTVUxUIFdlYkNhY2hlOjpzdGF0aXN0aWNzKF9J
bm91dF8gaW50CiAKICAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0ID0g
V2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKIAorI2lm
IFVTRShDRikKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgaW1hZ2VzS2V5ID0gQ0ZTVFIoImltYWdl
cyIpOwogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBzdHlsZXNoZWV0c0tleSA9IENGU1RSKCJzdHls
ZSBzaGVldHMiKTsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgeHNsS2V5ID0gQ0ZTVFIoInhzbCIp
OwpAQCAtMjA5LDYgKzIxMCw5IEBAIEhSRVNVTFQgV2ViQ2FjaGU6OnN0YXRpc3RpY3MoX0lub3V0
XyBpbnQKICAgICBzWzNdID0gcHJvcEJhZy5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFdlYkNhY2hl
OjplbXB0eSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IENGU1RSKCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSIpOworI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VxdWFsKExQQ1dT
VFIgczEsIExQQ1dTVFIgczIpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIENPTVB0
cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbgogICAgIFZlY3RvcjxDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtPiwgMT4gYXJyYXlJdGVtOwogICAgIGFycmF5SXRlbS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBhcnJheUl0ZW1baV0gPSBkYXRhW2ldOworICAgICAgICBhcnJheUl0ZW0udW5jaGVja2VkQXBw
ZW5kKGRhdGFbaV0pOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDT01QdHI8SVdlYkhp
c3RvcnlJdGVtPj4+IGRpY3Rpb25hcnk7CiAgICAgU3RyaW5nIGtleShub3RpZmljYXRpb25TdHIs
IDo6U3lzU3RyaW5nTGVuKG5vdGlmaWNhdGlvblN0cikpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NywxMyArODcsMTYgQEAgV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbgog
CiAvLyBJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgdXJsS2V5ID0gQ0ZTVFIoIiIpOwogc3RhdGljIENGU3RyaW5nUmVmIHRpdGxlS2V5ID0gQ0ZT
VFIoInRpdGxlIik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSA9
IENGU1RSKCJsYXN0VmlzaXRXYXNGYWlsdXJlIik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcmVkaXJl
Y3RVUkxzS2V5ID0gQ0ZTVFIoInJlZGlyZWN0VVJMcyIpOworI2VuZGlmCiAKIEhSRVNVTFQgV2Vi
SGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZv
aWQqIGRpY3Rpb25hcnkpCiB7CisjaWYgVVNFKENGKQogICAgIENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5UmVmID0gKENGRGljdGlvbmFyeVJlZikgZGljdGlvbmFyeTsKIAogICAgIENGU3RyaW5n
UmVmIHVybFN0cmluZ1JlZiA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeVJlZiwgdXJsS2V5KTsKQEAgLTEyNSwxMCArMTI4LDE0IEBAIEhSRVNVTFQgV2ViSGlz
dG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmEKICAgICAgICAgbV9oaXN0b3J5SXRlbS0+c2V0TGFz
dFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICBy
ZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmRp
Y3Rpb25hcnlSZXByZXNlbnRhdGlvbihfX2RlcmVmX291dF9vcHQgdm9pZCoqIGRpY3Rpb25hcnkp
CiB7CisjaWYgVVNFKENGKQogICAgIENGRGljdGlvbmFyeVJlZiogZGljdGlvbmFyeVJlZiA9IChD
RkRpY3Rpb25hcnlSZWYqKSBkaWN0aW9uYXJ5OwogCiAgICAgc2l6ZV90IGtleUNvdW50ID0gMDsK
QEAgLTE1OSw2ICsxNjYsOSBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVw
cmVzCiAgICAgICAgIENGUmVsZWFzZSh2YWx1ZXNbaV0pOwogCiAgICAgcmV0dXJuIFNfT0s7Cisj
ZWxzZQorICAgIHJldHVybiBFX05PVElNUEw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBXZWJIaXN0
b3J5SXRlbTo6aGFzVVJMU3RyaW5nKF9PdXRfIEJPT0wqIGhhc1VSTCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdENPTUFQSS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNyArNzYsOSBAQCBIUkVTVUxUIFdlYktpdENyZWF0ZUluc3RhbmNlKFJFRkNMU0lEIHJjCiAg
ICAgcmV0dXJuIGZhY3RvcnktPkNyZWF0ZUluc3RhbmNlKHBVbmtPdXRlciwgcmlpZCwgcHB2T2Jq
ZWN0KTsKIH0KIAorI2lmIFVTRShDRikKIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6OndlYktpdEJ1bmRsZSgpOwogfQorI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDT01BUEkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDT01BUEkuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDggKzQyLDEwIEBAIGV4dGVybiAiQyIgewogLy8gVGhpcyBieXBhc3NlcyBDb0NyZWF0ZUluc3Rh
bmNlIGVudGlyZWx5LCBzbyByZWdpc3RyeSBrZXlzIGFuZCBpc29sYXRlZCBDT00gbWFuaWZlc3Rz
IGFyZW4ndCBuZWVkZWQuCiBIUkVTVUxUIFdFQktJVF9BUEkgV2ViS2l0Q3JlYXRlSW5zdGFuY2Uo
UkVGQ0xTSUQsIElVbmtub3duKiBwVW5rT3V0ZXIsIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOwogCisjaWYgVVNFKENGKQogdHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRsZSog
Q0ZCdW5kbGVSZWY7CiBDRkJ1bmRsZVJlZiBXRUJLSVRfQVBJIHdlYktpdEJ1bmRsZSgpOworI2Vu
ZGlmCiAKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCShyZXZp
c2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDkgQEAgdHlwZWRlZiBKU0NsYXNzUmVmICgqSlND
bGFzc0NyZWF0ZUZ1bmN0aQogdHlwZWRlZiB2b2lkKiAoKkpTT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0
aW9uKShKU09iamVjdFJlZik7CiB0eXBlZGVmIEpTT2JqZWN0UmVmICgqSlNPYmplY3RNYWtlRnVu
Y3Rpb25TdHViKShKU0NvbnRleHRSZWYsIEpTQ2xhc3NSZWYsIHZvaWQqKTsKIHR5cGVkZWYgdm9p
ZCAoKkpTT2JqZWN0U2V0UHJvcGVydHlGdW5jdGlvbikoSlNDb250ZXh0UmVmLCBKU09iamVjdFJl
ZiwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmLCBKU1Byb3BlcnR5QXR0cmli
dXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyNpZiBVU0UoQ0YpCiB0eXBlZGVmIEpTU3Ry
aW5nUmVmICgqSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmdGdW5jdGlvbikoQ0ZTdHJpbmdSZWYp
OworI2VuZGlmCiB0eXBlZGVmIEpTU3RyaW5nUmVmICgqSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmdGdW5jdGlvbikoY29uc3QgY2hhciopOwogdHlwZWRlZiBjb25zdCBKU0NoYXIqICgqSlNT
dHJpbmdHZXRDaGFyYWN0ZXJzUHRyRnVuY3Rpb24pKEpTU3RyaW5nUmVmKTsKIHR5cGVkZWYgc2l6
ZV90ICgqSlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbikoSlNTdHJpbmdSZWYpOwpAQCAtMjYyLDcg
KzI2NCw5IEBAIEpTQ2xhc3NDcmVhdGVGdW5jdGlvbiBtX2pzQ2xhc3NDcmVhdGVGdW4KIEpTT2Jq
ZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uIG1fanNPYmplY3RHZXRQcml2YXRlRnVuY3Rpb24gPSBudWxs
cHRyOwogSlNPYmplY3RNYWtlRnVuY3Rpb25TdHViIG1fanNPYmplY3RNYWtlRnVuY3Rpb24gPSBu
dWxscHRyOwogSlNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uIG1fanNPYmplY3RTZXRQcm9wZXJ0
eUZ1bmN0aW9uID0gbnVsbHB0cjsKKyNpZiBVU0UoQ0YpCiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZ0Z1bmN0aW9uIG1fanNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmdGdW5jdGlvbiA9IG51bGxw
dHI7CisjZW5kaWYKIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nRnVuY3Rpb24gbV9qc1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uID0gbnVsbHB0cjsKIEpTU3RyaW5nR2V0
Q2hhcmFjdGVyc1B0ckZ1bmN0aW9uIG1fanNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyRnVuY3Rpb24g
PSBudWxscHRyOwogSlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbiBtX2pzU3RyaW5nR2V0TGVuZ3Ro
RnVuY3Rpb24gPSBudWxscHRyOwpAQCAtMjg2LDcgKzI5MCw5IEBAIHZvaWQgYmluZEphdmFTY3Jp
cHRUcmFtcG9saW5lKCkKICAgICBtX2pzT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uID0gcmVpbnRl
cnByZXRfY2FzdDxKU09iamVjdEdldFByaXZhdGVGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhs
aWJyYXJ5LCAiSlNPYmplY3RHZXRQcml2YXRlIikpOwogICAgIG1fanNPYmplY3RNYWtlRnVuY3Rp
b24gPSByZWludGVycHJldF9jYXN0PEpTT2JqZWN0TWFrZUZ1bmN0aW9uU3R1Yj4oOjpHZXRQcm9j
QWRkcmVzcyhsaWJyYXJ5LCAiSlNPYmplY3RNYWtlIikpOwogICAgIG1fanNPYmplY3RTZXRQcm9w
ZXJ0eUZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU09iamVjdFNldFByb3BlcnR5RnVuY3Rp
b24+KDo6R2V0UHJvY0FkZHJlc3MobGlicmFyeSwgIkpTT2JqZWN0U2V0UHJvcGVydHkiKSk7Owor
I2lmIFVTRShDRikKICAgICBtX2pzU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nRnVuY3Rpb24gPSBy
ZWludGVycHJldF9jYXN0PEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nRnVuY3Rpb24+KDo6R2V0
UHJvY0FkZHJlc3MobGlicmFyeSwgIkpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nIikpOworI2Vu
ZGlmCiAgICAgbV9qc1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uID0gcmVpbnRl
cnByZXRfY2FzdDxKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uPig6OkdldFBy
b2NBZGRyZXNzKGxpYnJhcnksICJKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyIpKTsKICAg
ICBtX2pzU3RyaW5nR2V0Q2hhcmFjdGVyc1B0ckZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxK
U1N0cmluZ0dldENoYXJhY3RlcnNQdHJGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5
LCAiSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyIikpOwogICAgIG1fanNTdHJpbmdHZXRMZW5ndGhG
dW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbj4oOjpH
ZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNTdHJpbmdHZXRMZW5ndGgiKSk7CkBAIC0zMjksMTIg
KzMzNSwxNCBAQCBXRUJLSVRfQVBJIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvCiAgICAg
ICAgIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uKGN0eCwgb2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOwogfQogCisjaWYgVVNFKENGKQogV0VC
S0lUX0FQSSBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmluZ1Jl
ZiB2YWx1ZSkKIHsKICAgICBpZiAobV9qc1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9u
KQogICAgICAgICByZXR1cm4gbV9qc1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uKHZh
bHVlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KKyNlbmRpZgogCiBXRUJLSVRfQVBJIEpTU3Ry
aW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHZhbHVlKQog
ewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UHJlZml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UHJlZml4LmgJKHJldmlzaW9uIDI0
ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFByZWZpeC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAjZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MKICNl
bmRpZgogCisjaW5jbHVkZSA8d2lucnQvV2luZG93cy5Gb3VuZGF0aW9uLkNvbGxlY3Rpb25zLmg+
CisKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5l
ZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJp
bmdzLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsMTAgQEAK
IAogI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogCisjaWYgVVNFKENGKQorCisj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKwogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNyw3ICs0MSw2IEBACiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CiAKIGNsYXNzIExvY2FsaXplZFN0cmluZzsKIApAQCAtMjQxLDMgKzI0
NCw0IEBAIExQQ1RTVFIgV2ViTG9jYWxpemVkTFBDVFNUUihXZWJMb2NhbGl6YWIKIHZvaWQgU2V0
V2ViTG9jYWxpemVkU3RyaW5nTWFpbkJ1bmRsZShDRkJ1bmRsZVJlZikKIHsKIH0KKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVm
IFdlYkxvY2FsaXphYmxlU3RyaW5nc19ICiAjZGVmaW5lIFdlYkxvY2FsaXphYmxlU3RyaW5nc19I
CiAKKyNpZiBVU0UoQ0YpCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC03MSwzICs3Myw2IEBAIGV4dGVybiBXZWJMb2Nh
bGl6YWJsZVN0cmluZ3NCdW5kbGUgTE9DQUwKICNlbmRpZgogCiAjZW5kaWYKKworI2VuZGlmCisK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDkgKzM2NSwxMyBAQCBI
UkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRDbGllbnRDCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0Q29udGV4dCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KGNlcnQpOworI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjZXJ0RGF0YSA9IFdlYkNvcmU6OmNvcHlDZXJ0aWZpY2F0ZVRvRGF0YShjZXJ0
Q29udGV4dCk7CiAgICAgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKG1fcmVx
dWVzdC51cmwoKS5ob3N0KCkudG9TdHJpbmcoKSwgY2VydERhdGEuZ2V0KCkpOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CiAKIENGVVJM
UmVxdWVzdFJlZiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y2ZSZXF1ZXN0KCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVI
b3N0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
b3JlRm91bmRhdGlvbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2Nh
ZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KQEAgLTYxLDYgKzY1
LDggQEAgc3RhdGljIGNvbnN0IFN0cmluZyYgb2xkUHJlZmVyZW5jZXNQYXRoKAogICAgIHJldHVy
biBwYXRoOwogfQogCisjaWYgVVNFKENGKQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBl
PiBzdHJ1Y3QgQ0ZOdW1iZXJUcmFpdHMgeyBzdGF0aWMgY29uc3QgQ0ZOdW1iZXJUeXBlIFR5cGU7
IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDRk51bWJlclRyYWl0czxpbnQ+IHsgc3RhdGljIGNvbnN0
IENGTnVtYmVyVHlwZSBUeXBlID0ga0NGTnVtYmVyU0ludDMyVHlwZTsgfTsKIHRlbXBsYXRlPD4g
c3RydWN0IENGTnVtYmVyVHJhaXRzPExPTkdMT05HPiB7IHN0YXRpYyBjb25zdCBDRk51bWJlclR5
cGUgVHlwZSA9IGtDRk51bWJlckxvbmdMb25nVHlwZTsgfTsKQEAgLTEwMyw2ICsxMDksNyBAQCBz
dGF0aWMgYm9vbCBib29sZWFuVmFsdWVGb3JQcmVmZXJlbmNlc1ZhCiBzdGF0aWMgQ0ZEaWN0aW9u
YXJ5UmVmIGRlZmF1bHRTZXR0aW5nczsKIAogUmV0YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVm
ZXJlbmNlczo6bV9hcHBsaWNhdGlvbklkID0ga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b247CisjZW5kaWYKIAogc3RhdGljIEhhc2hNYXA8V1RGOjpTdHJpbmcsIENPTVB0cjxXZWJQcmVm
ZXJlbmNlcz4+JiB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygpCiB7CkBAIC0xODYsMTMgKzE5Mywx
NiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZW1vdmVSZWZlcmVuY2VGb3JJCiAgICAgICAgIHdl
YlByZWZlcmVuY2VzSW5zdGFuY2VzKCkucmVtb3ZlKGlkZW50aWZpZXJTdHJpbmcpOwogfQogCisj
aWYgVVNFKENGKQogQ0ZTdHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKQog
ewogICAgIHJldHVybiBtX2FwcGxpY2F0aW9uSWQuZ2V0KCk7CiB9CisjZW5kaWYKIAogdm9pZCBX
ZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiB7CisjaWYgVVNFKENG
KQogICAgIGlmIChkZWZhdWx0U2V0dGluZ3MpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzM0LDgg
KzM0NCwxMCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNlCiAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKICAgICBkZWZhdWx0U2V0dGlu
Z3MgPSBkZWZhdWx0czsKKyNlbmRpZgogfQogCisjaWYgVVNFKENGKQogUmV0YWluUHRyPENGUHJv
cGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5
KQogewogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUgPSBDRkRpY3Rpb25h
cnlHZXRWYWx1ZShtX3ByaXZhdGVQcmVmcy5nZXQoKSwga2V5KTsKQEAgLTM2OSw5ICszODEsMTEg
QEAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbgogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2ZLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmco
MCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CiAgICAgcmV0dXJuIHZhbHVlRm9yS2V5
KGNmS2V5LmdldCgpKTsKIH0KKyNlbmRpZgogCiBCU1RSIFdlYlByZWZlcmVuY2VzOjpzdHJpbmdW
YWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0
cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUgPSB2YWx1ZUZvcktleShrZXkpOwogICAgIAogICAg
IGlmICghdmFsdWUgfHwgKENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSkKQEAgLTM5NSwyNiArNDA5LDQ2IEBAIEJTVFIgV2ViUHJlZmVyZW5jZXM6OnN0cmlu
Z1ZhbHVlRm9yS2V5KGMKICAgICAgICAgCiAgICAgYnN0cltsZW5ndGhdID0gMDsKICAgICByZXR1
cm4gYnN0cjsKKyNlbHNlCisgICAgQlN0cmluZyBkdW1teTsKKyAgICByZXR1cm4gZHVtbXk7Cisj
ZW5kaWYKIH0KIAogaW50IFdlYlByZWZlcmVuY2VzOjppbnRlZ2VyVmFsdWVGb3JLZXkoY29uc3Qg
Y2hhcioga2V5KQogeworI2lmIFVTRShDRikKICAgICByZXR1cm4gbnVtYmVyVmFsdWVGb3JQcmVm
ZXJlbmNlc1ZhbHVlPGludD4odmFsdWVGb3JLZXkoa2V5KS5nZXQoKSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCiB9CiAKIEJPT0wgV2ViUHJlZmVyZW5jZXM6OmJvb2xWYWx1ZUZvcktl
eShjb25zdCBjaGFyKiBrZXkpCiB7CisjaWYgVVNFKENGKQogICAgIHJldHVybiBib29sZWFuVmFs
dWVGb3JQcmVmZXJlbmNlc1ZhbHVlKHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBmbG9hdCBXZWJQcmVmZXJlbmNlczo6ZmxvYXRWYWx1
ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CisjaWYgVVNFKENGKQogICAgIHJldHVybiBudW1i
ZXJWYWx1ZUZvclByZWZlcmVuY2VzVmFsdWU8ZmxvYXQ+KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkp
OworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBMT05HTE9ORyBXZWJQcmVmZXJl
bmNlczo6bG9uZ2xvbmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CisjaWYgVVNFKENG
KQogICAgIHJldHVybiBudW1iZXJWYWx1ZUZvclByZWZlcmVuY2VzVmFsdWU8TE9OR0xPTkc+KHZh
bHVlRm9yS2V5KGtleSkuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRTdHJpbmdWYWx1ZShjb25zdCBjaGFyKiBrZXksIEJT
VFIgdmFsdWUpCkBAIC00MjMsOSArNDU3LDExIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0
cmluZ1ZhbHVlKGNvbnMKICAgICB2YWwuYWRvcHRCU1RSKHN0cmluZ1ZhbHVlRm9yS2V5KGtleSkp
OwogICAgIGlmICh2YWwgJiYgIXdjc2NtcCh2YWwsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVSZWYg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4odmFsdWUpLCBzdGF0aWNfY2FzdDxDRkluZGV4Pih3Y3NsZW4odmFs
dWUpKSkpOwogICAgIHNldFZhbHVlRm9yS2V5KGtleSwgdmFsdWVSZWYuZ2V0KCkpOworI2VuZGlm
CiAKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CkBAIC00MzUs
NyArNDcxLDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZWdlclZhbHVlKGNvbgogICAg
IGlmIChpbnRlZ2VyVmFsdWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwog
CisjaWYgVVNFKENGKQogICAgIHNldFZhbHVlRm9yS2V5KGtleSwgY2ZOdW1iZXIodmFsdWUpLmdl
dCgpKTsKKyNlbmRpZgogCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigp
OwogfQpAQCAtNDQ1LDcgKzQ4Myw5IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEZsb2F0VmFs
dWUoY29uc3QKICAgICBpZiAoZmxvYXRWYWx1ZUZvcktleShrZXkpID09IHZhbHVlKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBVU0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5LCBjZk51bWJl
cih2YWx1ZSkuZ2V0KCkpOworI2VuZGlmCiAKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90
aWZpY2F0aW9uKCk7CiB9CkBAIC00NTUsNyArNDk1LDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6
c2V0Qm9vbFZhbHVlKGNvbnN0CiAgICAgaWYgKGJvb2xWYWx1ZUZvcktleShrZXkpID09IHZhbHVl
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5
LCB2YWx1ZSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNlKTsKKyNlbmRpZgogCiAg
ICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogfQpAQCAtNDY1LDcgKzUw
Nyw5IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldExvbmdMb25nVmFsdWUoY28KICAgICBpZiAo
bG9uZ2xvbmdWYWx1ZUZvcktleShrZXkpID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNp
ZiBVU0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5LCBjZk51bWJlcih2YWx1ZSkuZ2V0KCkp
OworI2VuZGlmCiAKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9
CkBAIC00ODQsMTggKzUyOCwyMyBAQCBCU1RSIFdlYlByZWZlcmVuY2VzOjp3ZWJQcmVmZXJlbmNl
c1JlbW92CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNhdmUoKQogeworI2lmIFVTRShDRikKICAg
ICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoYXBwbGljYXRpb25JZCgpKTsKKyNlbmRpZgog
fQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpsb2FkKCkKIHsKICAgICBpbml0aWFsaXplRGVmYXVs
dFNldHRpbmdzKCk7CiAKKyNpZiBVU0UoQ0YpCiAgICAgbV9wcml2YXRlUHJlZnMgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgbWlncmF0
ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKCk7CisjZW5kaWYKIH0KIAorI2lmIFVT
RShDRikKIHZvaWQgV2ViUHJlZmVyZW5jZXM6Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQ
cmVmZXJlbmNlcygpCiB7CiAgICAgaWYgKGJvb2xWYWx1ZUZvcktleShXZWJLaXREaWRNaWdyYXRl
V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXNQcmVmZXJlbmNlS2V5KSkKQEAgLTU1OCw2
ICs2MDcsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jCiAgICAg
ICAgIHNldFZhbHVlRm9yS2V5KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihrZXlzW2ldKSwgdmFs
dWVzW2ldKTsKICAgICB9CiB9CisjZW5kaWYKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBA
IC0xNjcxLDkgKzE3MjEsMTEgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5j
ZUZvcgogewogICAgIGlmICghU3lzU3RyaW5nTGVuKGtleSkgfHwgIVN5c1N0cmluZ0xlbih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VW5pQ2hhcio+KGtleSksIFN5c1N0cmluZ0xlbihrZXkp
KSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PFVuaUNoYXIqPih2
YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICBzZXRWYWx1ZUZvcktleShrZXlTdHJp
bmcuZ2V0KCksIHZhbHVlU3RyaW5nLmdldCgpKTsKKyNlbmRpZgogICAgIHBvc3RQcmVmZXJlbmNl
c0NoYW5nZXNOb3RpZmljYXRpb24oKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTIyMTksNyAr
MjI3MSw5IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldENvcmVNYXRoTUxFbmEKIAogSFJF
U1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBwbGljYXRpb25JZChCU1RSIGFwcGxpY2F0aW9uSWQp
CiB7CisjaWYgVVNFKENGKQogICAgIG1fYXBwbGljYXRpb25JZCA9IFN0cmluZyhhcHBsaWNhdGlv
bklkKS5jcmVhdGVDRlN0cmluZygpOworI2VuZGlmCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMjQ4
NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE1LDEwICszMTUsMTIgQEAgcHVibGljOgogICAgIEhSRVNVTFQgcG9zdFBy
ZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogCiBwcm90ZWN0ZWQ6CisjaWYgVVNFKENG
KQogICAgIHZvaWQgc2V0VmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5LCBDRlByb3BlcnR5TGlz
dFJlZiB2YWx1ZSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZUZvcktl
eShDRlN0cmluZ1JlZiBrZXkpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JLZXkoY29uc3QgY2hhciog
a2V5LCBDRlByb3BlcnR5TGlzdFJlZiB2YWx1ZSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlM
aXN0UmVmPiB2YWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpOworI2VuZGlmCiAgICAgQlNUUiBz
dHJpbmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpOwogICAgIGludCBpbnRlZ2VyVmFsdWVG
b3JLZXkoY29uc3QgY2hhcioga2V5KTsKICAgICBCT09MIGJvb2xWYWx1ZUZvcktleShjb25zdCBj
aGFyKiBrZXkpOwpAQCAtMzMzLDE1ICszMzUsMjAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKTsKICAgICB2b2lkIHNhdmUoKTsKICAgICB2
b2lkIGxvYWQoKTsKKyNpZiBVU0UoQ0YpCiAgICAgdm9pZCBtaWdyYXRlV2ViS2l0UHJlZmVyZW5j
ZXNUb0NGUHJlZmVyZW5jZXMoKTsKICAgICB2b2lkIGNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQ
cmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBtX3ByaXZhdGVQcmVmczsKICAgICBXZWJDb3JlOjpCU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICBib29sIG1fYXV0b1NhdmVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljYWxs
eURldGVjdHNDYWNoZU1vZGVsIHsgdHJ1ZSB9OwogICAgIHVuc2lnbmVkIG1fbnVtV2ViVmlld3Mg
eyAwIH07CisKKyNpZiBVU0UoQ0YpCisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IG1fcHJpdmF0ZVByZWZzOwogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1f
YXBwbGljYXRpb25JZDsKKyNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiwxMCBAQAogI2luY2x1ZGUgIkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIAorI2lmIFVTRShESVJFQ1Qy
RCkKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg+CisjZW5kaWYK
KwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3Jl
ZW5Db250cm9sbGVyLmg+CiAjZW5kaWYKQEAgLTIzNSw3ICsyMzksOSBAQCB1c2luZyBKU0M6OkpT
TG9jazsKIAogc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCk7CiAKKyNpZiBVU0Uo
Q0YpCiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5
ID0gQ0ZTVFIoIldlYktpdExvY2FsQ2FjaGUiKTsKKyNlbmRpZgogc3RhdGljIEhNT0RVTEUgYWNj
ZXNzaWJpbGl0eUxpYjsKIAogc3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+JiBwZW5kaW5nRGVsZXRl
QmFja2luZ1N0b3JlU2V0KCkKQEAgLTg3MiwxMyArODc4LDYgQEAgYm9vbCBXZWJWaWV3OjplbnN1
cmVCYWNraW5nU3RvcmUoKQogICAgICAgICAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotCi0gICAgICAgIENPTVB0cjxJRDJE
MVNvbGlkQ29sb3JCcnVzaD4gYnJ1c2g7Ci0gICAgICAgIG1fcmVuZGVyVGFyZ2V0LT5DcmVhdGVT
b2xpZENvbG9yQnJ1c2goRDJEMTo6Q29sb3JGKEQyRDE6OkNvbG9yRjo6Qmx1ZVZpb2xldCksICZi
cnVzaCk7Ci0KLSAgICAgICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOwotICAgICAgICBt
X3JlbmRlclRhcmdldC0+RmlsbFJvdW5kZWRSZWN0YW5nbGUoRDJEMTo6Um91bmRlZFJlY3QoRDJE
MTo6UmVjdEYoMTAwLjBmLCAxMDAuMGYsIDMwMC4wZiwgMjAwLjBmKSwgMjAuMGYsIDIwLjBmKSwg
YnJ1c2guZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclRhcmdldC0+RW5kRHJhdygpOwogI2VuZGlm
CiAgICAgICAgIG1fYmFja2luZ1N0b3JlU2l6ZS5jeCA9IHdpZHRoOwogICAgICAgICBtX2JhY2tp
bmdTdG9yZVNpemUuY3kgPSBoZWlnaHQ7CkBAIC04OTYsMTIgKzg5NSw2IEBAIGJvb2wgV2ViVmll
dzo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKIAogICAgICAgICBociA9IG1fYmFja2luZ1N0b3JlUmVu
ZGVyVGFyZ2V0LT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJRDJEMUdkaUludGVyb3BSZW5kZXJU
YXJnZXQpLCAodm9pZCoqKSZtX2JhY2tpbmdTdG9yZUdkaUludGVyb3ApOwogICAgICAgICBSRUxF
QVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKLQotICAgICAgICBDT01QdHI8SUQyRDFTb2xpZENv
bG9yQnJ1c2g+IGJydXNoMjsKLSAgICAgICAgbV9iYWNraW5nU3RvcmVSZW5kZXJUYXJnZXQtPkNy
ZWF0ZVNvbGlkQ29sb3JCcnVzaChEMkQxOjpDb2xvckYoRDJEMTo6Q29sb3JGOjpTZWFHcmVlbiks
ICZicnVzaDIpOwotICAgICAgICBtX2JhY2tpbmdTdG9yZVJlbmRlclRhcmdldC0+QmVnaW5EcmF3
KCk7Ci0gICAgICAgIG1fcmVuZGVyVGFyZ2V0LT5GaWxsUm91bmRlZFJlY3RhbmdsZShEMkQxOjpS
b3VuZGVkUmVjdChEMkQxOjpSZWN0RigxMDAuMGYsIDEwMC4wZiwgMzAwLjBmLCAyMDAuMGYpLCAy
MC4wZiwgMjAuMGYpLCBicnVzaDIuZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclRhcmdldC0+RW5k
RHJhdygpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyNTIsNyAr
MTI0NSw4IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgIH0KIAogICAg
IFJFQ1QgY2xpZW50UmVjdCA9IHt9OwotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhtX3JlbmRlclRh
cmdldC5nZXQoKSk7CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0
KG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ2MoJnBsYXRmb3Jt
Q29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BV
TWVtb3J5KTsKIAogICAgIHsKICAgICAgICAgbV9yZW5kZXJUYXJnZXQtPlNldFRhZ3MoV0VCS0lU
X0RSQVdJTkcsIF9fTElORV9fKTsKQEAgLTUzNDEsNiArNTMzNSw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgaWYgKEZBSUxFRChocikpCiAgICAg
ICAgICAgICByZXR1cm4gaHI7CiAKKyNpZiBVU0UoQ0YpCiAgICAgICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdG9TdHJpbmcoc3RyKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAKICAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIHBhc3NlZCBpbiBzdHJpbmcgaXMgYSBwYXRoIGFuZCBjb252ZXJ0
IGl0IHRvIGEgVVJMLgpAQCAtNTM1OCw2ICs1MzUzLDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgICAgICB9CiAKICAgICAgICAgc2V0dGluZ3Muc2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOworI2Vsc2UKKyAgICAgICAgQVNTRVJUKDAp
OworI2VuZGlmCiAgICAgICAgIHN0ci5jbGVhcigpOwogICAgIH0gZWxzZQogICAgICAgICBzZXR0
aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTCgpKTsKQEAgLTc1NDIsMTQgKzc1NDAs
MjIgQEAgYm9vbCBXZWJWaWV3OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZQogCiBib29sIFdl
YlZpZXc6OmlzRnVsbFNjcmVlbigpIGNvbnN0IAogeworI2lmIDAKICAgICByZXR1cm4gbV9mdWxs
c2NyZWVuQ29udHJvbGxlciAmJiBtX2Z1bGxzY3JlZW5Db250cm9sbGVyLT5pc0Z1bGxTY3JlZW4o
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIEZ1bGxTY3JlZW5Db250
cm9sbGVyKiBXZWJWaWV3OjpmdWxsU2NyZWVuQ29udHJvbGxlcigpCiB7CisjaWYgMAogICAgIGlm
ICghbV9mdWxsc2NyZWVuQ29udHJvbGxlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ29udHJvbGxl
ciA9IHN0ZDo6dW5pcXVlX3B0cjxGdWxsU2NyZWVuQ29udHJvbGxlcj4obmV3IEZ1bGxTY3JlZW5D
b250cm9sbGVyKHRoaXMpKTsKICAgICByZXR1cm4gbV9mdWxsc2NyZWVuQ29udHJvbGxlci5nZXQo
KTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3
OjpzZXRGdWxsU2NyZWVuRWxlbWVudChSZWZQdHI8RWxlbWVudD4mJiBlbGVtZW50KQpAQCAtNzU5
OSwxMSArNzYwNSwxNSBAQCB2b2lkIFdlYlZpZXc6OmZ1bGxTY3JlZW5DbGllbnREaWRFeGl0RnVs
CiAKIHZvaWQgV2ViVmlldzo6ZnVsbFNjcmVlbkNsaWVudEZvcmNlUmVwYWludCgpCiB7CisjaWYg
MAogICAgIEFTU0VSVChtX2Z1bGxzY3JlZW5Db250cm9sbGVyKTsKKyNlbmRpZgogICAgIFJFQ1Qg
d2luZG93UmVjdCB7IH07CiAgICAgZnJhbWVSZWN0KCZ3aW5kb3dSZWN0KTsKICAgICByZXBhaW50
KHdpbmRvd1JlY3QsIHRydWUgLypjb250ZW50Q2hhbmdlZCovLCB0cnVlIC8qaW1tZWRpYXRlKi8s
IGZhbHNlIC8qY29udGVudE9ubHkqLyk7CisjaWYgMAogICAgIG1fZnVsbHNjcmVlbkNvbnRyb2xs
ZXItPnJlcGFpbnRDb21wbGV0ZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OmZ1bGxT
Y3JlZW5DbGllbnRTYXZlU2Nyb2xsUG9zaXRpb24oKQpAQCAtNzg3Nyw3ICs3ODg3LDkgQEAgSFJF
U1VMVCBXZWJWaWV3OjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUAogCiBIUkVTVUxUIFdlYlZpZXc6
OmV4aXRGdWxsc2NyZWVuSWZOZWVkZWQoKQogeworI2lmIDAKICAgICBpZiAoZnVsbFNjcmVlbkNv
bnRyb2xsZXIoKSAmJiBmdWxsU2NyZWVuQ29udHJvbGxlcigpLT5pc0Z1bGxTY3JlZW4oKSkKICAg
ICAgICAgZnVsbFNjcmVlbkNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKKyNlbmRpZgogICAgIHJldHVy
biBTX09LOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gMjQ4
NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MTYsNyArNzE2LDkgQEAgcHJvdGVjdGVkOgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50Owor
I2lmIDAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI+
IG1fZnVsbHNjcmVlbkNvbnRyb2xsZXI7CisjZW5kaWYKICAgICBXZWJDb3JlOjpJbnRQb2ludCBt
X3Njcm9sbFBvc2l0aW9uOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2
aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw5IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3IKICAgICB9IAogCiAgICAgbV93
ZWJWaWV3LT5zZXRGdWxsU2NyZWVuRWxlbWVudCgmZWxlbWVudCk7CisjaWYgMAogICAgIG1fd2Vi
Vmlldy0+ZnVsbFNjcmVlbkNvbnRyb2xsZXIoKS0+ZW50ZXJGdWxsU2NyZWVuKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQpAQCAtODUxLDcgKzg1Myw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
eGl0RnVsbFNjcmVlbkZvckUKICAgICB9CiAKICAgICBBU1NFUlQoZWxlbWVudCA9PSBtX3dlYlZp
ZXctPmZ1bGxTY3JlZW5FbGVtZW50KCkpOworI2lmIDAKICAgICBtX3dlYlZpZXctPmZ1bGxTY3Jl
ZW5Db250cm9sbGVyKCktPmV4aXRGdWxsU2NyZWVuKCk7CisjZW5kaWYKIH0KIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw4ICszNTksMTQgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUAogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJh
bWVMb2FkRGVsZWdhdGU7Ci0gICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxl
Z2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPndp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCh3ZWJWaWV3LCBCU3RyaW5nKHVybC5zdHJpbmco
KSksIGRlbGF5LCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGQWJzb2x1dGVUaW1lVG9EQVRFKGZpcmVE
YXRlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgbV93ZWJGcmFtZSk7CisgICAgaWYg
KFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUp
KSkgeworI2lmIFVTRShDRikKKyAgICAgICAgREFURSBkYXRlID0gTWFyc2hhbGxpbmdIZWxwZXJz
OjpDRkFic29sdXRlVGltZVRvREFURShmaXJlRGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29u
ZHMoKSk7CisjZWxzZQorICAgICAgICBEQVRFIGRhdGUgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OmFi
c29sdXRlVGltZVRvREFURShmaXJlRGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSk7
CisjZW5kaWYKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTCh3ZWJWaWV3LCBCU3RyaW5nKHVybC5zdHJpbmcoKSksIGRlbGF5LCBkYXRlLCBt
X3dlYkZyYW1lKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkKQEAgLTEwNjQsNiArMTA3MCw3IEBAIE9i
amVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3
JiBwbHVnaW5WaWV3KSBjb25zdAogeworI2lmIFVTRShDRikKICAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCiAgICAgQ09NUHRyPElXZWJSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CkBAIC0xMTE4LDYgKzExMjUsOSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgQ09NUHRyPElXZWJFcnJv
cj4gZXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9y
LCB1c2VySW5mb0JhZy5nZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+
cGx1Z0luRmFpbGVkV2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291
cmNlKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CisjZWxzZQorICAgIEFTU0VS
VCgwKTsKKyNlbmRpZgogfQogCiBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50
JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUs
NyBAQCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yCiAgICAgaWYgKEZB
SUxFRChmcm9udGVuZFdlYlZpZXctPnZpZXdXaW5kb3coJmZyb250ZW5kV2ViVmlld0h3bmQpKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKKyNpZiBVU0UoQ0YpCiAgICAgQ09NUHRyPFdlYk11dGFibGVV
UkxSZXF1ZXN0PiByZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW5zdGFuY2UoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0bWxVUkxSZWYgPSBhZG9w
dENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgpLCBDRlNUUigiTWFpbiIp
LCBDRlNUUigiaHRtbCIpLCBDRlNUUigiV2ViSW5zcGVjdG9yVUkiKSkpOwpAQCAtMTY3LDEwICsx
NjgsMTMgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvcgogCiAgICAg
aWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnRvcExldmVsRnJhbWUoKS0+bG9hZFJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSkpKQogICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgogCisjaWYgMAogICAg
IG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwogICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRI
d25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsK
KyNlbmRpZgogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJu
IHRoaXM7CiB9CkBAIC0yNTAsNiArMjU0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6ZnJvbnRlbgogCiBTdHJpbmcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmxvY2Fs
aXplZFN0cmluZ3NVUkwoKQogeworI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwod2ViS2l0QnVuZGxlKCksIENG
U1RSKCJsb2NhbGl6ZWRTdHJpbmdzIiksIENGU1RSKCJqcyIpLCBDRlNUUigiV2ViSW5zcGVjdG9y
VUkiKSkpOwogICAgIGlmICghdXJsKQogICAgICAgICB1cmwgPSBhZG9wdENGKENGQnVuZGxlQ29w
eVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgpLCBDRlNUUigibG9jYWxpemVkU3RyaW5ncyIpLCBD
RlNUUigianMiKSwgMCkpOwpAQCAtMjU4LDYgKzI2Myw5IEBAIFN0cmluZyBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6bG9jYWwKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0
dXJuIENGVVJMR2V0U3RyaW5nKHVybC5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB7IH07Cisj
ZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250
KCkKQEAgLTI4Miw4ICsyOTAsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
cmVzZXRTdAogewogICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc2V0U3RhdGUo
KTsKIAorI2lmIDAKICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGVsZXRlSW5zcGVjdG9yU3RhcnRz
QXR0YWNoZWQoKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGVsZXRlSW5zcGVjdG9yQXR0YWNo
RGlzYWJsZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpCkBAIC0yOTEsNyArMzAxLDkgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoVwogICAgIGlmIChtX2F0dGFjaGVkKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiAwCiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnNldEluc3BlY3RvclN0
YXJ0c0F0dGFjaGVkKHRydWUpOworI2VuZGlmCiAKICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3Rp
ZmljYXRpb25zKCk7CiAgICAgLy8gV2UgbmVlZCB0byBzZXQgdGhlIGF0dGFjaGVkIHdpbmRvdydz
IGhlaWdodCBiZWZvcmUgd2UgYWN0dWFsbHkgYXR0YWNoIHRoZSB3aW5kb3cuCkBAIC0zMDksNyAr
MzIxLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoVwogICAgIGlm
ICghbV9hdHRhY2hlZCkKICAgICAgICAgcmV0dXJuOwogCisjaWYgMAogICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7CisjZW5kaWYKIAogICAg
IGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKICAgICBzaG93V2luZG93V2l0aG91
dE5vdGlmaWNhdGlvbnMoKTsKQEAgLTM5OCw2ICs0MTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpjbG9zZVdpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpCiB7CisjaWYgMAogICAgIGlmICghbV9m
cm9udGVuZEh3bmQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDQzLDYgKzQ1OCw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW4KICAgICAvLyBNYWtlIHN1cmUgZXZl
cnl0aGluZyBoYXMgdGhlIHJpZ2h0IHNpemUvcG9zaXRpb24uCiAgICAgU2VuZE1lc3NhZ2UoaG9z
dFdpbmRvdywgV01fU0laRSwgMCwgMCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhp
Z2hsaWdodCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCShyZXZp
c2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBGcm9udGVuZENoYW5uZWwgQVBJLgogICAgIENvbm5lY3Rpb25UeXBlIGNv
bm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVjdGlvblR5cGU6Okxv
Y2FsOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV1RGOjpTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXVEY6OlN0
cmluZyYpIG92ZXJyaWRlIHsgLyogRklYTUUgUkVNT09WRSEgKi8gfTsKIAogICAgIGJvb2wgaW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWQoKTsKICAgICB2b2lkIHNldEluc3BlY3RvclN0YXJ0c0F0dGFj
aGVkKGJvb2wpOwpJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw5IEBAIHNldChDTUFLRV9QUkVGSVhfUEFUSCAke1dFQktJVF9MSUJSQVJJRVMKIHNldF9wcm9w
ZXJ0eShHTE9CQUwgUFJPUEVSVFkgRklORF9MSUJSQVJZX1VTRV9MSUIzMl9QQVRIUyBPRkYpCiBz
ZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIEZJTkRfTElCUkFSWV9VU0VfTElCNjRfUEFUSFMg
T04pCiAKK3NldChXRUJLSVRfTElCUkFSSUVTX0xJTktfRElSICIke1dFQktJVF9MSUJSQVJJRVNf
RElSfS9saWI2NCIpCisjIEZJWE1FOiBSZW1vdmUgJHtXRUJLSVRfTElCUkFSSUVTX0xJTktfRElS
fSB3aGVuIGZpbmRfbGlicmFyeSBpcyB1c2VkIGZvciBldmVyeXRoaW5nCitsaW5rX2RpcmVjdG9y
aWVzKCIke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYjY0IiAiJHtXRUJLSVRfTElCUkFSSUVTX0xJTktf
RElSfSIpCiBzZXQoQ01BS0VfQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZ
X0RJUn0vbGliNjQpCiBzZXQoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0Vf
QklOQVJZX0RJUn0vbGliNjQpCiBzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7
Q01BS0VfQklOQVJZX0RJUn0vYmluNjQpCkBAIC01Myw3ICs1Niw3IEBAIFdFQktJVF9PUFRJT05f
QkVHSU4oKQogCiAjIEZlYXR1cmVzIGluIHRoZSBzYW1lIHN0YXRlIG9uIFdpbkNhaXJvIGFuZCBB
cHBsZVdpbgogCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfT1ZFUkZM
T1dfU0NST0xMSU5HX1RPVUNIIFBSSVZBVEUgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFXzNEX1RSQU5TRk9STVMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQgUFJJVkFURSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05J
TkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyBQUklWQVRFIE9OKQpAQCAtNzMsMjMgKzc2LDI0IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVExfSklUIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9OKQotV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIFBSSVZB
VEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfR0VPTE9DQVRJT04gUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9JQ09OREFUQUJBU0UgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFIFBSSVZBVEUgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfS0VZQk9B
UkRfQ09ERV9BVFRSSUJVVEUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9M
RUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIgUFJJVkFURSBPTikKK1dFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUFD
X0dFU1RVUkVfRVZFTlRTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX01BVEhNTCBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCBQUklWQVRFIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FVEVSX0VMRU1FTlQgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSFRNTCBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSU5JQlJPV1NF
UiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIFBSSVZBVEUg
T0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX09WRVJGTE9XX1ND
Uk9MTElOR19UT1VDSCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9RVU9UQSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNJWkVfT0JTRVJWRVIgUFJJVkFURSBPTikK
QEAgLTEwMSwyNCArMTA1LDI1IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVO
VFMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
VE9VQ0hfU0xJREVSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1VOSUZJRURfQlVJTERTIFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gUFJJVkFURSBPTikKK1dFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBQUklWQVRFIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkFTU0VNQkxZIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkFTU0VNQkxZX1NUUkVB
TUlOR19BUEkgUFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfV0VCR0wgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XRUJfUFJPQ0VTU19TQU5EQk9YIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YU0xUIFBSSVZB
VEUgT04pCiAKICMgTWVkaWEgdGhpbmdzIHRoYXQgc2hvdWxkIGJlIG9uCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVZGX0NBUFRJT05TIFBSSVZBVEUgT0ZGKQorV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9BVURJTyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX0NBUFRVUkUgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUIFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TT1VS
Q0UgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TUVESUFfU1RBVElTVElDUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9NRURJQV9TVFJFQU0gUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUgUFJJVkFU
RSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU9fVFJB
Q0sgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
VklERU9fVVNFU19FTEVNRU5UX0ZVTExTQ1JFRU4gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1JUQyBQUklWQVRFIE9GRikKIApAQCAtMTI5
LDEyICsxMzQsMTAgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCBQ
UklWQVRFIE9GRikKIAogIyBXZWJHTAotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1dFQkdMIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1dFQkdMMiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9XRUJHUFUgUFJJVkFURSBPRkYpCiAKICMgT2ZmIGZvciBub3csIGJ1dCBz
aG91bGQgYmUgb24KLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8zRF9U
UkFOU0ZPUk1TIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUElfVEVTVFMgUFJJVkFURSBPRkYpCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBQTElDQVRJT05fTUFOSUZFU1QgUFJJ
VkFURSBPRkYpCkBAIC0xNjEsNyArMTY0LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX09W
RVJGTE9XX1NDUk9MTElOR19UT1VDSCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9QREZLSVRfUExVR0lOIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BPSU5URVJfTE9DSyBQUklWQVRFIE9GRikK
LVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JF
U09VUkNFX0xPQURfU1RBVElTVElDUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSBQUklWQVRFIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SVUJCRVJfQkFORElORyBQUklWQVRFIE9G
RikKQEAgLTE3OCwxNSArMTgwLDE2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01F
U1NBR0VfSEFORExFUlMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkRSSVZFUiBQUklWQVRFIE9GRikKLVdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0FVVEhOIFBSSVZBVEUg
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8g
UFJJVkFURSBPRkYpCiAKICNXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShVU0VfVkVS
U0lPTl9TVEFNUEVSIFBSSVZBVEUgT04pCiAKICMgRXhwZXJpbWVudGFsIGZlYXR1cmVzCi1XRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklW
QVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCi1XRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfUkVTT1VSQ0VfVVNBR0UgUFJJVkFURSAke0VOQUJMRV9FWFBF
UklNRU5UQUxfRkVBVFVSRVN9KQorI1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5T
UEVDVE9SIFBSSVZBVEUgT0ZGKQorI1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9SRVNPVVJDRV9VU0FHRSBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
U30pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVTT1VSQ0VfVVNB
R0UgUFJJVkFURSBPRkYpCiAKICMgRmVhdHVyZXMgdG8gaW52ZXN0aWdhdGUKICMKQEAgLTIyNCwy
NCArMjI3LDM5IEBAIGVuZGlmICgpCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ1VSTCBP
TikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9ESVJFQ1QyRCBPTikKIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9FWFBPUlRfTUFDUk9TIE9OKQotU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX0lOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSICR7RU5BQkxFX1JFTU9URV9JTlNQRUNUT1J9
KQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQorU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQorI1NFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VUX1NFUlZFUiAke0VOQUJMRV9SRU1PVEVf
SU5TUEVDVE9SfSkKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VU
X1NFUlZFUiBPRkYpCisKK3NldChFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRCBPTikKK3NldChV
U0VfQU5HTEVfRUdMIE9OKQogCiBzZXQoV1RGX0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoSmF2
YVNjcmlwdENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKIAogc2V0KEVOQUJMRV9BUElfVEVTVFMg
T0ZGKQogc2V0KEVOQUJMRV9XRUJDT1JFIE9OKQotc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQotc2V0
KEVOQUJMRV9XRUJLSVRfTEVHQUNZIE9GRikKK3NldChFTkFCTEVfV0VCS0lUIE9OKQorc2V0KEVO
QUJMRV9XRUJLSVRfTEVHQUNZIE9OKQogCiAjIE92ZXJyaWRlIGhlYWRlcnMgZGlyZWN0b3JpZXMK
K3NldChBTkdMRV9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9BTkdM
RS9IZWFkZXJzKQogc2V0KFdURl9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5BUllf
RElSfS9XVEYvSGVhZGVycykKIHNldChKYXZhU2NyaXB0Q29yZV9GUkFNRVdPUktfSEVBREVSU19E
SVIgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS9IZWFkZXJzKQogc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJ
Un0vSmF2YVNjcmlwdENvcmUvUHJpdmF0ZUhlYWRlcnMpCitzZXQoUEFMX0ZSQU1FV09SS19IRUFE
RVJTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1BBTC9IZWFkZXJzKQorc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJDb3JlL1By
aXZhdGVIZWFkZXJzKQorc2V0KFdlYktpdExlZ2FjeV9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtD
TUFLRV9CSU5BUllfRElSfS9XZWJLaXRMZWdhY3kvSGVhZGVycykKK3NldChXZWJLaXRfRlJBTUVX
T1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0L0hlYWRlcnMpCitzZXQo
V2ViS2l0X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0v
V2ViS2l0L1ByaXZhdGVIZWFkZXJzKQogCiAjIE92ZXJyaWRlIGRlcml2ZWQgc291cmNlcyBkaXJl
Y3Rvcmllcwogc2V0KFdURl9ERVJJVkVEX1NPVVJDRVNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0v
V1RGL0Rlcml2ZWRTb3VyY2VzKQogc2V0KEphdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19E
SVIgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcykKK3Nl
dChXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzKQorc2V0KFdlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSICR7
Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0TGVnYWN5L0Rlcml2ZWRTb3VyY2VzKQorc2V0KFdlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzKQogCiAjIE92ZXJyaWRlIHNjcmlwdHMgZGlyZWN0b3JpZXMKIHNldChXVEZfU0NSSVBU
U19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XVEYvU2NyaXB0cykKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQyMCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4
LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFdd
IEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvd2luL1dlYktpdExl
Z2FjeUJyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAqIFBsYXRmb3JtRlRXLmNtYWtlOiBBZGRl
ZC4KKwogMjAxOS0wOC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG8gbm90IGFsbG93IG5hdmlnYXRpb25zIG9mIGZyYW1lcyBhYm91dCB0byBnZXQgcmVw
bGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGphdmFzY3JpcHQ6IFVSTHMKSW5kZXg6
IFRvb2xzL1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1BsYXRmb3JtRlRX
LmNtYWtlCShub25leGlzdGVudCkKKysrIFRvb2xzL1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKyNhZGRfc3ViZGlyZWN0b3J5KEltYWdlRGlmZikKKwor
aWYgKEVOQUJMRV9XRUJLSVRfTEVHQUNZKQorICAgICNhZGRfc3ViZGlyZWN0b3J5KER1bXBSZW5k
ZXJUcmVlKQorICAgIGFkZF9zdWJkaXJlY3RvcnkoTWluaUJyb3dzZXIvd2luKQorZW5kaWYgKCkK
KworI2lmIChFTkFCTEVfV0VCS0lUKQorIyAgICBhZGRfc3ViZGlyZWN0b3J5KFdlYktpdFRlc3RS
dW5uZXIpCisjZW5kaWYgKCkKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdh
Y3lCcm93c2VyV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci93aW4v
V2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFRvb2xz
L01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcyLDYgKzY3Miw3IEBAIHN0YXRpYyB2b2lkIHNldFdpbmRvd1RleHQoSFdORCBk
aWFsb2csIFUKICAgICBzZXRXaW5kb3dUZXh0KGRpYWxvZywgZmllbGQsIF9ic3RyX3QodmFsdWVT
dHIudXRmOCgpLmRhdGEoKSkpOwogfQogCisjaWYgVVNFKENGKQogc3RhdGljIHZvaWQgc2V0V2lu
ZG93VGV4dChIV05EIGRpYWxvZywgVUlOVCBmaWVsZCwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnksIENGU3RyaW5nUmVmIGtleSwgVUlOVCYgdG90YWwpCiB7CiAgICAgQ0ZOdW1iZXJSZWYgY291
bnROdW0gPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeSwga2V5KSk7CkBAIC02ODQsNiArNjg1LDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93
VGV4dChIV05EIGRpYWxvZywgVQogICAgIHNldFdpbmRvd1RleHQoZGlhbG9nLCBmaWVsZCwgc3Rh
dGljX2Nhc3Q8VUlOVD4oY291bnQpKTsKICAgICB0b3RhbCArPSBjb3VudDsKIH0KKyNlbmRpZgog
CiB2b2lkIFdlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3c6OnVwZGF0ZVN0YXRpc3RpY3MoSFdORCBk
aWFsb2cpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375826</attachid>
            <date>2019-08-08 11:33:09 -0700</date>
            <delta_ts>2019-08-08 13:15:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200539-20190808113305.patch</filename>
            <type>text/plain</type>
            <size>151125</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4
LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFdd
IEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNGVFcu
Y21ha2U6CisKIDIwMTktMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFu
ZCBORVdTIGZvciAyLjI1LjQgcmVsZWFzZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2Vi
S2l0MiwgYW5kIE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1GVFcuY21ha2U6
IEFkZGVkLgorCiAyMDE5LTA3LTE3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgQU5HTEUgd29yayBpbnNpZGUgV2ViS2l0MidzIHNhbmRib3gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKyMgV2UncmUgdGFyZ2V0aW5nIFdpbmRvd3MgMTAgd2hp
Y2ggd2lsbCBoYXZlIERpcmVjdFggMTEgb24gaXQgc28gcmVxdWlyZSB0aGF0CisjIGJ1dCBtYWtl
IERpcmVjdFggOSBvcHRpb25hbAorCitsaXN0KEFQUEVORCBBTkdMRV9ERUZJTklUSU9OUworICAg
IEdMX0FQSUNBTEw9CisgICAgR0xfQVBJPQorICAgIE5PTUlOTUFYCispCisKK2lmIChVU0VfQU5H
TEVfRUdMKQorICAgICMgV2UncmUgdGFyZ2V0aW5nIFdpbmRvd3MgMTAgd2hpY2ggd2lsbCBoYXZl
IERpcmVjdFggMTEKKyAgICBsaXN0KEFQUEVORCBBTkdMRV9TT1VSQ0VTCisgICAgICAgICR7YW5n
bGVfc3lzdGVtX3V0aWxzX3NvdXJjZXNfd2lufQorICAgICAgICAke2FuZ2xlX3RyYW5zbGF0b3Jf
aGxzbF9zb3VyY2VzfQorCisgICAgICAgICR7bGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzfQor
ICAgICAgICAke2xpYmFuZ2xlX2QzZDExX3NvdXJjZXN9CisgICAgICAgICR7bGliYW5nbGVfZDNk
MTFfd2luMzJfc291cmNlc30KKyAgICApCisKKyAgICBsaXN0KEFQUEVORCBBTkdMRV9ERUZJTklU
SU9OUworICAgICAgICBBTkdMRV9FTkFCTEVfSExTTAorICAgICAgICBBTkdMRV9FTkFCTEVfRDNE
MTEKKyAgICApCisKKyAgICBsaXN0KEFQUEVORCBBTkdMRUdMRVN2Ml9MSUJSQVJJRVMgZHhndWlk
KQorCisgICAgIyBEaXJlY3RYIDkgc3VwcG9ydCBzaG91bGQgYmUgb3B0aW9uYWwgYnV0IEFOR0xF
IHdpbGwgbm90IGNvbXBpbGUgd2l0aG91dCBpdAorICAgIGxpc3QoQVBQRU5EIEFOR0xFX1NPVVJD
RVMgJHtsaWJhbmdsZV9kM2Q5X3NvdXJjZXN9KQorICAgIGxpc3QoQVBQRU5EIEFOR0xFX0RFRklO
SVRJT05TIEFOR0xFX0VOQUJMRV9EM0Q5KQorICAgIGxpc3QoQVBQRU5EIEFOR0xFR0xFU3YyX0xJ
QlJBUklFUyBkM2Q5KQorZW5kaWYgKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcz
IEBACisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGlu
ZyBhbmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpyZW5kZXJUYXJnZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpzdXJmYWNlIGNvbnN0
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6fkJhY2tpbmdTdG9yZUJhY2tlbmREaXJl
Y3QyREltcGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJE
SW1wbDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURpcmVjdDJESW1hZ2VTdXJm
YWNlV2l0aEZhc3RNYWxsb2MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpESUJQ
aXhlbERhdGE6OkRJQlBpeGVsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3Qy
RE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpmaWxsUmVjdFdpdGhH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6UGxhdGZv
cm1Db250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXJlY3Qy
RDo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6flBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0
YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBs
YXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmJpdG1hcFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmJpdG1hcFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0MkQ6OmNyZWF0ZVdpY0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3Qy
RDo6Y3JlYXRlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9u
ZVN1cmZhY2VUb0Fub3RoZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRFV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OkdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6OnNldEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpiZWdp
bkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
OjplbmREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5EcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ6OmJlZ2luRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRDo6ZW5kRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHRTdGF0ZVNhdmVyOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6On5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNv
bnN0KToKKwogMjAxOS0wOC0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZG9wdCBub24tZGVwcmVjYXRlZCBDR0NvbG9yU3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFj
a2VuZERpcmVjdDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFj
a2VuZERpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHdpbmNvZGVjLmg+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAoraW50ZXJmYWNlIElEMkQxQml0bWFwOworaW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJn
ZXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDMsOCBAQCBjbGFzcyBCYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkJhY2tpbmdT
dG9yZUJhY2tlbmREaXJlY3QyRCgpID0gZGVmYXVsdDsKIAotICAgIElXSUNCaXRtYXAqIHN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKyAgICBJRDJEMURDUmVuZGVy
VGFyZ2V0KiByZW5kZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRhcmdldC5nZXQo
KTsgfQorICAgIElEMkQxQml0bWFwKiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNl
LmdldCgpOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpID0gMDsKQEAgLTUzLDggKzU1LDggQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zdXJmYWNl
OwotICAgIHZvaWQqIG1fc3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9OworICAgIENPTVB0
cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKKyAgICBDT01QdHI8SUQyRDFC
aXRtYXA+IG1fc3VyZmFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0
MkRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbC5jcHAJKHJldmlzaW9uIDI0ODQw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjEgKzQwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxIeXN0ZXJl
c2lzRHVyYXRpb24geyAzMDBfbXMgfTsKIAotc3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBjcmVh
dGVEaXJlY3QyREltYWdlU3VyZmFjZVdpdGhGYXN0TWFsbG9jKGNvbnN0IEludFNpemUmIHNpemUs
IGRvdWJsZSBkZXZpY2VTY2FsZUZhY3Rvciwgdm9pZComIGJhY2tpbmdTdG9yZURhdGEpCi17Ci0g
ICAgYXV0byBieXRlc1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4oc2l6ZS53aWR0aCgpKTsKLSAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVy
Zmxvdz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oc2l6ZS5o
ZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJhY2tpbmdTdG9yZURhdGEgPSBmYXN0
WmVyb2VkTWFsbG9jKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKLQotICAgIHJldHVybiBEaXJlY3Qy
RDo6Y3JlYXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRGF0YShiYWNraW5nU3RvcmVEYXRhLCBz
aXplLCBieXRlc1BlclJvdy51bnNhZmVHZXQoKSk7Ci19Ci0KIEJhY2tpbmdTdG9yZUJhY2tlbmRE
aXJlY3QyREltcGw6OkJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBCYWNraW5nU3RvcmVCYWNr
ZW5kRGlyZWN0MkQoc2l6ZSkKICAgICAsIG1fc2Nyb2xsZWRIeXN0ZXJlc2lzKFt0aGlzXShQQUw6
Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgewpAQCAtNjIsMTUgKzQ3LDE1IEBAIEJhY2tpbmdTdG9y
ZUJhY2tlbmREaXJlY3QyREltcGw6OkJhY2tpbmcKICAgICAgICAgICAgIG1fc2Nyb2xsU3VyZmFj
ZSA9IG51bGxwdHI7CiAgICAgICAgIH0sIHNjcm9sbEh5c3RlcmVzaXNEdXJhdGlvbikKIHsKKyAg
ICBtX3JlbmRlclRhcmdldCA9IFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElSZW5kZXJUYXJn
ZXQoKTsKKwogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKICAgICBzY2FsZWRTaXpl
LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBtX3N1cmZhY2UgPSBjcmVhdGVEaXJlY3Qy
REltYWdlU3VyZmFjZVdpdGhGYXN0TWFsbG9jKHNjYWxlZFNpemUsIGRldmljZVNjYWxlRmFjdG9y
LCBtX3N1cmZhY2VCYWNraW5nRGF0YSk7CisgICAgbV9zdXJmYWNlID0gRGlyZWN0MkQ6OmNyZWF0
ZUJpdG1hcChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2NhbGVkU2l6ZSk7CiB9CiAKIEJhY2tpbmdT
dG9yZUJhY2tlbmREaXJlY3QyREltcGw6On5CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBs
KCkKIHsKLSAgICBmYXN0RnJlZShtX3N1cmZhY2VCYWNraW5nRGF0YSk7Ci0gICAgZmFzdEZyZWUo
bV9zY3JvbGxTdXJmYWNlQmFja2luZ0RhdGEpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZUJhY2tl
bmREaXJlY3QyREltcGw6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJ
bnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC04MywxMCArNjgsMTEgQEAgdm9pZCBCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
c2Nyb2xsU3VyZmFjZSkgewotICAgICAgICBhdXRvIHNpemUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6
ZShtX3N1cmZhY2UuZ2V0KCkpOworICAgICAgICBhdXRvIGZsb2F0U2l6ZSA9IERpcmVjdDJEOjpi
aXRtYXBTaXplKG1fc3VyZmFjZS5nZXQoKSk7CisgICAgICAgIEludFNpemUgc2l6ZShmbG9hdFNp
emUud2lkdGgoKSwgZmxvYXRTaXplLmhlaWdodCgpKTsKICAgICAgICAgYXV0byBzY2FsZSA9IERp
cmVjdDJEOjpiaXRtYXBSZXNvbHV0aW9uKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VChzY2FsZS54KCkgPT0gc2NhbGUueSgpKTsKLSAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gY3Jl
YXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRmFzdE1hbGxvYyhzaXplLCBzY2FsZS54KCksIG1f
c2Nyb2xsU3VyZmFjZUJhY2tpbmdEYXRhKTsKKyAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gRGly
ZWN0MkQ6OmNyZWF0ZUJpdG1hcChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2l6ZSk7CiAgICAgfQog
CiAgICAgRGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIobV9zdXJmYWNl
LmdldCgpLCBtX3Njcm9sbFN1cmZhY2UuZ2V0KCksIHNjcm9sbE9mZnNldCwgdGFyZ2V0UmVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpZiBVU0UoRElSRUNUMkQpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5k
RGlyZWN0MkQuaCIKLSNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNp
c0FjdGl2aXR5Lmg+CiAKIGludGVyZmFjZSBJV0lDQml0bWFwOwpAQCAtNDMsOCArNDIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zY3JvbGxTdXJm
YWNlOwotICAgIHZvaWQqIG1fc2Nyb2xsU3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9Owor
ICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gbV9zY3JvbGxTdXJmYWNlOwogCiAgICAgUEFMOjpIeXN0
ZXJlc2lzQWN0aXZpdHkgbV9zY3JvbGxlZEh5c3RlcmVzaXM7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9ESUJQaXhlbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxNSBAQCB2b2lk
IERJQlBpeGVsRGF0YTo6aW5pdGlhbGl6ZShIQklUTUFQIGJpCiAgICAgbV9iaXRzUGVyUGl4ZWwg
PSBibXBJbmZvLmJtQml0c1BpeGVsOwogfQogCitESUJQaXhlbERhdGE6OkRJQlBpeGVsRGF0YSh2
b2lkKiBkYXRhLCBJbnRTaXplIHNpemUpCisgICAgOiBtX2JpdG1hcEJ1ZmZlcihyZWludGVycHJl
dF9jYXN0PFVJbnQ4Kj4oZGF0YSkpCisgICAgLCBtX2JpdG1hcEJ1ZmZlckxlbmd0aCg4ICogc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9i
eXRlc1BlclJvdyg4ICogc2l6ZS53aWR0aCgpKQorICAgICwgbV9iaXRzUGVyUGl4ZWwoOCkKK3sK
K30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgRElCUGl4ZWxEYXRhOjp3cml0ZVRvRmlsZShMUENX
U1RSIGZpbGVQYXRoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RJQlBpeGVsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIERJQlBpeGVs
RGF0YShIQklUTUFQKTsKKyAgICBESUJQaXhlbERhdGEodm9pZCogZGF0YSwgSW50U2l6ZSk7CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNDcgKzU1
LDYgQEAgbmFtZXNwYWNlIERpcmVjdDJEIHsKIGVudW0gUGF0dGVybkFkanVzdG1lbnQgeyBOb0Fk
anVzdG1lbnQsIEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSB9OwogZW51bSBBbHBoYVByZXNl
cnZhdGlvbiB7IERvTm90UHJlc2VydmVBbHBoYSwgUHJlc2VydmVBbHBoYSB9OwogCi0KLWNsYXNz
IFBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtQ29udGV4
dFN0YXRlU2F2ZXIoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIGNvbnRleHQsIGJvb2wgc2F2ZUFu
ZFJlc3RvcmUgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAs
IG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAobV9z
YXZlQW5kUmVzdG9yZSkKLSAgICAgICAgICAgIG1fY29udGV4dC5zYXZlKCk7Ci0gICAgfQotCi0g
ICAgflBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2F2
ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0KLQot
ICAgIHZvaWQgc2F2ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUp
OwotICAgICAgICBtX2NvbnRleHQuc2F2ZSgpOwotICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fc2F2ZUFuZFJlc3RvcmUpOwotICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgICAg
ICBtX3NhdmVBbmRSZXN0b3JlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRTYXZlKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVBbmRSZXN0b3JlOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgbV9jb250ZXh0OwotICAgIGJv
b2wgbV9zYXZlQW5kUmVzdG9yZSB7IGZhbHNlIH07Ci19OwotCiAvLyBGSVhNRTogUmVwbGFjZSBv
bmNlIEdyYXBoaWNzQ29udGV4dDo6ZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgo
KQogLy8gaXMgcmVmYWN0b3JlZCBhcyBhIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24uCiBzdGF0aWMg
ZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQgc3Ryb2tlV2lk
dGgsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCkBAIC01
MjEsNyArNDgwLDcgQEAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbgog
ICAgIEZpbGxTb3VyY2UgZmlsbFdpdGhIb2xlU291cmNlID0gZmlsbFNvdXJjZTsKICAgICBmaWxs
V2l0aEhvbGVTb3VyY2UuZmlsbFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZDsKIAotICAgIGZpbGxQ
YXRoKHBsYXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFNvdXJjZSwgc2hhZG93U3RhdGUpOworICAg
IGZpbGxQYXRoKHBsYXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFdpdGhIb2xlU291cmNlLCBzaGFk
b3dTdGF0ZSk7CiB9CiAKIHZvaWQgZmlsbFJlY3RXaXRoR3JhZGllbnQoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBJRDJEMUJy
dXNoKiBncmFkaWVudCkKQEAgLTUzNCw2ICs0OTMsOCBAQCB2b2lkIGZpbGxSZWN0V2l0aEdyYWRp
ZW50KFBsYXRmb3JtQ29udGV4CiAgICAgICAgIGNvbnN0IEQyRDFfUkVDVF9GIGQyZFJlY3QgPSBy
ZWN0OwogICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIGdyYWRp
ZW50KTsKICAgICB9OworCisgICAgZHJhd1dpdGhvdXRTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBy
ZWN0LCBkcmF3RnVuY3Rpb24pOwogfQogCiB2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3Vy
Y2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKQEAgLTczNSwx
MiArNjk2LDczIEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJgogICAg
IH0pOwogfQogCi0vKgotdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFN0cm9r
ZVNvdXJjZSYgc3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqIHNjYWxlZEZvbnQs
IGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8RGlyZWN0V3JpdGVHbHlw
aFR5cGU+JiBnbHlwaHMsIGZsb2F0IHhPZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRv
d09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQorCit2b2lkIGRyYXdHbHlwaHMoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYg
ZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQm
IGZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8dW5zaWduZWQg
c2hvcnQ+JiBnbHlwaHMsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywg
Y29uc3QgVmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+JiBnbHlwaE9mZnNldHMsIGZsb2F0IHhP
ZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNo
YWRvd0NvbG9yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgYXV0byByZW5kZXJUYXJn
ZXQgPSBwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCk7CisgICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC5zYXZlKCk7CisKKyAgICBEMkQxX01BVFJJWF8zWDJfRiBtYXRyaXg7CisgICAg
cmVuZGVyVGFyZ2V0LT5HZXRUcmFuc2Zvcm0oJm1hdHJpeCk7CisKKyAgICAvKgorICAgIC8vIEZJ
WE1FOiBHZXQgU3ludGhldGljIE9ibGlxdWUgd29ya2luZworICAgIGlmIChwbGF0Zm9ybURhdGEu
c3ludGhldGljT2JsaXF1ZSgpKSB7CisgICAgICAgIHN0YXRpYyBmbG9hdCBza2V3ID0gLXRhbmYo
c3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgKiBwaUZsb2F0IC8gMTgwLjBmKTsKKyAgICAgICAgYXV0
byBza2V3TWF0cml4ID0gRDJEMTo6TWF0cml4M3gyRjo6U2tldyhza2V3LCAwKTsKKyAgICAgICAg
Y29udGV4dC0+U2V0VHJhbnNmb3JtKG1hdHJpeCAqIHNrZXdNYXRyaXgpOworICAgIH0KKyAgICAq
LworCisgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1EYXRhLmR3Rm9udCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChwbGF0Zm9ybURhdGEuZHdGb250RmFjZSgpKTsKKworICAgIERXUklURV9HTFlQ
SF9SVU4gZ2x5cGhSdW47CisgICAgZ2x5cGhSdW4uZm9udEZhY2UgPSBwbGF0Zm9ybURhdGEuZHdG
b250RmFjZSgpOworICAgIGdseXBoUnVuLmZvbnRFbVNpemUgPSBwbGF0Zm9ybURhdGEuc2l6ZSgp
OworICAgIGdseXBoUnVuLmdseXBoQ291bnQgPSBnbHlwaHMuc2l6ZSgpOworICAgIGdseXBoUnVu
LmdseXBoSW5kaWNlcyA9IGdseXBocy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhBZHZhbmNl
cyA9IGhvcml6b250YWxBZHZhbmNlcy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhPZmZzZXRz
ID0gbnVsbHB0cjsKKyAgICBnbHlwaFJ1bi5pc1NpZGV3YXlzID0gcGxhdGZvcm1EYXRhLm9yaWVu
dGF0aW9uKCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKKyAgICBnbHlwaFJ1bi5iaWRp
TGV2ZWwgPSAwOworCisgICAgLyoKKyAgICAvLyBGSVhNRSgpOiBHZXQgU2hhZG93cyB3b3JraW5n
CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAg
IENvbG9yIHNoYWRvd0NvbG9yOworICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwg
JiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250
ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgp
LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGlmIChoYXNTaW1wbGVT
aGFkb3cpIHsKKyAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3Rl
YWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50
aWFsaWFzaW5nLgorICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAg
ICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOworICAgICAg
ICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdy
ZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xv
ci5hbHBoYSgpIC8gMjU1KTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkg
KyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKKyAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3Jp
bmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBm
bGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkg
PSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworCisgICAgICAgIGF1dG8gc2hhZG93
QnJ1c2ggPSBncmFwaGljc0NvbnRleHQuYnJ1c2hXaXRoQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsK
KyAgICAgICAgY29udGV4dC0+RHJhd0dseXBoUnVuKEQyRDE6OlBvaW50MkYoc2hhZG93VGV4dFgs
IHNoYWRvd1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgICAgIGlmIChmb250
LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPkRyYXdHbHlwaFJ1
bihEMkQxOjpQb2ludDJGKHNoYWRvd1RleHRYICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCks
IHNoYWRvd1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgfQorICAgICovCisK
KyAgICByZW5kZXJUYXJnZXQtPkRyYXdHbHlwaFJ1bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSwg
cG9pbnQueSgpKSwgJmdseXBoUnVuLCBmaWxsU291cmNlLmJydXNoLmdldCgpKTsKKyAgICAvLyBp
ZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpCisgICAgLy8gICAgIGNvbnRleHQtPkRyYXdH
bHlwaFJ1bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNl
dCgpLCBwb2ludC55KCkpLCAmZ2x5cGhSdW4sIGdyYXBoaWNzQ29udGV4dC5zb2xpZEZpbGxCcnVz
aCgpKTsKKworICAgIC8vIGlmIChoYXNTaW1wbGVTaGFkb3cpCisgICAgLy8gICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7
CisKKyAgICBwbGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQotKi8KKwogCiB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lD
Qml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmCiB2b2lkIHN0cm9rZVBhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAK
LS8vIEZJWE1FKElNUExFTUVOVCk6IHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqLCBkb3Vi
bGUsIGNvbnN0IFZlY3RvcjxEaXJlY3RXcml0ZUdseXBoVHlwZT4mLCBmbG9hdCwgVGV4dERyYXdp
bmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwordm9p
ZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYs
IGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGds
eXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0
b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZs
b2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCiB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1
YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTUzLDYgKzU0
LDExIEBAIEludFNpemUgYml0bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKiBiaXQKICAgICByZXR1
cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAorRmxvYXRTaXplIGJpdG1hcFNpemUoSUQy
RDFCaXRtYXAqIGJpdG1hcFNvdXJjZSkKK3sKKyAgICByZXR1cm4gYml0bWFwU291cmNlLT5HZXRT
aXplKCk7Cit9CisKIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFwU291cmNl
KiBiaXRtYXBTb3VyY2UpCiB7CiAgICAgY29uc3RleHByIGRvdWJsZSBkcGlCYXNlID0gOTYuMDsK
QEAgLTYzLDggKzY5LDIxIEBAIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFw
U28KICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UG9pbnQgcmVzdWx0KGRwaVgsIGRw
aVkpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gZHBpQmFzZSk7CisgICAgcmVzdWx0LnNjYWxlKDEu
MCAvIGRwaUJhc2UpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Zsb2F0UG9pbnQgYml0bWFw
UmVzb2x1dGlvbihJRDJEMUJpdG1hcCogYml0bWFwKQoreworICAgIGNvbnN0ZXhwciBkb3VibGUg
ZHBpQmFzZSA9IDk2LjA7CisKKyAgICBmbG9hdCBkcGlYLCBkcGlZOworICAgIGJpdG1hcC0+R2V0
RHBpKCZkcGlYLCAmZHBpWSk7CisKKyAgICBGbG9hdFBvaW50IHJlc3VsdChkcGlYLCBkcGlZKTsK
KyAgICByZXN1bHQuc2NhbGUoMS4wIC8gZHBpQmFzZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKwog
fQogCiB1bnNpZ25lZCBiaXRzUGVyUGl4ZWwoR1VJRCBiaXRtYXBGb3JtYXQpCkBAIC0xMDEsNiAr
MTIwLDI5IEBAIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3QyREltYWdlU3UKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAorQ09NUHRyPElXSUNCaXRtYXA+IGNyZWF0ZVdpY0JpdG1hcChj
b25zdCBJbnRTaXplJiBzaXplKQoreworICAgIENPTVB0cjxJV0lDQml0bWFwPiBzdXJmYWNlOwor
ICAgIEhSRVNVTFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3Rv
cnkoKS0+Q3JlYXRlQml0bWFwKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgR1VJRF9XSUNQ
aXhlbEZvcm1hdDMyYnBwUEJHUkEsIFdJQ0JpdG1hcENhY2hlT25EZW1hbmQsICZzdXJmYWNlKTsK
KyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIHN1cmZhY2U7Cit9CisKK0NPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQml0bWFwKElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgYXV0byBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFwUHJvcGVydGllcyhEMkQxOjpQ
aXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BS
RU1VTFRJUExJRUQpKTsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEQy
RDFfU0laRV9VIGJpdG1hcFNpemUgPSBzaXplOworICAgIEhSRVNVTFQgaHIgPSByZW5kZXJUYXJn
ZXQtPkNyZWF0ZUJpdG1hcChiaXRtYXBTaXplLCBiaXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsK
KyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGJpdG1hcDsKK30KKwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5k
ZXJUYXJnZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqIGJpdG1hcFNvdXJjZSkKIHsKICAgICBh
dXRvIHRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKEQyRDFf
UkVOREVSX1RBUkdFVF9UWVBFX0RFRkFVTFQsCkBAIC0xMTUsMTQgKzE1NywyNiBAQCBDT01QdHI8
SUQyRDFSZW5kZXJUYXJnZXQ+IGNyZWF0ZVJlbmRlclRhCiAgICAgcmV0dXJuIGJpdG1hcENvbnRl
eHQ7CiB9CiAKLXZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJV0lDQml0bWFw
KiBmcm9tLCBJV0lDQml0bWFwKiB0bywgY29uc3QgSW50U2l6ZSYgc291cmNlT2Zmc2V0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ09NUHRyPElEMkQx
RENSZW5kZXJUYXJnZXQ+IGNyZWF0ZUdESVJlbmRlclRhcmdldCgpCit7CisgICAgYXV0byB0YXJn
ZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9U
QVJHRVRfVFlQRV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAg
ICAwLCAwLCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEUsIEQyRDFfRkVB
VFVSRV9MRVZFTF9ERUZBVUxUKTsKKworICAgIENPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiBy
ZW5kZXJUYXJnZXQ7CisgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFj
dG9yeSgpLT5DcmVhdGVEQ1JlbmRlclRhcmdldCgmdGFyZ2V0UHJvcGVydGllcywgJnJlbmRlclRh
cmdldCk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQgfHwgIVNVQ0NFRURFRChocikpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJlbmRlclRhcmdldDsKK30KKwordm9pZCBj
b3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKElEMkQxQml0bWFwKiBmcm9tLCBJRDJEMUJp
dG1hcCogdG8sIGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKIHsKLSAgICAvKgotICAgIFJlZlB0cjxjYWly
b190PiBjb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHRvKSk7Ci0gICAgY2Fpcm9fdHJh
bnNsYXRlKGNvbnRleHQuZ2V0KCksIGRlc3RPZmZzZXQud2lkdGgoKSwgZGVzdE9mZnNldC5oZWln
aHQoKSk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQuZ2V0KCksIGNhaXJvT3BlcmF0
b3IpOwotICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0
LmdldCgpLCBzb3VyY2VPZmZzZXQsIHJlY3QpOwotICAgICovCisgICAgYXV0byBvZmZzZXQgPSBE
MkQxOjpQb2ludDJVKCk7CisgICAgYXV0byBzb3VyY2VSZWN0ID0gRDJEMTo6UmVjdFUoc291cmNl
T2Zmc2V0LndpZHRoKCksIC1zb3VyY2VPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisgICAgSFJFU1VMVCBociA9IHRvLT5Db3B5RnJvbUJpdG1hcCgmb2Zmc2V0
LCBmcm9tLCAmc291cmNlUmVjdCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBEaXJlY3QyRApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI0
ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw4IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAoraW50ZXJmYWNlIElEMkQxQml0
bWFwOworaW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJnZXQ7CiBpbnRlcmZhY2UgSUQyRDFSZW5k
ZXJUYXJnZXQ7CiBpbnRlcmZhY2UgSVdJQ0JpdG1hcFNvdXJjZTsKIGludGVyZmFjZSBJV0lDQml0
bWFwOwpAQCAtMzksMTggKzQyLDI0IEBAIGludGVyZmFjZSBJV0lDQml0bWFwOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEludFNpemU7CiAKIG5hbWVzcGFjZSBEaXJlY3QyRCB7CiAKIEludFNp
emUgYml0bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKik7CitGbG9hdFNpemUgYml0bWFwU2l6ZShJ
RDJEMUJpdG1hcCopOwogRmxvYXRQb2ludCBiaXRtYXBSZXNvbHV0aW9uKElXSUNCaXRtYXBTb3Vy
Y2UqKTsKK0Zsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJRDJEMUJpdG1hcCopOwogdW5zaWdu
ZWQgYml0c1BlclBpeGVsKEdVSUQpOworQ09NUHRyPElEMkQxQml0bWFwPiBjcmVhdGVCaXRtYXAo
SUQyRDFSZW5kZXJUYXJnZXQqLCBjb25zdCBJbnRTaXplJik7CitDT01QdHI8SVdJQ0JpdG1hcD4g
Y3JlYXRlV2ljQml0bWFwKGNvbnN0IEludFNpemUmKTsKIENPTVB0cjxJV0lDQml0bWFwPiBjcmVh
dGVEaXJlY3QyREltYWdlU3VyZmFjZVdpdGhEYXRhKHZvaWQqIGRhdGEsIGNvbnN0IEludFNpemUm
LCB1bnNpZ25lZCBzdHJpZGUpOwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5k
ZXJUYXJnZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqKTsKK0NPTVB0cjxJRDJEMURDUmVuZGVy
VGFyZ2V0PiBjcmVhdGVHRElSZW5kZXJUYXJnZXQoKTsKIAotdm9pZCBjb3B5UmVjdEZyb21PbmVT
dXJmYWNlVG9Bbm90aGVyKElXSUNCaXRtYXAqIGZyb20sIElXSUNCaXRtYXAqIHRvLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0
T2Zmc2V0ID0gSW50U2l6ZSgpKTsKK3ZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhl
cihJRDJEMUJpdG1hcCogZnJvbSwgSUQyRDFCaXRtYXAqIHRvLCBjb25zdCBJbnRTaXplJiBzb3Vy
Y2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0ID0gSW50
U2l6ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgRGlyZWN0MkQKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KEhEQyBoZGMKIAogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQy
RDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkVDVCByZWN0LCBib29sIGhhc0FscGhh
KQogewotICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7Ci0KICAgICAvLyBDcmVhdGUgYSBEQyByZW5k
ZXIgdGFyZ2V0LgogICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRhcmdl
dFByb3BlcnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKICAgICAgICAgRDJE
MTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9E
RV9QUkVNVUxUSVBMSUVEKSwKQEAgLTY3LDYgKzY1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHQoSERDIGhkYwogCiAgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwog
ICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShv
d25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOworICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKiBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgcmVuZGVyZXJUeXBlKQpAQCAtMTY0LDgg
KzE2MywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0cm95KCkKIAogUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQqIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkg
Y29uc3QKIHsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBBU1NFUlQoIXBhaW50aW5nRGlzYWJsZWQoKSk7Ci0gICAgcmV0dXJu
IG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgcmV0dXJuICZtX2RhdGEtPnBsYXRmb3Jt
Q29udGV4dCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c3lu
Y0NvbnRleHQoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmKQpAQCAtMTk3LDE4ICsxOTgsMTIgQEAg
ZmxvYXQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjdQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghcGFpbnRpbmdEaXNh
YmxlZCgpKTsKLSAgICBBU1NFUlQoIW1faW1wbCk7Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1D
b250ZXh0KCkpOwogICAgIERpcmVjdDJEOjpzYXZlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNT
RVJUKCFwYWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VSVCghbV9pbXBsKTsKLQogICAgIEFT
U0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRm
b3JtQ29udGV4dCgpKTsKIH0KQEAgLTI0NywxNCArMjQyLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKIAogICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQy
RDE6OkJpdG1hcFByb3BlcnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSk7CiAKKyAgICBBU1NFUlQo
aGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICp0aGlz
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOwot
ICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPkNyZWF0
ZUJpdG1hcChwaXhlbERhdGEuc2l6ZSgpLCBwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5i
eXRlc1BlclJvdygpLCAmYml0bWFwUHJvcGVydGllcywgJmJpdG1hcCk7CisgICAgSFJFU1VMVCBo
ciA9IHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKS0+Q3JlYXRlQml0bWFwKHBpeGVsRGF0
YS5zaXplKCksIHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksICZi
aXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAK
LSAgICBEMkRDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptX2RhdGEpOworICAgIFBsYXRm
b3JtQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAg
Ly8gTm90ZTogVGhlIGNvbnRlbnQgaW4gdGhlIEhEQyBpcyBpbnZlcnRlZCBjb21wYXJlZCB0byBE
aXJlY3QyRCwgc28gaXQgbmVlZHMgdG8gYmUgZmxpcHBlZC4KLSAgICBhdXRvIGNvbnRleHQgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCk7CisgICAgYXV0byBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpOwogCiAgICAgRDJEMV9NQVRSSVhfM1gyX0YgY3Vy
cmVudFRyYW5zZm9ybTsKICAgICBjb250ZXh0LT5HZXRUcmFuc2Zvcm0oJmN1cnJlbnRUcmFuc2Zv
cm0pOwpAQCAtMzE0LDcgKzMxMiw3IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
fkdyYXBoaWMKICAgICBpZiAoIW1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoYmVnaW5EcmF3Q291bnQpCisgICAgaWYgKG1fcGxhdGZv
cm1Db250ZXh0LmJlZ2luRHJhd0NvdW50KQogICAgICAgICBlbmREcmF3KCk7CiB9CiAKQEAgLTM0
NiwyMSArMzQ0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpmbHUK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCiB7Ci0g
ICAgQVNTRVJUKG1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKTsKLSAgICBtX3BsYXRm
b3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKS0+QmVnaW5EcmF3KCk7Ci0gICAgKytiZWdpbkRyYXdD
b3VudDsKKyAgICBtX3BsYXRmb3JtQ29udGV4dC5iZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXcoKQogewotICAgIEFTU0VSVChtX3Bs
YXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKSk7Ci0gICAgRDJEMV9UQUcgZmlyc3QsIHNlY29u
ZDsKLSAgICBIUkVTVUxUIGhyID0gbV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCktPkVu
ZERyYXcoJmZpcnN0LCAmc2Vjb25kKTsKLQotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAg
ICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
OjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIsIGhyLCBmaXJzdCwgc2Vj
b25kKTsKLQotICAgIC0tYmVnaW5EcmF3Q291bnQ7CisgICAgbV9wbGF0Zm9ybUNvbnRleHQuZW5k
RHJhdygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9y
ZSgpCkBAIC00MTksMTIgKzQwOCwxNCBAQCBJRDJEMUJydXNoKiBHcmFwaGljc0NvbnRleHQ6OnBh
dHRlcm5GaWxsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXcoKQogewotICAgIG1f
ZGF0YS0+YmVnaW5EcmF3KCk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+YmVnaW5EcmF3KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjplbmREcmF3KCkKIHsKLSAgICBtX2RhdGEtPmVuZERyYXcoKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5lbmREcmF3KCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmbHVzaCgpCkBAIC05OTUsNyArOTg2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpzZXRDVE0oKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsK
KyAgICAgICAgbV9pbXBsLT5zZXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTEzMSwxMCArMTEyMiw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJc0Fj
Y2VsZXJhdGVkQ28KIAogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgY29uc3QKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghaGFzUGxh
dGZvcm1Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6aXNBY2NlbGVy
YXRlZENvbnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTMgKzE1NSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkK
IHsKLSAgICBhdXRvIHBsYXRmb3JtR3JhZGllbnQgPSBhZG9wdENPTShncmFkaWVudC5jcmVhdGVQ
bGF0Zm9ybUdyYWRpZW50SWZOZWNlc3NhcnkobV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0
KCkpKTsKKyAgICBDT01QdHI8SUQyRDFCcnVzaD4gcGxhdGZvcm1HcmFkaWVudCA9IGdyYWRpZW50
LmNyZWF0ZVBsYXRmb3JtR3JhZGllbnRJZk5lY2Vzc2FyeShtX3BsYXRmb3JtQ29udGV4dC5yZW5k
ZXJUYXJnZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUdyYWRpZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBEaXJlY3QyRDo6c2F2ZShtX3BsYXRmb3JtQ29udGV4dCk7CiAgICAgRGlyZWN0MkQ6
OmZpbGxSZWN0V2l0aEdyYWRpZW50KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LCBwbGF0Zm9ybUdy
YWRpZW50LmdldCgpKTsKLSAgICBEaXJlY3QyRDo6cmVzdG9yZShtX3BsYXRmb3JtQ29udGV4dCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0xOTAsOSArMTg4LDE0IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUm8KICAgICBEaXJlY3QyRDo6
U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgcHJldmlvdXNP
cGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRI
b2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIERpcmVjdDJEOjpmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCB7
IH0sIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpKSk7Cisg
ICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOworCisgICAgRGlyZWN0
MkQ6OkZpbGxTb3VyY2UgZmlsbFNvdXJjZShzdGF0ZSwgbV9wbGF0Zm9ybUNvbnRleHQpOworICAg
IGZpbGxTb3VyY2UuYnJ1c2ggPSBtX3BsYXRmb3JtQ29udGV4dC5icnVzaFdpdGhDb2xvcihjb2xv
cik7CisKKyAgICBEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUobV9wbGF0Zm9ybUNv
bnRleHQsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgZmlsbFNvdXJjZSwgRGlyZWN0MkQ6OlNoYWRv
d1N0YXRlKGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0yMzgsNyAr
MjQxLDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3R2wKICAgICBp
ZiAoIWZvbnQucGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKKyAgICBWZWN0
b3I8dW5zaWduZWQgc2hvcnQ+IGdseXBocyhudW1HbHlwaHMpOworICAgIFZlY3RvcjxmbG9hdD4g
aG9yaXpvbnRhbEFkdmFuY2VzKG51bUdseXBocyk7CisgICAgVmVjdG9yPERXUklURV9HTFlQSF9P
RkZTRVQ+IGdseXBoT2Zmc2V0cyhudW1HbHlwaHMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bUdseXBoczsgKytpKSB7CisgICAgICAgIGlmIChpICsgZnJvbSA+PSBnbHlwaEJ1
ZmZlci5hZHZhbmNlc0NvdW50KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRv
IGFkdmFuY2UgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpICsgZnJvbSk7CisgICAgICAgIGlmICgh
YWR2YW5jZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdseXBoc1tpXSA9IGds
eXBoQnVmZmVyLmdseXBoQXQoaSArIGZyb20pOworICAgICAgICBob3Jpem9udGFsQWR2YW5jZXNb
aV0gPSBhZHZhbmNlLT53aWR0aCgpOworICAgICAgICBnbHlwaE9mZnNldHNbaV0uYWR2YW5jZU9m
ZnNldCA9IGFkdmFuY2UtPndpZHRoKCk7CisgICAgICAgIGdseXBoT2Zmc2V0c1tpXS5hc2NlbmRl
ck9mZnNldCA9IGFkdmFuY2UtPmhlaWdodCgpOworICAgIH0KKworICAgIGRvdWJsZSBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CisKKyAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CisgICAgRGlyZWN0MkQ6OmRyYXdHbHlw
aHMobV9wbGF0Zm9ybUNvbnRleHQsIERpcmVjdDJEOjpGaWxsU291cmNlKHN0YXRlLCBtX3BsYXRm
b3JtQ29udGV4dCksIERpcmVjdDJEOjpTdHJva2VTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1Db250
ZXh0KSwKKyAgICAgICAgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIGZvbnQs
IHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgaG9yaXpvbnRhbEFkdmFuY2VzLCBnbHlwaE9m
ZnNldHMsIHhPZmZzZXQsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yKTsKIH0K
IAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd0ltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVEaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXNo
ZXMoY29uc3QgRGFzaEFycmF5Jik7CiAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CiAKLSAgICBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCogcGxhdGZvcm1Db250ZXh0KCkgeyByZXR1cm4gJm1fcGxh
dGZvcm1Db250ZXh0OyB9CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1Db250ZXh0OyB9CiAgICAgSUQyRDFSZW5kZXJUYXJn
ZXQqIHJlbmRlclRhcmdldCgpOwogCiAgICAgSERDIG1faGRjIHsgbnVsbHB0ciB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJl
Y3QyRC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIz
LDkgQEAgdm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmbwogICAgIGlmICgh
Y3VycmVudFBvaW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fYWN0aXZlUGF0aCkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbV9hY3RpdmVQYXRoLT5TZXRGaWxsTW9kZShmaWxsTW9k
ZSk7CiAKICAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSB0cmFuc2Zvcm0ubWFwUG9pbnQoY3Vy
cmVudFBvaW50LnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3Bw
CShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiAr
MjQxLDI1IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnNldFBhdHRlcm4KICAgICBt
X3N0cm9rZVN5bGVJc0RpcnR5ID0gdHJ1ZTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRDo6YmVnaW5EcmF3KCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJUYXJnZXQpOworICAgIG1f
cmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKyAgICArK2JlZ2luRHJhd0NvdW50OworfQorCit2
b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjplbmREcmF3KCkKK3sKKyAgICBBU1NFUlQobV9y
ZW5kZXJUYXJnZXQpOworICAgIEQyRDFfVEFHIGZpcnN0LCBzZWNvbmQ7CisgICAgSFJFU1VMVCBo
ciA9IG1fcmVuZGVyVGFyZ2V0LT5FbmREcmF3KCZmaXJzdCwgJnNlY29uZCk7CisKKyAgICBpZiAo
IVNVQ0NFRURFRChocikpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEOjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIs
IGhyLCBmaXJzdCwgc2Vjb25kKTsKKworICAgIC0tYmVnaW5EcmF3Q291bnQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0
Zm9ybUNvbnRleHREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NhdmVkU3Rh
dGUoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJTdGF0ZXMuaXNFbXB0eSgpOyB9CiAKKyAgICB2
b2lkIGJlZ2luRHJhdygpOworICAgIHZvaWQgZW5kRHJhdygpOworCiAgICAgZW51bSBEaXJlY3Qy
RExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAgICAgdm9pZCBwdXNo
UmVuZGVyQ2xpcChEaXJlY3QyRExheWVyVHlwZSk7CiAgICAgdm9pZCBzZXRBY3RpdmVMYXllcihD
T01QdHI8SUQyRDFMYXllcj4mJik7CkBAIC0xMjgsNiArMTMxLDggQEAgcHJpdmF0ZToKICAgICBT
dHJva2VTdHlsZSBtX3N0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBEYXNoQXJyYXkg
bV9kYXNoZXM7CiAKKyAgICB1bnNpZ25lZCBiZWdpbkRyYXdDb3VudCB7IDAgfTsKKwogICAgIGZs
b2F0IG1fbWl0ZXJMaW1pdCB7IDEwLjBmIH07CiAgICAgZmxvYXQgbV9kYXNoT2Zmc2V0IHsgMCB9
OwogICAgIGZsb2F0IG1fcGF0dGVybldpZHRoIHsgMS4wZiB9OwpAQCAtMTQ0LDYgKzE0OSw0NiBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU7CiB9OwogCitjbGFzcyBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBjb250
ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAgICAgLCBtX3NhdmVBbmRSZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQorICAgIHsK
KyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQuc2F2
ZSgpOworICAgIH0KKworICAgIH5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICB9CisKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9z
YXZlQW5kUmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJl
c3RvcmUoKTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKworICAg
IGJvb2wgZGlkU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZlQW5kUmVz
dG9yZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIG1f
Y29udGV4dDsKKyAgICBib29sIG1fc2F2ZUFuZFJlc3RvcmUgeyBmYWxzZSB9OworfTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5k
IE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTQwODI1NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZTogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0
MkQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkJhY2tp
bmdTdG9yZTo6cmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVj
dDJELmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQ
YWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRl
c3RQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ckJhc2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlX
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5n
c1VSTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRT
dHJpbmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluV2luKToKKwogMjAxOS0wOC0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gc29tZSBJVFAg
dGhyZWFkaW5nIEFTU0VSVHMgaW50byBSRUxFQVNFX0FTU0VSVHMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bUZUVy5jbWFrZQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzg3IEBACitzZXQoV2ViS2l0X09VVFBVVF9O
QU1FIFdlYktpdDIpCitzZXQoV2ViS2l0X1dlYlByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0V2Vi
UHJvY2VzcykKK3NldChXZWJLaXRfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0TmV0
d29ya1Byb2Nlc3MpCitzZXQoV2ViS2l0X1BsdWdpblByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0
UGx1Z2luUHJvY2VzcykKKworYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQorCits
aXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKKworICAgIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisKKyAgICBOZXR3b3Jr
UHJvY2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NNYWluV2luLmNwcAorCisgICAgUGxhdGZvcm0vSVBD
L3dpbi9BdHRhY2htZW50V2luLmNwcAorICAgIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAKKworICAgIFBsYXRmb3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXIuY3BwCisKKyAgICBQbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKyAgICBQbGF0
Zm9ybS93aW4vTW9kdWxlV2luLmNwcAorICAgIFBsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4u
Y3BwCisKKyAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisK
KyAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3Bw
CisKKyAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcAorICAgIFNoYXJl
ZC93aW4vTmF0aXZlV2ViS2V5Ym9hcmRFdmVudFdpbi5jcHAKKyAgICBTaGFyZWQvd2luL05hdGl2
ZVdlYk1vdXNlRXZlbnRXaW4uY3BwCisgICAgU2hhcmVkL3dpbi9OYXRpdmVXZWJUb3VjaEV2ZW50
V2luLmNwcAorICAgIFNoYXJlZC93aW4vTmF0aXZlV2ViV2hlZWxFdmVudFdpbi5jcHAKKyAgICBT
aGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKKworICAgIFVJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuY3BwCisgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKKyAgICBVSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvV2Vi
R3JhbW1hckRldGFpbC5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNw
cAorCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1dGVzLmNwcAorCisgICAg
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tQcm90ZWN0aW9uU3BhY2VDdXJsLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCisKKyAgICBVSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKKworICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdl
YnNpdGVEYXRhU3RvcmVXaW4uY3BwCisKKyAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKworICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAorCisgICAgVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1cmwuY3BwCisKKyAgICBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisKKyAgICBVSVByb2Nlc3Mv
d2luL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy93aW4vVGV4dENoZWNrZXJXaW4u
Y3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAorICAgIFVJ
UHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9X
ZWJQYWdlUHJveHlXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdp
bi5jcHAKKyAgICBVSVByb2Nlc3Mvd2luL1dlYlByZWZlcmVuY2VzV2luLmNwcAorICAgIFVJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisgICAgVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAorCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVX
aW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk5vbmUuY3BwCisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblBy
b3h5V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViQ29udGV4
dE1lbnVDbGllbnRXaW4uY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2Vi
UG9wdXBNZW51V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3Vy
ZmFjZS5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKworICAgIFdlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NNYWluV2luLmNwcAorICAgIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3Bw
CispCisKKyMgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyBpcworIyBleHBlY3RlZCBpbiBEZXJpdmVkU291cmNlcy9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sLy4KK2FkZF9jdXN0b21fY29tbWFuZCgK
KyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworICAgIERFUEVORFMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzCisgICAgQ09NTUFORCBjcCAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworKQorCitsaXN0KEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL3dpbiIK
KyAgICAiJHtXRUJLSVRfRElSfS9QbGF0Zm9ybS9jbGFzc2lmaWVyIgorICAgICIke1dFQktJVF9E
SVJ9L1BsdWdpblByb2Nlc3Mvd2luIgorICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvYy93
aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCisgICAg
IiR7V0VCS0lUX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yIgorICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9QbHVnaW5zL3dpbiIKKyAgICAiJHtXRUJL
SVRfRElSfS9TaGFyZWQvdW5peCIKKyAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvd2luIgorICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKKyAgICAiJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL0MvY3VybCIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L0Mvd2luIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL3dpbiIKKyAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucy93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL3dpbiIKKyAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93aW4iCisgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd2luL0RPTSIKKyAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luIgorICAgICIke1dFQktJVF9ESVJ9L3dpbiIKKykKKworbGlzdChBUFBFTkQgV2Vi
S2l0X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCispCisKK3NldChXZWJLaXRDb21tb25JbmNs
dWRlRGlyZWN0b3JpZXMgJHtXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFU30pCitzZXQoV2ViS2l0
Q29tbW9uU3lzdGVtSW5jbHVkZURpcmVjdG9yaWVzICR7V2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJ
UkVDVE9SSUVTfSkKKworbGlzdChBUFBFTkQgV2ViUHJvY2Vzc19TT1VSQ0VTCisgICAgV2ViUHJv
Y2Vzcy9FbnRyeVBvaW50L3dpbi9XZWJQcm9jZXNzTWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQg
TmV0d29ya1Byb2Nlc3NfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvd2lu
L05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKKykKKworaWYgKCR7RU5BQkxFX1BMVUdJTl9QUk9DRVNT
fSkKKyAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX1NPVVJDRVMKKyAgICApCitlbmRpZiAo
KQorCithZGRfZGVmaW5pdGlvbnMoLURVU0VfRElSRUNUMkQ9MSAtRFVTRV9DVVJMPTEpCisKK2xp
c3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJs
L1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUN1cmwuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsQ3VybC5jcHAKKworICAgIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3Vy
bC5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKKwor
ICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisKKyAgICBTaGFy
ZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorCisgICAgVUlQcm9jZXNzL3dpbi9C
YWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Y3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKQorCitsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L2N1cmwiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
IgorKQorCitsaXN0KEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCisgICAgUFJJVkFURQorICAgICAg
ICAke09QRU5TU0xfTElCUkFSSUVTfQorICAgICAgICBEMmQxLmxpYgorICAgICAgICBEd3JpdGUK
KyAgICAgICAgRHhndWlkCisgICAgICAgIFdpbmRvd3NDb2RlY3MKKyAgICAgICAgbWZ1dWlkLmxp
YgorICAgICAgICBzdHJtaWlkcy5saWIKKykKKworaWYgKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
KQorICAgIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgICAgIFVJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorICAgICAgICBVSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKworICAgICAgICBVSVByb2Nlc3Mvd2lu
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAorICAgICkKKworICAgIGxpc3QoQVBQRU5E
IFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9zb2NrZXQiCisgICAgKQorZW5kaWYgKCkKKworc2V0KFNoYXJlZFdlYktpdExpYnJhcmll
cworICAgICR7V2ViS2l0X0xJQlJBUklFU30KKykKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgk
e1dlYktpdF9TT1VSQ0VTfSkKKworIyBUZW1wb3JhcmlseSBsaXN0IG91dCBzaGFyZWQgaGVhZGVy
cyBoZXJlCitzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUworICAgIFNoYXJlZC9B
UEkvYy9XS0FycmF5LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmgKKyAgICBTaGFyZWQvQVBJ
L2MvV0tDZXJ0aWZpY2F0ZUluZm8uaAorICAgIFNoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rpb25SZWYu
aAorICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oCisgICAgU2hhcmVkL0FQSS9j
L1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS0RhdGEuaAorICAg
IFNoYXJlZC9BUEkvYy9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oCisgICAgU2hhcmVkL0FQSS9j
L1dLRGVwcmVjYXRlZC5oCisgICAgU2hhcmVkL0FQSS9jL1dLRGlhZ25vc3RpY0xvZ2dpbmdSZXN1
bHRUeXBlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmgKKyAgICBTaGFyZWQvQVBJ
L2MvV0tFcnJvclJlZi5oCisgICAgU2hhcmVkL0FQSS9jL1dLRXZlbnQuaAorICAgIFNoYXJlZC9B
UEkvYy9XS0ZpbmRPcHRpb25zLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oCisgICAg
U2hhcmVkL0FQSS9jL1dLSW1hZ2UuaAorICAgIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5o
CisgICAgU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaAorICAgIFNoYXJlZC9BUEkv
Yy9XS051bWJlci5oCisgICAgU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCisgICAgU2hh
cmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaAorICAgIFNoYXJlZC9BUEkvYy9XS1Bh
Z2VWaXNpYmlsaXR5VHlwZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9u
LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5oCisgICAgU2hhcmVkL0FQ
SS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tTdHJpbmcu
aAorICAgIFNoYXJlZC9BUEkvYy9XS1N0cmluZ1ByaXZhdGUuaAorICAgIFNoYXJlZC9BUEkvYy9X
S1R5cGUuaAorICAgIFNoYXJlZC9BUEkvYy9XS1VSTC5oCisgICAgU2hhcmVkL0FQSS9jL1dLVVJM
UmVxdWVzdC5oCisgICAgU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaAorICAgIFNoYXJlZC9B
UEkvYy9XS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMuaAorICAgIFNoYXJlZC9BUEkvYy9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lLmgKKworICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5oCisgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRIaXN0b3J5Q2xpZW50LmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVN
YW5hZ2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsVHlwZXMuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVI
YW5kbGVSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25NYW5hZ2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBv
c2l0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTGF5b3V0TW9kZS5oCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrRGlz
cGxheS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tOYXRpdmVFdmVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkFjdGlvblJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGFSZWYu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05hdmlnYXRpb25SZXNwb25zZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VGaW5kQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlRmluZE1hdGNoZXNDbGll
bnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VGb3JtQ2xpZW50LmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlR3JvdXAuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUxvYWRlckNsaWVudC5o
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQb2xpY3lDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHMuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGx1Z2luTG9hZFBvbGljeS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLVGV4dENoZWNrZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLVmlld3BvcnRBdHRyaWJ1dGVzLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuaAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1dpbmRvd0ZlYXR1cmVzUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV2ViS2l0Ml9DLmgKKworICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKKwor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKKyAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZpbGVIYW5kbGVSZWYuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbml0aWFsaXplLmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW5zcGVjdG9yLmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuaAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZUZvcm1DbGllbnQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaAorICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlVUlDbGllbnQu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgK
KyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUu
aAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3Js
ZC5oCispCisKKyMgV2luZG93cyBzcGVjaWZpYworbGlzdChBUFBFTkQgV2ViS2l0X1BVQkxJQ19G
UkFNRVdPUktfSEVBREVSUworICAgIFNoYXJlZC9BUEkvYy93aW4vV0tCYXNlV2luLmgKKworICAg
IFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKKykKKworc2V0KFdlYktpdF9GT1JXQVJESU5H
X0hFQURFUlNfRElSRUNUT1JJRVMKKyAgICBTaGFyZWQvQVBJL2MKKworICAgIFNoYXJlZC9BUEkv
Yy9jZgorICAgIFNoYXJlZC9BUEkvYy93aW4KKworICAgIFVJUHJvY2Vzcy9BUEkvQworICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwCisKKyAgICBVSVByb2Nlc3MvQVBJL0Mvd2luCisKKyAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jCispCisKK2xpc3QoQVBQRU5EIFdlYktpdF9QVUJMSUNf
RlJBTUVXT1JLX0hFQURFUlMKKyAgICAjU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5o
CisKKyAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuaAorCisgICAg
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tQcm90ZWN0aW9uU3BhY2VDdXJsLmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgKKykKKworV0VCS0lUX01B
S0VfRk9SV0FSRElOR19IRUFERVJTKFdlYktpdAorICAgIFRBUkdFVF9OQU1FIFdlYktpdEZyYW1l
d29ya0hlYWRlcnMKKyAgICBERVNUSU5BVElPTiAke1dlYktpdF9GUkFNRVdPUktfSEVBREVSU19E
SVJ9L1dlYktpdAorICAgIEZJTEVTICR7V2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSU30K
KyAgICBGTEFUVEVORUQKKykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTaGFyZWFibGVCaXRtYXBfaAot
I2RlZmluZSBTaGFyZWFibGVCaXRtYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTQwLDYgKzM5LDEy
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
RElSRUNUMkQpCitpbnRlcmZhY2UgSVdJQ0JpdG1hcDsKKworI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2U7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xMjUsNiArMTMwLDkgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hh
cmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdl
IGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hh
bmdlLgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwor
I2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3Qy
RFN1cmZhY2UoKTsKKyAgICB2b2lkIHN5bmMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE0MSwxNiArMTQ5LDIyIEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNv
bnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KTsKICNlbmRpZgogCi0jaWYgVVNFKENBSVJP
KQorI2lmIFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIHN0YXRpYyB2b2lkIHJlbGVh
c2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCk7CiAjZW5kaWYKIAorcHVibGljOgog
ICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKK3ByaXZhdGU6CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9jb25maWd1cmF0aW9u
KS51bnNhZmVHZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgQ29u
ZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgQ09N
UHRyPElXSUNCaXRtYXA+IG1fYml0bWFwOworI2VuZGlmCisKICAgICAvLyBJZiB0aGUgc2hhcmVh
YmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhl
IHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVk
TWVtb3J5OwogCkBAIC0xNjAsNCArMTc0LDMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyBTaGFyZWFibGVCaXRtYXBfaApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Jp
dG1hcEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ESUJQaXhlbERhdGEuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0RpcmVjdDJET3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlyZWN0
MkRVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4K
KyNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IGF1dG8gYml0bWFwRm9ybWF0ID0g
R1VJRF9XSUNQaXhlbEZvcm1hdDMyYnBwUEJHUkE7CisKK3N0YXRpYyB1bnNpZ25lZCBzdHJpZGVG
b3JXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAgICBzdGF0aWMgdW5zaWduZWQgYml0c1BlclBp
eGVsID0gRGlyZWN0MkQ6OmJpdHNQZXJQaXhlbChiaXRtYXBGb3JtYXQpOworICAgIHJldHVybiBi
aXRzUGVyUGl4ZWwgKiB3aWR0aCAvIDg7Cit9CisKK0NoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92
ZXJmbG93PiBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6Oklu
dFNpemUgc2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSAqIHNpemUud2lkdGgo
KTsKK30KKwordW5zaWduZWQgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclBpeGVs
KGNvbnN0IENvbmZpZ3VyYXRpb24mKQoreworICAgIHJldHVybiA0OworfQorCitzdGF0aWMgaW5s
aW5lIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVTdXJmYWNlRnJvbURhdGEodm9pZCogZGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzdHJp
ZGUgPSBzdHJpZGVGb3JXaWR0aChzaXplLndpZHRoKCkpOworICAgIHJldHVybiBEaXJlY3QyRDo6
Y3JlYXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRGF0YShkYXRhLCBzaXplLCBzdHJpZGUpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpCit7CisgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1
cmZhY2UoKTsKKyAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBE
aXJlY3QyRDo6Y3JlYXRlUmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwor
fQorCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCit7Cisg
ICAgcGFpbnQoY29udGV4dCwgMSwgZHN0UG9pbnQsIHNyY1JlY3QpOworfQorCit2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZh
Y3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQor
eworICAgIGF1dG8gc3VyZmFjZSA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOworCisgICAgRmxv
YXRSZWN0IGRlc3RSZWN0KGRzdFBvaW50LCBzcmNSZWN0LnNpemUoKSk7CisgICAgRmxvYXRSZWN0
IHNyY1JlY3RTY2FsZWQoc3JjUmVjdCk7CisgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShzY2FsZUZh
Y3Rvcik7CisKKyAgICBBU1NFUlQoY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CisgICAg
YXV0byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7CisgICAgYXV0byYgcGxhdGZvcm1Db250ZXh0
ID0gKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBEaXJlY3QyRDo6ZHJhd05hdGl2
ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgbV9zaXplLCBkZXN0UmVjdCwg
c3JjUmVjdFNjYWxlZCwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbigpLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0
ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cit9CisKK0NPTVB0cjxJV0lD
Qml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpCit7CisgICAg
bV9iaXRtYXAgPSBjcmVhdGVTdXJmYWNlRnJvbURhdGEoZGF0YSgpLCBtX3NpemUpOworICAgIHJl
ZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlU3VyZmFjZURhdGEuCisgICAgcmV0
dXJuIG1fYml0bWFwOworfQorCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZVN1cmZhY2VE
YXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQoreworICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZUJp
dG1hcCo+KHR5cGVsZXNzQml0bWFwKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmIGluIGNy
ZWF0ZURpcmVjdDJEU3VyZmFjZS4KK30KKworUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZUltYWdlKCkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBjcmVhdGVEaXJlY3QyRFN1cmZh
Y2UoKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7Cit9CisKK3ZvaWQg
U2hhcmVhYmxlQml0bWFwOjpzeW5jKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQor
eworICAgIEFTU0VSVChtX2JpdG1hcCk7CisKKyAgICBncmFwaGljc0NvbnRleHQuZW5kRHJhdygp
OworCisgICAgV0lDUmVjdCByY0xvY2sgPSB7IDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkgfTsKKworICAgIENPTVB0cjxJV0lDQml0bWFwTG9jaz4gYml0bWFwRGF0YUxvY2s7
CisgICAgSFJFU1VMVCBociA9IG1fYml0bWFwLT5Mb2NrKCZyY0xvY2ssIFdJQ0JpdG1hcExvY2tS
ZWFkLCAmYml0bWFwRGF0YUxvY2spOworICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAg
IFVJTlQgYnVmZmVyU2l6ZSA9IDA7CisgICAgICAgIFdJQ0luUHJvY1BvaW50ZXIgZGF0YVB0ciA9
IG51bGxwdHI7CisgICAgICAgIGhyID0gYml0bWFwRGF0YUxvY2stPkdldERhdGFQb2ludGVyKCZi
dWZmZXJTaXplLCAmZGF0YVB0cik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKQorICAgICAg
ICAgICAgbWVtY3B5KGRhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YVB0ciksIGJ1
ZmZlclNpemUpOworICAgIH0KKworICAgIC8vIE9uY2Ugd2UgYXJlIGRvbmUgbW9kaWZ5aW5nIHRo
ZSBkYXRhLCB1bmxvY2sgdGhlIGJpdG1hcAorICAgIGJpdG1hcERhdGFMb2NrID0gbnVsbHB0cjsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9CYWNraW5nU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0JhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVXBkYXRlSW5mby5oIgog
CisjaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPGQyZDEuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQgKzIzLDE5
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBC
YWNraW5nU3RvcmVfaAotI2RlZmluZSBCYWNraW5nU3RvcmVfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogI2lmIFVTRShDQUlSTykKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyby5oPgorI2VsaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPFdlYkNvcmUvQmFja2luZ1N0
b3JlQmFja2VuZERpcmVjdDJELmg+CisjZW5kaWYKKworI2lmIFVTRShESVJFQ1QyRCkKK2ludGVy
ZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUyLDE3ICs1NywyNSBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAgdHlwZWRlZiBj
YWlyb190KiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAg
ICB0eXBlZGVmIElEMkQxUmVuZGVyVGFyZ2V0KiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNl
bmRpZgogCiAgICAgdm9pZCBwYWludChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRl
SW5mbyYpOwogCisjaWYgVVNFKERJUkVDVDJEKQorICAgIElEMkQxRENSZW5kZXJUYXJnZXQqIHJl
bmRlclRhcmdldCgpIHsgcmV0dXJuIG1fYmFja2VuZC0+cmVuZGVyVGFyZ2V0KCk7IH0KKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFw
KiwgY29uc3QgVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7
CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkJhY2tpbmdT
dG9yZUJhY2tlbmRDYWlybz4gY3JlYXRlQmFja2VuZCgpOworI2VsaWYgVVNFKERJUkVDVDJEKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+
IGNyZWF0ZUJhY2tlbmQoKTsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7
CkBAIC03MCw5ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQ
cm94eTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUJhY2tlbmRDYWlybz4gbV9iYWNrZW5kOworI2VsaWYgVVNFKERJUkVDVDJEKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IG1f
YmFja2VuZDsKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBCYWNraW5nU3RvcmVfaApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niwx
MCBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2VuZGlm
CiAKKyNpZiBVU0UoRElSRUNUMkQpCisjaW5jbHVkZSA8ZDJkMS5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQoQmFja2luZ1N0
b3JlOjpQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdl
YkNvcmU6OlJlZ2lvbiYgdW5wYWludGVkUmVnaW9uKTsKICNlbmRpZgogCisjaWYgVVNFKERJUkVD
VDJEKQorICAgIElEMkQxRENSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCgpIHsgcmV0dXJuIG1f
YmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUtPnJlbmRlclRhcmdldCgpIDogbnVsbHB0cjsg
fQorI2VuZGlmCisKICAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9CiAgICAgY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJUcmVlQ29udGV4dDsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFj
a2luZ1N0b3JlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgorI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlyZWN0MkRVdGlsaXRp
ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaD4KKyNpbmNsdWRlIDxk
MmQxLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9y
ZTo6Y3JlYXRlQmFja2VuZCgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsK
K30KKwordm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJU
YXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgcmVuZGVyVGFyZ2V0LT5CZWdpbkRy
YXcoKTsKKworICAgIEFTU0VSVChtX2JhY2tlbmQpOworCisgICAgYXV0byBiaXRtYXBCcnVzaFBy
b3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKKyAgICBhdXRvIGJydXNo
UHJvcGVydGllcyA9IEQyRDE6OkJydXNoUHJvcGVydGllcygpOworCisgICAgQ09NUHRyPElEMkQx
Qml0bWFwQnJ1c2g+IHBhdHRlcm5CcnVzaDsKKyAgICBIUkVTVUxUIGhyID0gcmVuZGVyVGFyZ2V0
LT5DcmVhdGVCaXRtYXBCcnVzaChtX2JhY2tlbmQtPnN1cmZhY2UoKSwgJmJpdG1hcEJydXNoUHJv
cGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgQVNTRVJUKFNV
Q0NFRURFRChocikpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRDJEMV9SRUNUX0YgZGVzdFJlY3QocmVjdCk7CisgICAgcmVuZGVyVGFyZ2V0LT5GaWxs
UmVjdGFuZ2xlKCZkZXN0UmVjdCwgcGF0dGVybkJydXNoLmdldCgpKTsKKyAgICByZW5kZXJUYXJn
ZXQtPkVuZERyYXcoKTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRl
KFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQor
eworICAgIFdURkxvZ0Fsd2F5cygiQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSIpOwor
ICAgIGlmICghbV9iYWNrZW5kKQorICAgICAgICBtX2JhY2tlbmQgPSBjcmVhdGVCYWNrZW5kKCk7
CisKKyAgICBzY3JvbGwodXBkYXRlSW5mby5zY3JvbGxSZWN0LCB1cGRhdGVJbmZvLnNjcm9sbE9m
ZnNldCk7CisKKyAgICAvLyBQYWludCBhbGwgdXBkYXRlIHJlY3RzLgorICAgIEludFBvaW50IHVw
ZGF0ZVJlY3RMb2NhdGlvbiA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcy5sb2NhdGlvbigp
OworCisgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBSZW5kZXJUYXJn
ZXQ7CisgICAgSFJFU1VMVCBociA9IG1fYmFja2VuZC0+cmVuZGVyVGFyZ2V0KCktPkNyZWF0ZUNv
bXBhdGlibGVSZW5kZXJUYXJnZXQoJmJpdG1hcFJlbmRlclRhcmdldCk7CisgICAgR3JhcGhpY3ND
b250ZXh0IGdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0
ZUZhY3RvcnkoYml0bWFwUmVuZGVyVGFyZ2V0LmdldCgpKSk7CisKKyAgICAvLyBXaGVuIG1fd2Vi
UGFnZVByb3h5LmRyYXdzQmFja2dyb3VuZCgpIGlzIGZhbHNlLCBiaXRtYXAgY29udGFpbnMgdHJh
bnNwYXJlbnQgcGFydHMgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSB3ZWJwYWdlLgorICAgIC8vIEZv
ciBzdWNoIGNhc2UsIGJpdG1hcCBtdXN0IGJlIGRyYXduIHVzaW5nIENvbXBvc2l0ZUNvcHkgdG8g
b3ZlcndyaXRlIHRoZSBleGlzdGluZyBzdXJmYWNlLgorICAgIGdyYXBoaWNzQ29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlQ29weSk7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHVwZGF0ZVJlY3QgOiB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzKSB7CisgICAgICAg
IEludFJlY3Qgc3JjUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgIHNyY1JlY3QubW92ZSgtdXBk
YXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOworICAgICAgICBi
aXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgdXBkYXRl
UmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKKyAgICB9CisKKyAgICBDT01QdHI8SUQyRDFCaXRt
YXA+IG91dHB1dDsKKyAgICBociA9IGJpdG1hcFJlbmRlclRhcmdldC0+R2V0Qml0bWFwKCZvdXRw
dXQpOworICAgIEQyRDFfUE9JTlRfMlUgZGVzdFBvaW50ID0gRDJEMTo6UG9pbnQyVSgpOworICAg
IGF1dG8gc2l6ZSA9IERpcmVjdDJEOjpiaXRtYXBTaXplKG91dHB1dC5nZXQoKSk7CisgICAgRDJE
MV9SRUNUX1UgZGVzdFJlY3QgPSBEMkQxOjpSZWN0VSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOworICAgIGhyID0gbV9iYWNrZW5kLT5zdXJmYWNlKCktPkNvcHlGcm9tQml0bWFw
KCZkZXN0UG9pbnQsIG91dHB1dC5nZXQoKSwgJmRlc3RSZWN0KTsKK30KKwordm9pZCBCYWNraW5n
U3RvcmU6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxPZmZzZXQpCit7CisgICAgaWYgKHNjcm9sbE9mZnNldC5pc1plcm8oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV1RGTG9nQWx3YXlzKCJCYWNraW5nU3RvcmU6OnNjcm9sbCIpOworCisg
ICAgQVNTRVJUKG1fYmFja2VuZCk7CisgICAgbV9iYWNrZW5kLT5zY3JvbGwoc2Nyb2xsUmVjdCwg
c2Nyb2xsT2Zmc2V0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2UuaD4K
KworI2lmIFVTRShDRikKICNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMjY1LDIwICsyNjgsMzIgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DbG9zZUZybwogCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RvclBhZ2VVUkwoKQogeworI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGh0bWxVUkxSZWYgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSgpLCBDRlNUUigiTWFpbiIpLCBDRlNUUigiaHRtbCIpLCBDRlNUUigiV2Vi
SW5zcGVjdG9yVUkiKSkpOwogICAgIHJldHVybiBDRlVSTEdldFN0cmluZyhodG1sVVJMUmVmLmdl
dCgpKTsKKyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgogfQogCiBTdHJpbmcgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJMKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNv
dXJjZVVSTChXZWJDb3JlOjp3ZWJLaXRCdW5kbGUoKSwgQ0ZTVFIoIlRlc3QiKSwgQ0ZTVFIoImh0
bWwiKSwgQ0ZTVFIoIldlYkluc3BlY3RvclVJIikpKTsKICAgICByZXR1cm4gQ0ZVUkxHZXRTdHJp
bmcoaHRtbFVSTFJlZi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB7IH07CisjZW5kaWYKIH0K
IAogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkKIHsKKyNpZiBV
U0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBiYXNlVVJMUmVmID0gYWRvcHRDRihDRkJ1
bmRsZUNvcHlSZXNvdXJjZVVSTChXZWJDb3JlOjp3ZWJLaXRCdW5kbGUoKSwgQ0ZTVFIoIldlYklu
c3BlY3RvclVJIiksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gQ0ZVUkxHZXRTdHJp
bmcoYmFzZVVSTFJlZi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB7IH07CisjZW5kaWYKIH0K
IAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJv
YXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHlXaW4uaCIKICNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCkBAIC01Mywx
NCArNTIsMjYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KLSNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgotI2luY2x1
ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRlICJSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaCIKKyNlbmRpZgorCisjaWYgVVNFKENBSVJPKQorI2lu
Y2x1ZGUgPGNhaXJvLXdpbjMyLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNlbmRpZiAKKworI2lm
IFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxXZWJDb3JlL0RpcmVjdDJEVXRpbGl0aWVzLmg+Cisj
ZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC00NzEsNiArNDgyLDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25zdCBJ
bnRSZQogICAgIGlmIChhdXRvKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzKj4obV9wYWdlLT5kcmF3aW5nQXJlYSgpKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBvcnQgV2ViS2l0MSdzIHJlY3QgY29hbGVzY2luZyBs
b2dpYyBoZXJlLgogICAgICAgICBSZWdpb24gdW5wYWludGVkUmVnaW9uOworI2lmIFVTRShDQUlS
TykKICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fd2luMzJfc3VyZmFj
ZV9jcmVhdGUoaGRjKTsKICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShz
dXJmYWNlKTsKIApAQCAtNDc4LDYgKzQ5MCwxMyBAQCB2b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBo
ZGMsIGNvbnN0IEludFJlCiAKICAgICAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKICAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworI2Vsc2UKKyAgICAgICAgUkVDVCBk
MkRpcnR5UmVjdCA9IGRpcnR5UmVjdDsKKyAgICAgICAgaWYgKENPTVB0cjxJRDJEMURDUmVuZGVy
VGFyZ2V0PiByZW5kZXJUYXJnZXQgPSBkcmF3aW5nQXJlYS0+cmVuZGVyVGFyZ2V0KCkpIHsKKyAg
ICAgICAgICAgIHJlbmRlclRhcmdldC0+QmluZERDKGhkYywgJmQyRGlydHlSZWN0KTsKKyAgICAg
ICAgICAgIGRyYXdpbmdBcmVhLT5wYWludChyZW5kZXJUYXJnZXQuZ2V0KCksIGRpcnR5UmVjdCwg
dW5wYWludGVkUmVnaW9uKTsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgYXV0byB1bnBh
aW50ZWRSZWN0cyA9IHVucGFpbnRlZFJlZ2lvbi5yZWN0cygpOwogICAgICAgICBmb3IgKGF1dG8m
IHJlY3QgOiB1bnBhaW50ZWRSZWN0cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBh
Z2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dp
bmRvd01lc3NhZ2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMjQ4
NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSwxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCisjaWYgVVNFKERJUkVDVDJEKQor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oPgorI2luY2x1ZGUgPGQyZDEuaD4K
KyNlbmRpZgorCisKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogI2luY2x1ZGUgPHd0Zi9nbGli
L1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2VuZGlmCkBAIC0yNDEsNiArMjQ4LDcgQEAgdm9p
ZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6Om1haQogICAgICAgICBtX3ByZXZpb3Vz
TGF5ZXJUcmVlSG9zdC0+Y29udGVudHNTaXplQ2hhbmdlZChzaXplKTsKIH0KIAorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBEcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKQEAgLTI1Niw2ICsyNjQsNyBAQCB2b2lkIERy
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGlkCiAgICAgZWxzZSBpZiAobV9wcmV2aW91
c0xheWVyVHJlZUhvc3QpCiAgICAgICAgIG1fcHJldmlvdXNMYXllclRyZWVIb3N0LT5kaWRDaGFu
Z2VWaWV3cG9ydEF0dHJpYnV0ZXMoV1RGTW92ZShhdHRycykpOwogfQorI2VuZGlmCiAKIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5KiBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCkKIHsKQEAgLTc0NCw2ICs3NTMsMTAgQEAgdm9pZCBEcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmRpcwogICAgICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLmFw
cGVuZChyZWN0KTsKICAgICB9CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgYml0bWFwLT5zeW5j
KCpncmFwaGljc0NvbnRleHQpOworI2VuZGlmCisKICAgICAvLyBMYXlvdXQgY2FuIHRyaWdnZXIg
bW9yZSBjYWxscyB0byBzZXROZWVkc0Rpc3BsYXkgYW5kIHdlIGRvbid0IHdhbnQgdG8gcHJvY2Vz
cyB0aGVtCiAgICAgLy8gdW50aWwgdGhlIFVJIHByb2Nlc3MgaGFzIHBhaW50ZWQgdGhlIHVwZGF0
ZSwgc28gd2Ugc3RvcCB0aGUgdGltZXIgaGVyZS4KICAgICBtX2Rpc3BsYXlUaW1lci5zdG9wKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRQYWludGluZ0VuYWJsZWQoYm9vbCBwYWludGluZ0VuYWJsZWQpIG92
ZXJyaWRlIHsgbV9pc1BhaW50aW5nRW5hYmxlZCA9IHBhaW50aW5nRW5hYmxlZDsgfTsKICAgICB2
b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJikgb3ZlcnJpZGU7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVT
RShURVhUVVJFX01BUFBFUikKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4v
V2ViSW5zcGVjdG9yVUlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE0ICs0MSwyMiBAQCBib29sIFdlYkluc3BlY3Rv
clVJOjpjYW5TYXZlKCkKIAogU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdz
VVJMKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBzdHJpbmdzVVJM
UmVmID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChXZWJDb3JlOjp3ZWJLaXRCdW5k
bGUoKSwgQ0ZTVFIoImxvY2FsaXplZFN0cmluZ3MiKSwgQ0ZTVFIoImpzIiksIENGU1RSKCJXZWJJ
bnNwZWN0b3JVSSIpKSk7CiAgICAgcmV0dXJuIENGVVJMR2V0U3RyaW5nKHN0cmluZ3NVUkxSZWYu
Z2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCiB9CiAKIFN0cmluZyBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7CisjaWYgVVNFKENGKQog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc3RyaW5nc1VSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVD
b3B5UmVzb3VyY2VVUkwoV2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENGU1RSKCJsb2NhbGl6ZWRT
dHJpbmdzIiksIENGU1RSKCJqcyIpLCBDRlNUUigiV2ViSW5zcGVjdG9yVUkiKSkpOwogICAgIHJl
dHVybiBDRlVSTEdldFN0cmluZyhzdHJpbmdzVVJMUmVmLmdldCgpKTsKKyNlbHNlCisgICAgcmV0
dXJuIHsgfTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCShy
ZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NNYWluV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiQXV4aWxpYXJ5UHJvY2Vzc01haW4uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8T2JqYmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtNDIsNiArNDMsOSBAQCBwdWJsaWM6CiAKIGludCBXZWJQcm9jZXNzTWFpbldp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CisgICAgLy8gV2ViUHJvY2VzcyB1c2VzIERpcmVj
dFgKKyAgICBIUkVTVUxUIGhyID0gOjpDb0luaXRpYWxpemVFeChudWxscHRyLCBDT0lOSVRfTVVM
VElUSFJFQURFRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAgICAgcmV0
dXJuIEF1eGlsaWFyeVByb2Nlc3NNYWluPFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NNYWluPihhcmdj
LCBhcmd2KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5kIE1pbmlCcm93c2VyIGJ1
aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQwODI1NTA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZTogQWRkZWQuCisKIDIwMTktMDgt
MDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IEZpeCBBcHBsZVdpbiBidWlsZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGlmIChNU1ZDKQogICAgICAgICBDT01NQU5E
ICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRz
L3ZlcnNpb24tc3RhbXAucGwgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxU
QVJHRVRfRklMRTpXZWJLaXRMZWdhY3k+CiAgICAgICAgIFZFUkJBVElNKQogCi0gICAgIGlmIChO
T1QgV1RGX1BMQVRGT1JNX1dJTl9DQUlSTykKKyAgICAgaWYgKEFQUExFKQogICAgICAgICAgYWRk
X3N1YmRpcmVjdG9yeSh3aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucykKICAgICAgZW5kaWYg
KCkKIGVuZGlmICgpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtRlRXLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1GVFcuY21ha2UJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybUZUVy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2OCBAQAorYWRkX2RlZmluaXRpb25zKC1EVVNFX0RJUkVD
VDJEPTEgLURVU0VfQ1VSTD0xIC1EV0VCS0lUX0VYUE9SVFM9MSkKK2xpc3QoQVBQRU5EIFdlYktp
dExlZ2FjeV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtXRUJLSVRfTElCUkFS
SUVTX0RJUn0vaW5jbHVkZSIKKykKK2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9TT1VSQ0VTX0Ns
YXNzZXMKKyAgICB3aW4vV2ViRG93bmxvYWRDVVJMLmNwcAorICAgIHdpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlckNVUkwuY3BwCispCitsaXN0KEFQUEVORCBXZWJLaXRMZWdh
Y3lfTElCUkFSSUVTCisgICAgJHtPUEVOU1NMX0xJQlJBUklFU30KKyAgICBQUklWQVRFIG1mdXVp
ZC5saWIKKyAgICBQUklWQVRFIHN0cm1paWRzLmxpYgorICAgIFBSSVZBVEUgJHtMSUJYTUwyX0xJ
QlJBUklFU30KKyAgICBQUklWQVRFICR7TElCWFNMVF9MSUJSQVJJRVN9CisgICAgUFJJVkFURSAk
e1NRTElURV9MSUJSQVJJRVN9CisgICAgUFJJVkFURSAke1pMSUJfTElCUkFSSUVTfQorKQorCith
ZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09V
UkNFU19ESVJ9L1dlYktpdFZlcnNpb24uaAorICAgIE1BSU5fREVQRU5ERU5DWSAke1dFQktJVExF
R0FDWV9ESVJ9L3NjcmlwdHMvZ2VuZXJhdGUtd2Via2l0dmVyc2lvbi5wbAorICAgIERFUEVORFMg
JHtXRUJLSVRMRUdBQ1lfRElSfS9tYWMvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZwor
ICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUTEVHQUNZX0RJUn0vc2NyaXB0
cy9nZW5lcmF0ZS13ZWJraXR2ZXJzaW9uLnBsIC0tY29uZmlnICR7V0VCS0lUTEVHQUNZX0RJUn0v
bWFjL0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25maWcgLS1vdXRwdXREaXIgJHtXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIFdl
YktpdExlZ2FjeV9TT1VSQ0VTICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L1dl
YktpdFZlcnNpb24uaCkKKworbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X1BSSVZBVEVfSU5DTFVE
RV9ESVJFQ1RPUklFUworICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0
ZSIKKyAgICAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlw
dENvcmUiCisgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL1dlYkNv
cmUiCisgICAgIiR7V0VCS0lUTEVHQUNZX0RJUn0vd2luIgorICAgICIke1dFQktJVExFR0FDWV9E
SVJ9L3dpbi9wbHVnaW5zIgorICAgICIke1dFQktJVExFR0FDWV9ESVJ9L3dpbi9XZWJDb3JlU3Vw
cG9ydCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vaW5jbHVkZSIK
KyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcyIKKykK
KworbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X0lOQ0xVREVTCisgICAgd2luL0NGRGljdGlvbmFy
eVByb3BlcnR5QmFnLmgKKyAgICB3aW4vQ09NRW51bVZhcmlhbnQuaAorICAgIHdpbi9DT01Qcm9w
ZXJ0eUJhZy5oCisgICAgd2luL0NPTVZhcmlhbnRTZXR0ZXIuaAorICAgIHdpbi9Db2RlQW5hbHlz
aXNDb25maWcuaAorICAgIHdpbi9ET01DU1NDbGFzc2VzLmgKKyAgICB3aW4vRE9NQ29yZUNsYXNz
ZXMuaAorICAgIHdpbi9ET01FdmVudHNDbGFzc2VzLmgKKyAgICB3aW4vRE9NSFRNTENsYXNzZXMu
aAorICAgIHdpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCisgICAgd2luL0RlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZS5oCisgICAgd2luL0ZvckVhY2hDb0NsYXNzLmgKKyAgICB3aW4vRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5oCisgICAgd2luL01hcnNoYWxsaW5nSGVscGVycy5oCisgICAgd2lu
L01lbW9yeVN0cmVhbS5oCisgICAgd2luL1Byb2dJRE1hY3Jvcy5oCisgICAgd2luL1dlYkFjdGlv
blByb3BlcnR5QmFnLmgKKyAgICB3aW4vV2ViQXBwbGljYXRpb25DYWNoZS5oCisgICAgd2luL1dl
YkFyY2hpdmUuaAorICAgIHdpbi9XZWJCYWNrRm9yd2FyZExpc3QuaAorICAgIHdpbi9XZWJDYWNo
ZS5oCisgICAgd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICB3aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuaAorICAgIHdpbi9XZWJEYXRhU291cmNlLmgKKyAgICB3aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmgKKyAgICB3aW4vV2ViRG9jdW1lbnRMb2FkZXIuaAorICAgIHdpbi9XZWJEb3du
bG9hZC5oCisgICAgd2luL1dlYkRyb3BTb3VyY2UuaAorICAgIHdpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuaAorICAgIHdpbi9XZWJFcnJvci5oCisgICAgd2luL1dlYkZyYW1lLmgKKyAgICB3aW4v
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oCisgICAgd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIuaAorICAgIHdpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKyAgICB3aW4vV2ViSFRN
TFJlcHJlc2VudGF0aW9uLmgKKyAgICB3aW4vV2ViSGlzdG9yeS5oCisgICAgd2luL1dlYkhpc3Rv
cnlJdGVtLmgKKyAgICB3aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5oCisgICAgd2luL1dlYktp
dENPTUFQSS5oCisgICAgd2luL1dlYktpdENsYXNzRmFjdG9yeS5oCisgICAgd2luL1dlYktpdERM
TC5oCisgICAgd2luL1dlYktpdEdyYXBoaWNzLmgKKyAgICB3aW4vV2ViS2l0TG9nZ2luZy5oCisg
ICAgd2luL1dlYktpdFN0YXRpc3RpY3MuaAorICAgIHdpbi9XZWJLaXRTdGF0aXN0aWNzUHJpdmF0
ZS5oCisgICAgd2luL1dlYktpdFN5c3RlbUJpdHMuaAorICAgIHdpbi9XZWJMb2NhbGl6YWJsZVN0
cmluZ3MuaAorICAgIHdpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oCisgICAgd2luL1dlYk5hdmln
YXRpb25EYXRhLmgKKyAgICB3aW4vV2ViTm90aWZpY2F0aW9uLmgKKyAgICB3aW4vV2ViTm90aWZp
Y2F0aW9uQ2VudGVyLmgKKyAgICB3aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKyAgICB3
aW4vV2ViUHJlZmVyZW5jZXMuaAorICAgIHdpbi9XZWJSZXNvdXJjZS5oCisgICAgd2luL1dlYlNj
cmlwdE9iamVjdC5oCisgICAgd2luL1dlYlNjcmlwdFdvcmxkLmgKKyAgICB3aW4vV2ViU2VjdXJp
dHlPcmlnaW4uaAorICAgIHdpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5oCisgICAgd2luL1dlYlRl
eHRSZW5kZXJlci5oCisgICAgd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKKyAg
ICB3aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaAorICAgIHdpbi9XZWJV
UkxDcmVkZW50aWFsLmgKKyAgICB3aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmgKKyAgICB3aW4v
V2ViVVJMUmVzcG9uc2UuaAorICAgIHdpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaAorICAg
IHdpbi9XZWJWaWV3LmgKKyAgICB3aW4vV2ViV29ya2Vyc1ByaXZhdGUuaAorKQorCitsaXN0KEFQ
UEVORCBXZWJLaXRMZWdhY3lfU09VUkNFU19DbGFzc2VzCisgICAgd2luL0FjY2Vzc2libGVCYXNl
LmNwcAorICAgIHdpbi9BY2Nlc3NpYmxlRG9jdW1lbnQuY3BwCisgICAgd2luL0FjY2Vzc2libGVJ
bWFnZS5jcHAKKyAgICB3aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcAorICAgIHdpbi9CYWNrRm9y
d2FyZExpc3QuY3BwCisgICAgd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorICAgIHdp
bi9ET01DU1NDbGFzc2VzLmNwcAorICAgIHdpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKyAgICB3aW4v
RE9NRXZlbnRzQ2xhc3Nlcy5jcHAKKyAgICB3aW4vRE9NSFRNTENsYXNzZXMuY3BwCisgICAgd2lu
L0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAorICAgIHdpbi9EZWZhdWx0UG9saWN5RGVsZWdh
dGUuY3BwCisgICAgd2luL0ZvckVhY2hDb0NsYXNzLmNwcAorICAgIHdpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAorICAgIHdpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisgICAgd2lu
L01lbW9yeVN0cmVhbS5jcHAKKyAgICB3aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisgICAg
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisgICAgd2luL1dlYkFyY2hpdmUuY3BwCisgICAg
d2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKyAgICB3aW4vV2ViQ2FjaGUuY3BwCisgICAgd2lu
L1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorICAgIHdpbi9XZWJEYXRhU291cmNlLmNwcAorICAgIHdp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisgICAgd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAor
ICAgIHdpbi9XZWJEb3dubG9hZC5jcHAKKyAgICB3aW4vV2ViRHJvcFNvdXJjZS5jcHAKKyAgICB3
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorICAgIHdpbi9XZWJFcnJvci5jcHAKKyAgICB3
aW4vV2ViRnJhbWUuY3BwCisgICAgd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisgICAg
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCisgICAgd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwCisgICAgd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKyAgICB3
aW4vV2ViSGlzdG9yeS5jcHAKKyAgICB3aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisgICAgd2luL1dl
Ykluc3BlY3Rvci5jcHAKKyAgICB3aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKyAgICB3
aW4vV2ViS2l0Q09NQVBJLmNwcAorICAgIHdpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCisgICAg
d2luL1dlYktpdERMTC5jcHAKKyAgICB3aW4vV2ViS2l0TG9nZ2luZy5jcHAKKyAgICB3aW4vV2Vi
S2l0TWVzc2FnZUxvb3AuY3BwCisgICAgd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCisgICAgd2lu
L1dlYktpdFN5c3RlbUJpdHMuY3BwCisgICAgd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAK
KyAgICB3aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisgICAgd2luL1dlYk5hdmlnYXRpb25E
YXRhLmNwcAorICAgIHdpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcAorICAgIHdpbi9XZWJOb3RpZmlj
YXRpb24uY3BwCisgICAgd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKyAgICB3aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCisgICAgd2luL1dlYlJlc291cmNlLmNwcAorICAgIHdpbi9XZWJTY3Jp
cHRPYmplY3QuY3BwCisgICAgd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorICAgIHdpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKKyAgICB3aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisgICAgd2lu
L1dlYlRleHRSZW5kZXJlci5jcHAKKyAgICB3aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwCisgICAgd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAor
ICAgIHdpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorICAgIHdpbi9XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UuY3BwCisgICAgd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorICAgIHdpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCisgICAgd2luL1dlYlZpZXcuY3BwCisgICAgd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcAorCisgICAgd2luL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisgICAgd2lu
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisgICAgd2luL3BsdWdpbnMvUGx1Z2luRGVi
dWcuY3BwCisgICAgd2luL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKKyAg
ICB3aW4vcGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmNwcAorICAgIHdpbi9wbHVn
aW5zL1BsdWdpblBhY2thZ2UuY3BwCisgICAgd2luL3BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5j
cHAKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisgICAgd2luL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorICAgIHdpbi9w
bHVnaW5zL25wYXBpLmNwcAorCisgICAgd2luL3N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5j
cHAKKykKKworbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X1NPVVJDRVNfV2ViQ29yZVN1cHBvcnQK
KyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3Bw
CisgICAgd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAorICAgIHdpbi9XZWJD
b3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisgICAgd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKyAgICB3aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAKKyAgICB3aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisgICAgd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisg
ICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisgICAgd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorICAg
IHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisgICAgd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckRlbGVnYXRlLmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JEZWxlZ2F0ZS5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKyAg
ICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorICAgIHdpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorICAgIHdpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJW
aXNpdGVkTGlua1N0b3JlLmgKKykKKworaWYgKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgOCkK
KyAgICBlbmFibGVfbGFuZ3VhZ2UoQVNNX01BU00pCisgICAgaWYgKE1TVkMpCisgICAgICAgIHNl
dChNQVNNX0VYRUNVVEFCTEUgbWw2NCkKKyAgICAgICAgc2V0KE1BU01fRkxBR1MgL2MgL0ZvKQor
ICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgICAgICBPVVRQVVQgJHtXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vUGFpbnRIb29rcy5vYmoKKyAgICAgICAgICAgIE1B
SU5fREVQRU5ERU5DWSB3aW4vcGx1Z2lucy9QYWludEhvb2tzLmFzbQorICAgICAgICAgICAgQ09N
TUFORCAke01BU01fRVhFQ1VUQUJMRX0gJHtNQVNNX0ZMQUdTfQorICAgICAgICAgICAgICAgICR7
V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L1BhaW50SG9va3Mub2JqCisgICAgICAg
ICAgICAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dpbi9wbHVnaW5zL1BhaW50SG9v
a3MuYXNtCisgICAgICAgICAgICBWRVJCQVRJTSkKKyAgICAgICAgbGlzdChBUFBFTkQgV2ViS2l0
TGVnYWN5X1NPVVJDRVMKKyAgICAgICAgICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVJ9L1BhaW50SG9va3Mub2JqCisgICAgICAgICkKKyAgICBlbHNlICgpCisgICAgICAgIGxp
c3QoQVBQRU5EIFdlYktpdExlZ2FjeV9TT1VSQ0VTCisgICAgICAgICAgICB3aW4vcGx1Z2lucy9Q
YWludEhvb2tzLmFzbQorICAgICAgICApCisgICAgZW5kaWYgKCkKK2VuZGlmICgpCisKK2lmIChD
T01QSUxFUl9JU19HQ0NfT1JfQ0xBTkcpCisgICAgV0VCS0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdT
KFdlYktpdExlZ2FjeSAtV25vLW92ZXJsb2FkZWQtdmlydHVhbCkKK2VuZGlmICgpCisKK2xpc3Qo
QVBQRU5EIFdlYktpdExlZ2FjeV9TT1VSQ0VTICR7V2ViS2l0TGVnYWN5X0lOQ0xVREVTfSAke1dl
YktpdExlZ2FjeV9TT1VSQ0VTX0NsYXNzZXN9ICR7V2ViS2l0TGVnYWN5X1NPVVJDRVNfV2ViQ29y
ZVN1cHBvcnR9KQorCitzb3VyY2VfZ3JvdXAoSW5jbHVkZXMgRklMRVMgJHtXZWJLaXRMZWdhY3lf
SU5DTFVERVN9KQorc291cmNlX2dyb3VwKENsYXNzZXMgRklMRVMgJHtXZWJLaXRMZWdhY3lfU09V
UkNFU19DbGFzc2VzfSkKK3NvdXJjZV9ncm91cChXZWJDb3JlU3VwcG9ydCBGSUxFUyAke1dlYktp
dExlZ2FjeV9TT1VSQ0VTX1dlYkNvcmVTdXBwb3J0fSkKKworIyBCdWlsZCB0aGUgQ09NIGludGVy
ZmFjZToKK21hY3JvKEdFTkVSQVRFX0lOVEVSRkFDRSBfaW5maWxlIF9kZWZpbmVzIF9kZXBlbmRz
KQorICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX2ZpbGV3ZSAke19pbmZpbGV9IE5BTUVfV0Up
CisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgICR7V2ViS2l0TGVnYWN5
X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvJHtfZmlsZXdlfS5oCisgICAgICAgIE1B
SU5fREVQRU5ERU5DWSAke19pbmZpbGV9CisgICAgICAgIERFUEVORFMgJHtfZGVwZW5kc30KKyAg
ICAgICAgQ09NTUFORCBtaWRsLmV4ZSAvSSAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dp
bi9JbnRlcmZhY2VzIiAvSSAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyIiAvSSAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
aW5jbHVkZSIgL0kgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93aW4iIC9XWCAvY2hhciBz
aWduZWQgL2VudiB3aW4zMiAvdGxiICIke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0v
JHtfZmlsZXdlfS50bGIiIC9vdXQgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9
L0ludGVyZmFjZXMiIC9oICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRl
cmZhY2VzLyR7X2ZpbGV3ZX0uaCIgL2lpZCAiJHtfZmlsZXdlfV9pLmMiICR7X2RlZmluZXN9ICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vJHtfaW5maWxlfSIKKyAgICAgICAgVVNFU19URVJN
SU5BTCBWRVJCQVRJTSkKKyAgICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy8ke19maWxld2V9LmggUFJPUEVS
VElFUyBHRU5FUkFURUQgVFJVRSkKKyAgICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtX
ZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy8ke19maWxld2V9X2ku
YyBQUk9QRVJUSUVTIEdFTkVSQVRFRCBUUlVFKQorZW5kbWFjcm8oKQorCitzZXQoTUlETF9ERUZJ
TkVTIC9EXCBcIl9fUFJPRFVDVElPTl9fPTAxXCIpCisKK3NldChXRUJLSVRMRUdBQ1lfSURMX0RF
UEVOREVOQ0lFUworICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGVDb21wYXJhYmxlLmlkbAor
ICAgIHdpbi9JbnRlcmZhY2VzL0RPTUNTUy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9ET01Db3Jl
LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0RPTUV2ZW50cy5pZGwKKyAgICB3aW4vSW50ZXJmYWNl
cy9ET01FeHRlbnNpb25zLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0RPTUhUTUwuaWRsCisgICAg
d2luL0ludGVyZmFjZXMvRE9NUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9ET01SYW5n
ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9ET01XaW5kb3cuaWRsCisgICAgd2luL0ludGVyZmFj
ZXMvSUdFTl9ET01PYmplY3QuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkFyY2hpdmUuaWRs
CisgICAgd2luL0ludGVyZmFjZXMvSVdlYkJhY2tGb3J3YXJkTGlzdC5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNl
cy9JV2ViQ2FjaGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkNvcmVTdGF0aXN0aWNzLmlk
bAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJEYXRhU291cmNlLmlkbAorICAgIHdpbi9JbnRlcmZh
Y2VzL0lXZWJEYXRhYmFzZU1hbmFnZXIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkRvY3Vt
ZW50LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJEb3dubG9hZC5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViRWRpdGluZ0RlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJF
bWJlZGRlZFZpZXcuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkVycm9yLmlkbAorICAgIHdp
bi9JbnRlcmZhY2VzL0lXZWJFcnJvclByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdl
YkZvcm1EZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWUuaWRsCisgICAg
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVWaWV3LmlkbAor
ICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmlkbAorICAg
IHdpbi9JbnRlcmZhY2VzL0lXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmlkbAorICAgIHdpbi9JbnRl
cmZhY2VzL0lXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJIVE1MUmVwcmVzZW50YXRpb24uaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkhUVFBVUkxS
ZXNwb25zZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeS5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9JV2ViSGlzdG9yeURlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJIaXN0b3J5SXRlbS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0ZW1Qcml2
YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5UHJpdmF0ZS5pZGwKKyAgICB3
aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJJ
bnNwZWN0b3JQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJLaXRTdGF0aXN0aWNzLmlkbAorICAg
IHdpbi9JbnRlcmZhY2VzL0lXZWJNdXRhYmxlVVJMUmVxdWVzdC5pZGwKKyAgICB3aW4vSW50ZXJm
YWNlcy9JV2ViTXV0YWJsZVVSTFJlcXVlc3RQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2Vz
L0lXZWJOYXZpZ2F0aW9uRGF0YS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViTm90aWZpY2F0
aW9uLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJOb3RpZmljYXRpb25DZW50ZXIuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyLmlkbAorICAgIHdpbi9J
bnRlcmZhY2VzL0lXZWJQb2xpY3lEZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2Vi
UG9saWN5RGVsZWdhdGVQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJl
bmNlcy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAor
ICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJSZXNvdXJjZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9J
V2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlJlc291
cmNlTG9hZERlbGVnYXRlUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViU2NyaXB0
T2JqZWN0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJTY3JpcHRXb3JsZC5pZGwKKyAgICB3
aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJTZXJpYWxp
emVkSlNWYWx1ZVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlRleHRSZW5kZXJl
ci5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVUlEZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViVUlEZWxlZ2F0ZTIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlVJRGVs
ZWdhdGVQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVxdWVzdC5pZGwKKyAg
ICB3aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVzcG9uc2UuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYlVSTFJlc3BvbnNlUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVW5kb01h
bmFnZXIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlVuZG9UYXJnZXQuaWRsCisgICAgd2lu
L0ludGVyZmFjZXMvSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5pZGwKKyAgICB3aW4vSW50ZXJm
YWNlcy9JV2ViVmlldy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRs
CisgICAgd2luL0ludGVyZmFjZXMvSVdlYldvcmtlcnNQcml2YXRlLmlkbAorICAgIHdpbi9JbnRl
cmZhY2VzL0phdmFTY3JpcHRDb3JlQVBJVHlwZXMuaWRsCisgICAgd2luL0ludGVyZmFjZXMvV2Vi
S2l0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL1dlYlNjcm9sbGJhclR5cGVzLmlkbAorCisgICAg
d2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTIuaWRsCisgICAgd2luL0ludGVy
ZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJfMi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9B
Y2Nlc3NpYmxlMi9BY2Nlc3NpYmxlQXBwbGljYXRpb24uaWRsCisgICAgd2luL0ludGVyZmFjZXMv
QWNjZXNzaWJsZTIvQWNjZXNzaWJsZUVkaXRhYmxlVGV4dC5pZGwKKyAgICB3aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsCisgICAgd2luL0ludGVyZmFjZXMv
QWNjZXNzaWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nl
c3NpYmxlMi9BY2Nlc3NpYmxlVGV4dC5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlVGV4dDIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvSUEy
Q29tbW9uVHlwZXMuaWRsCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9
L2luY2x1ZGUvYXV0b3ZlcnNpb24uaCIKKykKKworYWRkX2N1c3RvbV9jb21tYW5kKAorICAgIE9V
VFBVVCAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbmNsdWRlL2F1dG92ZXJz
aW9uLmgKKyAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX1NPVVJDRV9ESVJ9CisgICAgQ09N
TUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2Ny
aXB0cy9hdXRvLXZlcnNpb24ucGwgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0K
KyAgICBWRVJCQVRJTSkKKworR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL1dlYktp
dC5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVTfSIp
CitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJs
ZUFwcGxpY2F0aW9uLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBF
TkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlMi5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQ
RU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNzaWJs
ZTIvQWNjZXNzaWJsZTJfMi5pZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExf
REVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNz
aWJsZTIvQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VCS0lUTEVH
QUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlU3RhdGVzLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VC
S0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlMi9JQTJDb21tb25UeXBlcy5pZGwgJHtNSURMX0RFRklORVN9ICIk
e1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZBQ0Uod2lu
L0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUVkaXRhYmxlVGV4dC5pZGwgJHtNSURM
X0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9J
TlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVRleHQuaWRsICR7
TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lFU30iKQorR0VORVJB
VEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVUZXh0Mi5p
ZGwgJHtNSURMX0RFRklORVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVTfSIpCisK
K2FkZF9saWJyYXJ5KFdlYktpdExlZ2FjeUdVSUQgU1RBVElDCisgICAgIiR7V2ViS2l0TGVnYWN5
X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvV2ViS2l0LmgiCisgICAgIiR7V2ViS2l0
TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZUFwcGxpY2F0
aW9uLmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFj
ZXMvQWNjZXNzaWJsZTIuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMl8yLmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklW
RURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZVJlbGF0aW9uLmgiCisgICAgIiR7
V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZVN0
YXRlcy5oIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZh
Y2VzL0lBMkNvbW1vblR5cGVzLmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZUVkaXRhYmxlVGV4dC5oIgorICAgICIke1dlYktp
dExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVUZXh0Lmgi
CisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNj
ZXNzaWJsZVRleHQyLmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9
L0ludGVyZmFjZXMvV2ViS2l0X2kuYyIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQXBwbGljYXRpb25faS5jIgorICAgICIke1dl
YktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGUyX2ku
YyIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9B
Y2Nlc3NpYmxlMl8yX2kuYyIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlUmVsYXRpb25faS5jIgorICAgICIke1dlYktpdExlZ2Fj
eV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVFZGl0YWJsZVRleHRf
aS5jIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2Vz
L0FjY2Vzc2libGVUZXh0X2kuYyIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlVGV4dDJfaS5jIgorKQorc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKFdlYktpdExlZ2FjeUdVSUQgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSBXZWJLaXRHVUlE
JHtERUJVR19TVUZGSVh9KQorCitsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfTElCUkFSSUVTCisg
ICAgUFJJVkFURSBDb21jdGwzMgorICAgIFBSSVZBVEUgQ29tc3VwcAorICAgIFBSSVZBVEUgQ3J5
cHQzMgorICAgIFBSSVZBVEUgRDJkMQorICAgIFBSSVZBVEUgRHdyaXRlCisgICAgUFJJVkFURSBE
eGd1aWQKKyAgICBQUklWQVRFIElwaGxwYXBpCisgICAgUFJJVkFURSBQc2FwaQorICAgIFBSSVZB
VEUgUnBjcnQ0CisgICAgUFJJVkFURSBTaGx3YXBpCisgICAgUFJJVkFURSBVc3AxMAorICAgIFBS
SVZBVEUgVmVyc2lvbgorICAgIFBSSVZBVEUgV2ViS2l0R1VJRCR7REVCVUdfU1VGRklYfQorICAg
IFBSSVZBVEUgV2luZG93c0NvZGVjcworICAgIFBSSVZBVEUgV2lubW0KKykKKworc2V0KENNQUtF
X1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU30gL1NVQlNZ
U1RFTTpXSU5ET1dTIikKK3NldChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9M
SU5LRVJfRkxBR1N9IC9TVUJTWVNURU06V0lORE9XUyIpCisKKyMgV2UgbmVlZCB0aGUgd2Via2l0
IGxpYnJhcmllcyB0byBjb21lIGJlZm9yZSB0aGUgc3lzdGVtIGRlZmF1bHQgbGlicmFyaWVzIHRv
IHByZXZlbnQgc3ltYm9sIGNvbmZsaWN0cyB3aXRoIHV1aWQubGliLgorIyBUbyBkbyB0aGlzIHdl
IGFkZCBzeXN0ZW0gZGVmYXVsdCBsaWJzIGFzIHdlYmtpdCBsaWJzIGFuZCB6ZXJvIG91dCBzeXN0
ZW0gZGVmYXVsdCBsaWJzLgorc3RyaW5nKFJFUExBQ0UgIiAiICJcOyIgQ1hYX0xJQlMgJHtDTUFL
RV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTfSkKK2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9MSUJS
QVJJRVMgJHtDWFhfTElCU30pCitzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEX0xJQlJBUklFUyAiIikK
Kworc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9G
TEFHU30gJHtNU1ZDX1JVTlRJTUVfTElOS0VSX0ZMQUdTfSIpCisKKyMgSWYgdGhpcyBkaXJlY3Rv
cnkgaXNuJ3QgY3JlYXRlZCBiZWZvcmUgbWlkbCBydW5zIGFuZCBhdHRlbXB0cyB0byBvdXRwdXQg
V2ViS2l0LnRsYiwKKyMgSXQgZmFpbHMgd2l0aCBhbiB1bnVzdWFsIGVycm9yIC0gbWlkbCBmYWls
ZWQgLSBmYWlsZWQgdG8gc2F2ZSBhbGwgY2hhbmdlcworZmlsZShNQUtFX0RJUkVDVE9SWSAke0NN
QUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0pCitmaWxlKE1BS0VfRElSRUNUT1JZICR7V2Vi
S2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMpCisKK3NldChXZWJLaXRM
ZWdhY3lfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCisgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi5oCisgICAgJHtXZWJLaXRMZWdh
Y3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMl8yLmgKKyAgICAk
e1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVB
cHBsaWNhdGlvbi5oCisgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0LmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVSZWxhdGlvbi5oCisgICAgJHtX
ZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlU3Rh
dGVzLmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2Vz
L0FjY2Vzc2libGVUZXh0LmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9JbnRlcmZhY2VzL0FjY2Vzc2libGVUZXh0Mi5oCisgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9JQTJDb21tb25UeXBlcy5oCisgICAgJHtXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9XZWJLaXQuaAorCisgICAgd2lu
L0FjY2Vzc2libGVCYXNlLmgKKyAgICB3aW4vQWNjZXNzaWJsZURvY3VtZW50LmgKKyAgICB3aW4v
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaAorICAgIHdpbi9XZWJEYXRhU291cmNlLmgKKyAgICB3
aW4vV2ViRnJhbWUuaAorICAgIHdpbi9XZWJLaXRDT01BUEkuaAorKQorCitXRUJLSVRfTUFLRV9G
T1JXQVJESU5HX0hFQURFUlMoV2ViS2l0TGVnYWN5R1VJRAorICAgIFRBUkdFVF9OQU1FIFdlYktp
dExlZ2FjeUZyYW1ld29ya0hlYWRlcnMKKyAgICBERVNUSU5BVElPTiAke1dlYktpdExlZ2FjeV9G
UkFNRVdPUktfSEVBREVSU19ESVJ9L1dlYktpdExlZ2FjeQorICAgIEZJTEVTICR7V2ViS2l0TGVn
YWN5X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSU30KKyAgICBGTEFUVEVORUQKKykKK2FkZF9kZXBl
bmRlbmNpZXMoV2ViS2l0TGVnYWN5RnJhbWV3b3JrSGVhZGVycyBXZWJDb3JlUHJpdmF0ZUZyYW1l
d29ya0hlYWRlcnMpCisKK3NldChXZWJLaXRMZWdhY3lfT1VUUFVUX05BTUUKKyAgICBXZWJLaXQk
e0RFQlVHX1NVRkZJWH0KKykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFu
ZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU0MDgyNTUwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6Omdl
dF9sb2NhbGUpOgorICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRDRlR5cGVUb1ZhcmlhbnQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oOgorICAgICAgICAqIENPTVByb3Bl
cnR5QmFnLmg6CisgICAgICAgIChIYXNoVHlwZT46OlJlYWQpOgorICAgICAgICAoSGFzaFR5cGU+
OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6Cisg
ICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQXJjaGl2
ZS5oOgorICAgICAgICAqIFdlYkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5j
cHA6CisgICAgICAgICogV2ViS2l0Q09NQVBJLmNwcDoKKyAgICAgICAgKiBXZWJLaXRDT01BUEku
aDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYktpdFByZWZpeC5oOgor
ICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6CisgICAgICAgICogV2ViTG9jYWxp
emFibGVTdHJpbmdzLmg6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxOS0wNy0y
OCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luXVtXSzFdIENhbid0IGNoYW5nZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIGhlaWdodCBpbiBo
aWdoIERQSQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNw
cAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJs
ZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDExIEBAIEhSRVNVTFQgQWNj
ZXNzaWJsZUJhc2U6OmdldF9sb2NhbGUoX091dF8KICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCisjaWYgVVNFKENGKQogICAgIGxvY2FsZS0+bGFuZ3VhZ2UgPSBC
U3RyaW5nKG1fb2JqZWN0LT5sYW5ndWFnZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpLnJlbGVh
c2UoKTsKKyNlbHNlCisgICAgbG9jYWxlLT5sYW5ndWFnZSA9IEJTdHJpbmcobV9vYmplY3QtPmxh
bmd1YWdlKCkpLnJlbGVhc2UoKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYg
KzQ4LDcgQEAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3RpbwogICAgIHJl
dHVybiBuZXcgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc7CiB9CiAKKyNpZiBVU0UoQ0YpCiB2b2lk
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpzZXREaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKIHsKICAgICBtX2RpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5OwpAQCAt
NTcsNiArNTgsNyBAQCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIENGRGljdGlvbmFyeVByb3BlCiB7
CiAgICAgcmV0dXJuIG1fZGljdGlvbmFyeS5nZXQoKTsKIH0KKyNlbmRpZgogCiAvLyBJVW5rbm93
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKQEAgLTk2LDYgKzk4LDcgQEAgVUxPTkcgQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlbGVhc2UoKQogCiBzdGF0aWMgYm9vbCBDb252ZXJ0Q0ZUeXBlVG9WYXJpYW50KFZB
UklBTlQqIHBWYXIsIHZvaWQqIGNmT2JqKQogeworI2lmIFVTRShDRikKICAgICBpZiAoIWNmT2Jq
KSB7CiAgICAgICAgIFZfVlQocFZhcikgPSBWVF9OVUxMOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEyMSw5ICsxMjQsMTEgQEAgc3RhdGljIGJvb2wgQ29udmVydENGVHlwZVRvVmFyaWFudChW
QVJJQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCisjaWYgVVNFKENGKQogc3RhdGljIGJvb2wgQ29udmVydFZhcmlhbnRUb0NG
VHlwZShWQVJJQU5UKiBwVmFyLCB2b2lkKiogY2ZPYmopCiB7CiAgICAgaWYgKFZfVlQocFZhcikg
PT0gVlRfTlVMTCkgewpAQCAtMTUzLDExICsxNTgsMTMgQEAgc3RhdGljIGJvb2wgQ29udmVydFZh
cmlhbnRUb0NGVHlwZShWQVJJQQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisjZW5kaWYK
IAogSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJv
cE5hbWUsIFZBUklBTlQgKnBWYXIsIElFcnJvckxvZyAqIC8qcEVycm9yTG9nKi8pCiB7CiAgICAg
aWYgKCFwc3pQcm9wTmFtZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyNpZiBVU0UoQ0Yp
CiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lkKiB2YWx1ZTsKICAgICAgICAg
Q0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5n
UmVmKHBzelByb3BOYW1lKTsKQEAgLTE3MCw2ICsxNzcsNyBAQCBIUkVTVUxUIENGRGljdGlvbmFy
eVByb3BlcnR5QmFnOjpSZWFkKExQCiAgICAgICAgIENGUmVsZWFzZShrZXkpOwogICAgICAgICBy
ZXR1cm4gaHI7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIEVfRkFJTDsKIH0KICAgICAgICAg
CkBAIC0xNzcsNiArMTg1LDcgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3Jp
dGUoXwogewogICAgIGlmICghcHN6UHJvcE5hbWUgfHwgIXBWYXIpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisjaWYgVVNFKENGKQogICAgIGlmICghbV9kaWN0aW9uYXJ5KSB7CiAgICAgICAg
IG1fZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CiAgICAgfQpAQCAtMTg5LDUgKzE5OCw2IEBAIEhSRVNVTFQgQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWc6OldyaXRlKF8KICAgICAgICAgQ0ZSZWxlYXNlKGNmT2JqKTsKICAgICAgICAg
cmV0dXJuIFNfT0s7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIEVfRkFJTDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
aAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQgKzIzLDE1
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIENGRGljdGlvbmFyeVByb3BlcnR5
QmFnX2gKLSNkZWZpbmUgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWdfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVTRShDRikKIHR5cGVkZWYgc3RydWN0IF9fQ0ZE
aWN0aW9uYXJ5KiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmOworI2VuZGlmCiAKIGNsYXNzIENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnIDogcHVibGljIElQcm9wZXJ0eUJhZyB7CiBwdWJsaWM6CkBAIC00
MCw4ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uo
KTsKIAorI2lmIFVTRShDRikKICAgICB2b2lkIHNldERpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KTsKICAgICBXRUJLSVRfQVBJIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgZGljdGlvbmFyeSgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWcoKTsKQEAgLTUzLDggKzU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZB
UklBTlQqLCBJRXJyb3JMb2cqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV3JpdGUoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsIF9Jbl8gIFZBUklBTlQqKTsKIAor
I2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gbV9kaWN0
aW9uYXJ5OworI2VuZGlmCiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07Ci0KLSNlbmRp
ZiAvLyBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZ19oCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NPTVByb3BlcnR5QmFnLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMiArMTM5
LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJvcGVydHlCYWcKICAgICBpZiAo
aXQgPT0gZW5kKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwogCisjaWYgVVNFKENGKQog
ICAgIFZBUlRZUEUgcmVxdWVzdGVkVHlwZSA9IFZfVlQocFZhcik7CiAgICAgVl9WVChwVmFyKSA9
IFZUX0VNUFRZOwogICAgIENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVUeXBlPjo6c2V0VmFyaWFudChw
VmFyLCBpdC0+dmFsdWUpOwogCiAgICAgaWYgKHJlcXVlc3RlZFR5cGUgIT0gQ09NVmFyaWFudFNl
dHRlcjxWYWx1ZVR5cGU+Ojp2YXJpYW50VHlwZShpdC0+dmFsdWUpICYmIHJlcXVlc3RlZFR5cGUg
IT0gVlRfRU1QVFkpCiAgICAgICAgIHJldHVybiA6OlZhcmlhbnRDaGFuZ2VUeXBlKHBWYXIsIHBW
YXIsIFZBUklBTlRfTk9VU0VST1ZFUlJJREUgfCBWQVJJQU5UX0FMUEhBQk9PTCwgcmVxdWVzdGVk
VHlwZSk7CisjZWxzZQorICAgIEFTU0VSVCgwKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIFNfT0s7
CiB9CkBAIC0yMDEsNiArMjA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9w
ZXJ0eUJhZwogICAgIGlmIChtX2hhc2hNYXAuc2l6ZSgpIDw9IGlQcm9wZXJ0eSkKICAgICAgICAg
cmV0dXJuIEVfSU5WQUxJREFSRzsKIAorI2lmIFVTRShDRikKICAgICAqcGNQcm9wZXJ0aWVzID0g
MDsKICAgICBhdXRvIGN1cnJlbnQgPSBtX2hhc2hNYXAuYmVnaW4oKTsKICAgICBhdXRvIGVuZCA9
IG1faGFzaE1hcC5lbmQoKTsKQEAgLTIyMCw2ICsyMjUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIENPTVByb3BlcnR5QmFnCiAgICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJO
YW1lLCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgY3VycmVudC0+a2V5LndpZGVDaGFyYWN0ZXJz
KCkuZGF0YSgpKTsKICAgICAgICAgKysqcGNQcm9wZXJ0aWVzOwogICAgIH0KKyNlbmRpZgogICAg
IHJldHVybiBTX09LOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFs
bGluZ0hlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkg
KzM1LDEzIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKENGKQorCiBD
RkFycmF5Q2FsbEJhY2tzIE1hcnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duQXJyYXlDYWxsQmFj
a3MgPSB7MCwgSVVua25vd25SZXRhaW5DYWxsYmFjaywgSVVua25vd25SZWxlYXNlQ2FsbGJhY2ss
IDAsIDB9OwogQ0ZEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MgTWFyc2hhbGxpbmdIZWxwZXJzOjpr
SVVua25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MgPSB7MCwgSVVua25vd25SZXRhaW5DYWxs
YmFjaywgSVVua25vd25SZWxlYXNlQ2FsbGJhY2ssIDAsIDB9OwogCisjZW5kaWYKKwogVVJMIE1h
cnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTChCU1RSIHVybFN0cikKIHsKICAgICByZXR1cm4g
VVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNTdHJpbmdMZW4odXJsU3RyKSkpOwpAQCAtNDgs
NiArNTIsNyBAQCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0CiAgICAg
cmV0dXJuIEJTdHJpbmcodXJsLnN0cmluZygpKS5yZWxlYXNlKCk7CiB9CiAKKyNpZiBVU0UoQ0Yp
CiBDRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICByZXR1cm4gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsIGZhbHNlKTsKQEAgLTk5LDcgKzEwNCw5IEBAIENGTnVtYmVyUmVmIE1hcnNoYWxs
aW5nSGVscGVyczo6aW50VG9DRk4KIHsKICAgICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NG
TnVtYmVyU0ludDMyVHlwZSwgJm51bSk7CiB9CisjZW5kaWYKIAorI2lmIFVTRShDRikKIENGQWJz
b2x1dGVUaW1lIE1hcnNoYWxsaW5nSGVscGVyczo6d2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkK
IHsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lID0g
MDsKQEAgLTEwOSw4ICsxMTYsMzQgQEAgQ0ZBYnNvbHV0ZVRpbWUgTWFyc2hhbGxpbmdIZWxwZXJz
Ojp3aW5kbwogICAgIH0KICAgICByZXR1cm4gd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lOwogfQor
I2Vsc2UKK2RvdWJsZSBNYXJzaGFsbGluZ0hlbHBlcnM6OndpbmRvd3NFcG9jaEFic29sdXRlVGlt
ZSgpCit7CisgICAgc3RhdGljIGRvdWJsZSB3aW5kb3dzRXBvY2hBYnNvbHV0ZVRpbWUgPSAwOwor
ICAgIGlmICghd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKSB7CisgICAgICAgIFNZU1RFTVRJTUUg
d2luZG93c0Vwb2NoRGF0ZSA9IHsgfTsKKyAgICAgICAgd2luZG93c0Vwb2NoRGF0ZS53WWVhciA9
IDE4OTk7CisgICAgICAgIHdpbmRvd3NFcG9jaERhdGUud01vbnRoID0gMTI7CisgICAgICAgIHdp
bmRvd3NFcG9jaERhdGUud0RheSA9IDMwOworCisgICAgICAgIEZJTEVUSU1FIGFic29sdXRlRmls
ZVRpbWU7CisgICAgICAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZ3aW5kb3dzRXBvY2hEYXRlLCAm
YWJzb2x1dGVGaWxlVGltZSk7CisKKyAgICAgICAgVUxBUkdFX0lOVEVHRVIgdGltZVZhbHVlOwor
ICAgICAgICB0aW1lVmFsdWUuTG93UGFydCA9IGFic29sdXRlRmlsZVRpbWUuZHdMb3dEYXRlVGlt
ZTsKKyAgICAgICAgdGltZVZhbHVlLkhpZ2hQYXJ0ID0gYWJzb2x1dGVGaWxlVGltZS5kd0hpZ2hE
YXRlVGltZTsKKworICAgICAgICB3aW5kb3dzRXBvY2hBYnNvbHV0ZVRpbWUgPSB0aW1lVmFsdWUu
UXVhZFBhcnQ7CisgICAgfQorICAgIHJldHVybiB3aW5kb3dzRXBvY2hBYnNvbHV0ZVRpbWU7Cit9
CisjZW5kaWYKIAorI2lmIFVTRShDRikKIENGQWJzb2x1dGVUaW1lIE1hcnNoYWxsaW5nSGVscGVy
czo6REFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSBkYXRlKQorI2Vsc2UKK2RvdWJsZSBNYXJzaGFs
bGluZ0hlbHBlcnM6OkRBVEVUb0Fic29sdXRlVGltZShEQVRFIGRhdGUpCisjZW5kaWYKIHsKICAg
ICAvLyA8aHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczIyMTYyNy5h
c3B4PgogICAgIC8vIERBVEU6IFRoaXMgaXMgdGhlIHNhbWUgbnVtYmVyaW5nIHN5c3RlbSB1c2Vk
IGJ5IG1vc3Qgc3ByZWFkc2hlZXQgcHJvZ3JhbXMsCkBAIC0xMjksMTEgKzE2MiwxNiBAQCBDRkFi
c29sdXRlVGltZSBNYXJzaGFsbGluZ0hlbHBlcnM6OkRBVEVUCiAgICAgcmV0dXJuIHJvdW5kKChk
YXRlICsgd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkpICogc2Vjb25kc1BlckRheSk7CiB9CiAK
KyNpZiBVU0UoQ0YpCiBEQVRFIE1hcnNoYWxsaW5nSGVscGVyczo6Q0ZBYnNvbHV0ZVRpbWVUb0RB
VEUoQ0ZBYnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lKQorI2Vsc2UKK0RBVEUgTWFyc2hhbGxpbmdI
ZWxwZXJzOjphYnNvbHV0ZVRpbWVUb0RBVEUoZG91YmxlIGFic29sdXRlVGltZSkKKyNlbmRpZgog
ewogICAgIHJldHVybiAocm91bmQoYWJzb2x1dGVUaW1lKS9zZWNvbmRzUGVyRGF5IC0gd2luZG93
c0Vwb2NoQWJzb2x1dGVUaW1lKCkpOwogfQogCisjaWYgVVNFKENGKQogLy8gdXRpbGl0eSBtZXRo
b2QgdG8gc3RvcmUgYSAxLWRpbSBzdHJpbmcgdmVjdG9yIGludG8gYSBuZXdseSBjcmVhdGVkIFNB
RkVBUlJBWQogU0FGRUFSUkFZKiBNYXJzaGFsbGluZ0hlbHBlcnM6OnN0cmluZ0FycmF5VG9TYWZl
QXJyYXkoQ0ZBcnJheVJlZiBpbkFycmF5KQogewpAQCAtMTYzLDYgKzIwMSw3IEBAIFNBRkVBUlJB
WSogTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRBcnJheVQKICAgICB9CiAgICAgcmV0dXJuIHNhOwog
fQorI2VuZGlmCiAKIFNBRkVBUlJBWSogTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRSZWN0VG9TYWZl
QXJyYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKQEAgLTE4OSw2ICsyMjgsOCBA
QCBTQUZFQVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aW50UmVjdFRvCiAgICAgcmV0dXJuIHNh
OwogfQogCisjaWYgVVNFKENGKQorCiAvLyB1dGlsaXR5IG1ldGhvZCB0byBzdG9yZSBhIDEtZGlt
IElVbmtub3duKiB2ZWN0b3IgaW50byBhIG5ld2x5IGNyZWF0ZWQgU0FGRUFSUkFZCiBTQUZFQVJS
QVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aXVua25vd25BcnJheVRvU2FmZUFycmF5KENGQXJyYXlS
ZWYgaW5BcnJheSkKIHsKQEAgLTI2NywzICszMDgsNSBAQCB2b2lkIE1hcnNoYWxsaW5nSGVscGVy
czo6SVVua25vd25SZWxlYXNlCiB7CiAgICAgKChJVW5rbm93biopIHZhbHVlKS0+UmVsZWFzZSgp
OwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxs
aW5nSGVscGVycy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEzIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1hcnNoYWxsaW5nSGVscGVyc19ICi0j
ZGVmaW5lIE1hcnNoYWxsaW5nSGVscGVyc19ICisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKKyNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRS
ZWN0OwpAQCAtMzgsNiArNDAsOCBAQCBjbGFzcyBNYXJzaGFsbGluZ0hlbHBlcnMKIHB1YmxpYzoK
ICAgICBzdGF0aWMgVVJMIEJTVFJUb0tVUkwoQlNUUik7CiAgICAgc3RhdGljIEJTVFIgVVJMVG9C
U1RSKGNvbnN0IFVSTCYpOworCisjaWYgVVNFKENGKQogICAgIHN0YXRpYyBDRlVSTFJlZiBQYXRo
U3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJMUmVmIGZpbGVVUkwpOwogICAg
IHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJlZihCU1RSKTsKQEAgLTUwLDcgKzU0LDE0IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRlVGltZVRvREFURShDRkFic29sdXRl
VGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5nQXJyYXlUb1NhZmVBcnJheShDRkFy
cmF5UmVmKTsKICAgICBzdGF0aWMgU0FGRUFSUkFZKiBpbnRBcnJheVRvU2FmZUFycmF5KENGQXJy
YXlSZWYpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91YmxlIERBVEVUb0Fic29sdXRlVGltZShEQVRF
KTsKKyAgICBzdGF0aWMgREFURSBhYnNvbHV0ZVRpbWVUb0RBVEUoZG91YmxlKTsKKyNlbmRpZgor
CiAgICAgc3RhdGljIFNBRkVBUlJBWSogaW50UmVjdFRvU2FmZUFycmF5KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKworI2lmIFVTRShDRikKICAgICBzdGF0aWMgU0FGRUFSUkFZKiBpdW5rbm93
bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7CiAgICAgc3RhdGljIENGQXJyYXlSZWYgc2Fm
ZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKICAgICBzdGF0aWMgQ0ZBcnJheVJlZiBz
YWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOwpAQCAtNTksMTMgKzcwLDE2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VDYWxsYmFjayhDRkFsbG9jYXRvclJl
ZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5Q2FsbEJhY2tzIGtJVW5rbm93bkFy
cmF5Q2FsbEJhY2tzOwogICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyBrSVVu
a25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3M7CisjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBV
U0UoQ0YpCiAgICAgc3RhdGljIENGQWJzb2x1dGVUaW1lIHdpbmRvd3NFcG9jaEFic29sdXRlVGlt
ZSgpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91YmxlIHdpbmRvd3NFcG9jaEFic29sdXRlVGltZSgp
OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgTWFyc2hhbGxpbmdIZWxwZXJzKCk7CiAgICAgfk1h
cnNoYWxsaW5nSGVscGVycygpOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMjQ4NDAxKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDcgKzQwLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
KyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRz
S2V5ID0gQ0ZTVFIoIldlYktpdExvY2FsQ2FjaGUiKTsKKyNlbmRpZgogCiAvLyBXZWJBcHBsaWNh
dGlvbkNhY2hlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xODksNiArMTkxLDcgQEAgSFJFU1VM
VCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aAogCiAgICAgYXV0byBjb3JlT3JpZ2lu
cyA9IHN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hlKCk7CiAKKyNpZiBVU0UoQ0YpCiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheUl0ZW0gPSBhZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvcmVPcmlnaW5zLnNpemUoKSwgJk1hcnNo
YWxsaW5nSGVscGVyczo6a0lVbmtub3duQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIGZvciAoYXV0
byYgY29yZU9yaWdpbiA6IGNvcmVPcmlnaW5zKQpAQCAtMjAzLDYgKzIwNiw3IEBAIEhSRVNVTFQg
V2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dpdGgKICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0
YW5jZSgpOwogICAgIHJlc3VsdC0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKICAg
ICAqb3JpZ2lucyA9IHJlc3VsdC5sZWFrUmVmKCk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09L
OwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9u
IDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMu
aCIKICNpbmNsdWRlICJNZW1vcnlTdHJlYW0uaCIKKworI2lmIFVTRShDRikKICNpbmNsdWRlIDxX
ZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMzYsOSArMzksMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdl
YkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkKIHsKKyNpZiBVU0UoQ0YpCiAg
ICAgV2ViQXJjaGl2ZSogaW5zdGFuY2UgPSBuZXcgV2ViQXJjaGl2ZSgwKTsKICAgICBpbnN0YW5j
ZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOworI2Vsc2UKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZgogfQogCiBXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKQEAgLTUwLDcgKzU3LDkg
QEAgV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3JlYXRlSW5zdGFuY2UoUgogfQogCiBXZWJBcmNo
aXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQor
I2lmIFVTRShDRikKICAgICA6IG1fYXJjaGl2ZShXVEZNb3ZlKGNvcmVBcmNoaXZlKSkKKyNlbmRp
ZgogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJB
cmNoaXZlIik7CkBAIC0xMTMsOCArMTIyLDEwIEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6aW5pdFdp
dGhOb2RlKF9Jbl9vcHQKICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgIHJldHVybiBFX05PSU5U
RVJGQUNFOwogCisjaWYgVVNFKENGKQogICAgIG1fYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZSgqZG9tTm9kZS0+bm9kZSgpKTsKLSAgICAKKyNlbmRpZgorCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTE0Nyw2ICsxNTgsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NP
TV9PdXRwdHJfb3B0CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKKyNpZiBVU0UoQ0YpCiAgICAgKnN0cmVhbSA9IG51bGxwdHI7CiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICAg
ICBpZiAoIWNmRGF0YSkKQEAgLTE1NSw0ICsxNjcsOCBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRh
dGEoX0NPTV9PdXRwdHJfb3B0CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEu
Z2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1v
dmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShz
dHJlYW0pOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBcmNoaXZlLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsOSBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OworI2lmIFVT
RShDRikKICAgICBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4gbV9hcmNoaXZlOwor
I2VuZGlmCiB9OwogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBI
UkVTVUxUIFdlYkNhY2hlOjpzdGF0aXN0aWNzKF9Jbm91dF8gaW50CiAKICAgICBXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0ID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKIAorI2lmIFVTRShDRikKICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgaW1hZ2VzS2V5ID0gQ0ZTVFIoImltYWdlcyIpOwogICAgIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBzdHlsZXNoZWV0c0tleSA9IENGU1RSKCJzdHlsZSBzaGVldHMiKTsKICAgICBzdGF0aWMgQ0ZT
dHJpbmdSZWYgeHNsS2V5ID0gQ0ZTVFIoInhzbCIpOwpAQCAtMjA5LDYgKzIxMCw5IEBAIEhSRVNV
TFQgV2ViQ2FjaGU6OnN0YXRpc3RpY3MoX0lub3V0XyBpbnQKICAgICBzWzNdID0gcHJvcEJhZy5s
ZWFrUmVmKCk7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgcmV0dXJuIEVfRkFJTDsK
KyNlbmRpZgogfQogCiBIUkVTVUxUIFdlYkNhY2hlOjplbXB0eSgpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0ODQw
MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgV2ViRGF0YWJhc2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IENGU1RSKCJXZWJEYXRhYmFzZURpcmVjdG9yeSIpOworI2VuZGlmCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0VxdWFsKExQQ1dTVFIgczEsIExQQ1dTVFIgczIpCiB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAkocmV2aXNpb24gMjQ4NDAxKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJ
bgogICAgIFZlY3RvcjxDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiwgMT4gYXJyYXlJdGVtOwogICAg
IGFycmF5SXRlbS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheUl0ZW1baV0gPSBkYXRhW2ldOwor
ICAgICAgICBhcnJheUl0ZW0udW5jaGVja2VkQXBwZW5kKGRhdGFbaV0pOwogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxDT01QdHI8SVdlYkhpc3RvcnlJdGVtPj4+IGRpY3Rpb25hcnk7CiAg
ICAgU3RyaW5nIGtleShub3RpZmljYXRpb25TdHIsIDo6U3lzU3RyaW5nTGVuKG5vdGlmaWNhdGlv
blN0cikpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMyArODcsMTYgQEAgV2ViSGlzdG9yeUl0
ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbgogCiAvLyBJV2ViSGlzdG9yeUl0ZW1Qcml2YXRl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
KyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgdXJsS2V5ID0gQ0ZTVFIoIiIpOwogc3Rh
dGljIENGU3RyaW5nUmVmIHRpdGxlS2V5ID0gQ0ZTVFIoInRpdGxlIik7CiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSA9IENGU1RSKCJsYXN0VmlzaXRXYXNGYWlsdXJl
Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcmVkaXJlY3RVUkxzS2V5ID0gQ0ZTVFIoInJlZGlyZWN0
VVJMcyIpOworI2VuZGlmCiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlv
bmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hcnkpCiB7CisjaWYgVVNF
KENGKQogICAgIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVmID0gKENGRGljdGlvbmFyeVJl
ZikgZGljdGlvbmFyeTsKIAogICAgIENGU3RyaW5nUmVmIHVybFN0cmluZ1JlZiA9IChDRlN0cmlu
Z1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeVJlZiwgdXJsS2V5KTsKQEAgLTEy
NSwxMCArMTI4LDE0IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmEK
ICAgICAgICAgbV9oaXN0b3J5SXRlbS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKIAog
ICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfX2Rl
cmVmX291dF9vcHQgdm9pZCoqIGRpY3Rpb25hcnkpCiB7CisjaWYgVVNFKENGKQogICAgIENGRGlj
dGlvbmFyeVJlZiogZGljdGlvbmFyeVJlZiA9IChDRkRpY3Rpb25hcnlSZWYqKSBkaWN0aW9uYXJ5
OwogCiAgICAgc2l6ZV90IGtleUNvdW50ID0gMDsKQEAgLTE1OSw2ICsxNjYsOSBAQCBIUkVTVUxU
IFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzCiAgICAgICAgIENGUmVsZWFzZSh2YWx1
ZXNbaV0pOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIHJldHVybiBFX05PVElNUEw7
CisjZW5kaWYKIH0KIAogSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aGFzVVJMU3RyaW5nKF9PdXRf
IEJPT0wqIGhhc1VSTCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENPTUFQ
SS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJ
LmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
Q09NQVBJLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsOSBAQCBIUkVTVUxUIFdlYktp
dENyZWF0ZUluc3RhbmNlKFJFRkNMU0lEIHJjCiAgICAgcmV0dXJuIGZhY3RvcnktPkNyZWF0ZUlu
c3RhbmNlKHBVbmtPdXRlciwgcmlpZCwgcHB2T2JqZWN0KTsKIH0KIAorI2lmIFVTRShDRikKIENG
QnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OndlYktpdEJ1
bmRsZSgpOwogfQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRD
T01BUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDT01B
UEkuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
Q09NQVBJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEwIEBAIGV4dGVybiAiQyIgewog
Ly8gVGhpcyBieXBhc3NlcyBDb0NyZWF0ZUluc3RhbmNlIGVudGlyZWx5LCBzbyByZWdpc3RyeSBr
ZXlzIGFuZCBpc29sYXRlZCBDT00gbWFuaWZlc3RzIGFyZW4ndCBuZWVkZWQuCiBIUkVTVUxUIFdF
QktJVF9BUEkgV2ViS2l0Q3JlYXRlSW5zdGFuY2UoUkVGQ0xTSUQsIElVbmtub3duKiBwVW5rT3V0
ZXIsIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwogCisjaWYgVVNFKENG
KQogdHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRsZSogQ0ZCdW5kbGVSZWY7CiBDRkJ1bmRsZVJlZiBX
RUJLSVRfQVBJIHdlYktpdEJ1bmRsZSgpOworI2VuZGlmCiAKIH0KIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3
LDkgQEAgdHlwZWRlZiBKU0NsYXNzUmVmICgqSlNDbGFzc0NyZWF0ZUZ1bmN0aQogdHlwZWRlZiB2
b2lkKiAoKkpTT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uKShKU09iamVjdFJlZik7CiB0eXBlZGVm
IEpTT2JqZWN0UmVmICgqSlNPYmplY3RNYWtlRnVuY3Rpb25TdHViKShKU0NvbnRleHRSZWYsIEpT
Q2xhc3NSZWYsIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCAoKkpTT2JqZWN0U2V0UHJvcGVydHlGdW5j
dGlvbikoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlUmVmLCBKU1Byb3BlcnR5QXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKKyNpZiBVU0UoQ0YpCiB0eXBlZGVmIEpTU3RyaW5nUmVmICgqSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmdGdW5jdGlvbikoQ0ZTdHJpbmdSZWYpOworI2VuZGlmCiB0eXBlZGVmIEpTU3RyaW5n
UmVmICgqSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmdGdW5jdGlvbikoY29uc3QgY2hhciop
OwogdHlwZWRlZiBjb25zdCBKU0NoYXIqICgqSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyRnVuY3Rp
b24pKEpTU3RyaW5nUmVmKTsKIHR5cGVkZWYgc2l6ZV90ICgqSlNTdHJpbmdHZXRMZW5ndGhGdW5j
dGlvbikoSlNTdHJpbmdSZWYpOwpAQCAtMjYyLDcgKzI2NCw5IEBAIEpTQ2xhc3NDcmVhdGVGdW5j
dGlvbiBtX2pzQ2xhc3NDcmVhdGVGdW4KIEpTT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uIG1fanNP
YmplY3RHZXRQcml2YXRlRnVuY3Rpb24gPSBudWxscHRyOwogSlNPYmplY3RNYWtlRnVuY3Rpb25T
dHViIG1fanNPYmplY3RNYWtlRnVuY3Rpb24gPSBudWxscHRyOwogSlNPYmplY3RTZXRQcm9wZXJ0
eUZ1bmN0aW9uIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uID0gbnVsbHB0cjsKKyNpZiBV
U0UoQ0YpCiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uIG1fanNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmdGdW5jdGlvbiA9IG51bGxwdHI7CisjZW5kaWYKIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nRnVuY3Rpb24gbV9qc1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1
bmN0aW9uID0gbnVsbHB0cjsKIEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0ckZ1bmN0aW9uIG1fanNT
dHJpbmdHZXRDaGFyYWN0ZXJzUHRyRnVuY3Rpb24gPSBudWxscHRyOwogSlNTdHJpbmdHZXRMZW5n
dGhGdW5jdGlvbiBtX2pzU3RyaW5nR2V0TGVuZ3RoRnVuY3Rpb24gPSBudWxscHRyOwpAQCAtMjg2
LDcgKzI5MCw5IEBAIHZvaWQgYmluZEphdmFTY3JpcHRUcmFtcG9saW5lKCkKICAgICBtX2pzT2Jq
ZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU09iamVjdEdldFByaXZh
dGVGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNPYmplY3RHZXRQcml2YXRl
IikpOwogICAgIG1fanNPYmplY3RNYWtlRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEpTT2Jq
ZWN0TWFrZUZ1bmN0aW9uU3R1Yj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNPYmplY3RN
YWtlIikpOwogICAgIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uID0gcmVpbnRlcnByZXRf
Y2FzdDxKU09iamVjdFNldFByb3BlcnR5RnVuY3Rpb24+KDo6R2V0UHJvY0FkZHJlc3MobGlicmFy
eSwgIkpTT2JqZWN0U2V0UHJvcGVydHkiKSk7OworI2lmIFVTRShDRikKICAgICBtX2pzU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nRnVuY3Rpb24+KDo6R2V0UHJvY0FkZHJlc3MobGlicmFyeSwgIkpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nIikpOworI2VuZGlmCiAgICAgbV9qc1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZ0Z1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZ0Z1bmN0aW9uPig6OkdldFByb2NBZGRyZXNzKGxpYnJhcnksICJKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyIpKTsKICAgICBtX2pzU3RyaW5nR2V0Q2hhcmFjdGVyc1B0
ckZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU1N0cmluZ0dldENoYXJhY3RlcnNQdHJGdW5j
dGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRy
IikpOwogICAgIG1fanNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNT
dHJpbmdHZXRMZW5ndGgiKSk7CkBAIC0zMjksMTIgKzMzNSwxNCBAQCBXRUJLSVRfQVBJIHZvaWQg
SlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvCiAgICAgICAgIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1
bmN0aW9uKGN0eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBleGNl
cHRpb24pOwogfQogCisjaWYgVVNFKENGKQogV0VCS0lUX0FQSSBKU1N0cmluZ1JlZiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBpZiAobV9qc1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uKQogICAgICAgICByZXR1cm4gbV9qc1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uKHZhbHVlKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KKyNlbmRpZgogCiBXRUJLSVRfQVBJIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGNvbnN0IGNoYXIqIHZhbHVlKQogewpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UHJlZml4LmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAj
ZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MKICNlbmRpZgogCisjaW5jbHVkZSA8d2lucnQvV2lu
ZG93cy5Gb3VuZGF0aW9uLkNvbGxlY3Rpb25zLmg+CisKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklH
X0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2lu
Y2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAkocmV2aXNpb24gMjQ4NDAxKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsMTAgQEAKIAogI2luY2x1ZGUgIldlYkxvY2FsaXphYmxl
U3RyaW5ncy5oIgogCisjaWYgVVNFKENGKQorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KKwogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC0zNyw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
PgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKIGNsYXNzIExv
Y2FsaXplZFN0cmluZzsKIApAQCAtMjQxLDMgKzI0NCw0IEBAIExQQ1RTVFIgV2ViTG9jYWxpemVk
TFBDVFNUUihXZWJMb2NhbGl6YWIKIHZvaWQgU2V0V2ViTG9jYWxpemVkU3RyaW5nTWFpbkJ1bmRs
ZShDRkJ1bmRsZVJlZikKIHsKIH0KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFdlYkxvY2FsaXphYmxlU3RyaW5nc19ICiAj
ZGVmaW5lIFdlYkxvY2FsaXphYmxlU3RyaW5nc19ICiAKKyNpZiBVU0UoQ0YpCisKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCiB0eXBlZGVmIHN0cnVjdCB7CkBA
IC03MSwzICs3Myw2IEBAIGV4dGVybiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgTE9DQUwK
ICNlbmRpZgogCiAjZW5kaWYKKworI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY1LDkgKzM2NSwxMyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjpzZXRDbGllbnRDCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBQQ0NFUlRfQ09O
VEVYVCBjZXJ0Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KGNlcnQp
OworI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZXJ0RGF0YSA9IFdlYkNv
cmU6OmNvcHlDZXJ0aWZpY2F0ZVRvRGF0YShjZXJ0Q29udGV4dCk7CiAgICAgUmVzb3VyY2VIYW5k
bGU6OnNldENsaWVudENlcnRpZmljYXRlKG1fcmVxdWVzdC51cmwoKS5ob3N0KCkudG9TdHJpbmco
KSwgY2VydERhdGEuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4g
RV9OT1RJTVBMOworI2VuZGlmCiB9CiAKIENGVVJMUmVxdWVzdFJlZiBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6Y2ZSZXF1ZXN0KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZl
cmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShD
RikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VuZGlmCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xv
Y2FsaXplZFN0cmluZ3MuaD4KQEAgLTYxLDYgKzY1LDggQEAgc3RhdGljIGNvbnN0IFN0cmluZyYg
b2xkUHJlZmVyZW5jZXNQYXRoKAogICAgIHJldHVybiBwYXRoOwogfQogCisjaWYgVVNFKENGKQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlPiBzdHJ1Y3QgQ0ZOdW1iZXJUcmFpdHMgeyBz
dGF0aWMgY29uc3QgQ0ZOdW1iZXJUeXBlIFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDRk51
bWJlclRyYWl0czxpbnQ+IHsgc3RhdGljIGNvbnN0IENGTnVtYmVyVHlwZSBUeXBlID0ga0NGTnVt
YmVyU0ludDMyVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IENGTnVtYmVyVHJhaXRzPExPTkdM
T05HPiB7IHN0YXRpYyBjb25zdCBDRk51bWJlclR5cGUgVHlwZSA9IGtDRk51bWJlckxvbmdMb25n
VHlwZTsgfTsKQEAgLTEwMyw2ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBib29sZWFuVmFsdWVGb3JQ
cmVmZXJlbmNlc1ZhCiBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGRlZmF1bHRTZXR0aW5nczsKIAog
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNlczo6bV9hcHBsaWNhdGlvbklkID0g
a0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb247CisjZW5kaWYKIAogc3RhdGljIEhhc2hN
YXA8V1RGOjpTdHJpbmcsIENPTVB0cjxXZWJQcmVmZXJlbmNlcz4+JiB3ZWJQcmVmZXJlbmNlc0lu
c3RhbmNlcygpCiB7CkBAIC0xODYsMTMgKzE5MywxNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpy
ZW1vdmVSZWZlcmVuY2VGb3JJCiAgICAgICAgIHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkucmVt
b3ZlKGlkZW50aWZpZXJTdHJpbmcpOwogfQogCisjaWYgVVNFKENGKQogQ0ZTdHJpbmdSZWYgV2Vi
UHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKQogewogICAgIHJldHVybiBtX2FwcGxpY2F0aW9u
SWQuZ2V0KCk7CiB9CisjZW5kaWYKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncygpCiB7CisjaWYgVVNFKENGKQogICAgIGlmIChkZWZhdWx0U2V0dGluZ3Mp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzM0LDggKzM0NCwxMCBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjppbml0aWFsaXplRGVmYXVsdFNlCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKICAgICBkZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKKyNlbmRpZgogfQog
CisjaWYgVVNFKENGKQogUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNl
czo6dmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQogewogICAgIFJldGFpblB0cjxDRlByb3Bl
cnR5TGlzdFJlZj4gdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtX3ByaXZhdGVQcmVmcy5n
ZXQoKSwga2V5KTsKQEAgLTM2OSw5ICszODEsMTEgQEAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0
UmVmPiBXZWJQcmVmZXJlbgogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZLZXkgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ0FT
Q0lJKSk7CiAgICAgcmV0dXJuIHZhbHVlRm9yS2V5KGNmS2V5LmdldCgpKTsKIH0KKyNlbmRpZgog
CiBCU1RSIFdlYlByZWZlcmVuY2VzOjpzdHJpbmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkp
CiB7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUg
PSB2YWx1ZUZvcktleShrZXkpOwogICAgIAogICAgIGlmICghdmFsdWUgfHwgKENGR2V0VHlwZUlE
KHZhbHVlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSkKQEAgLTM5NSwyNiArNDA5LDQ2
IEBAIEJTVFIgV2ViUHJlZmVyZW5jZXM6OnN0cmluZ1ZhbHVlRm9yS2V5KGMKICAgICAgICAgCiAg
ICAgYnN0cltsZW5ndGhdID0gMDsKICAgICByZXR1cm4gYnN0cjsKKyNlbHNlCisgICAgQlN0cmlu
ZyBkdW1teTsKKyAgICByZXR1cm4gZHVtbXk7CisjZW5kaWYKIH0KIAogaW50IFdlYlByZWZlcmVu
Y2VzOjppbnRlZ2VyVmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KQogeworI2lmIFVTRShDRikK
ICAgICByZXR1cm4gbnVtYmVyVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlPGludD4odmFsdWVGb3JL
ZXkoa2V5KS5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIEJPT0wg
V2ViUHJlZmVyZW5jZXM6OmJvb2xWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CisjaWYg
VVNFKENGKQogICAgIHJldHVybiBib29sZWFuVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKHZhbHVl
Rm9yS2V5KGtleSkuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBm
bG9hdCBXZWJQcmVmZXJlbmNlczo6ZmxvYXRWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7
CisjaWYgVVNFKENGKQogICAgIHJldHVybiBudW1iZXJWYWx1ZUZvclByZWZlcmVuY2VzVmFsdWU8
ZmxvYXQ+KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgogfQogCiBMT05HTE9ORyBXZWJQcmVmZXJlbmNlczo6bG9uZ2xvbmdWYWx1ZUZvcktleShj
b25zdCBjaGFyKiBrZXkpCiB7CisjaWYgVVNFKENGKQogICAgIHJldHVybiBudW1iZXJWYWx1ZUZv
clByZWZlcmVuY2VzVmFsdWU8TE9OR0xPTkc+KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRT
dHJpbmdWYWx1ZShjb25zdCBjaGFyKiBrZXksIEJTVFIgdmFsdWUpCkBAIC00MjMsOSArNDU3LDEx
IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKGNvbnMKICAgICB2YWwuYWRv
cHRCU1RSKHN0cmluZ1ZhbHVlRm9yS2V5KGtleSkpOwogICAgIGlmICh2YWwgJiYgIXdjc2NtcCh2
YWwsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisjaWYgVVNFKENGKQogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odmFsdWUpLCBz
dGF0aWNfY2FzdDxDRkluZGV4Pih3Y3NsZW4odmFsdWUpKSkpOwogICAgIHNldFZhbHVlRm9yS2V5
KGtleSwgdmFsdWVSZWYuZ2V0KCkpOworI2VuZGlmCiAKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFu
Z2VzTm90aWZpY2F0aW9uKCk7CiB9CkBAIC00MzUsNyArNDcxLDkgQEAgdm9pZCBXZWJQcmVmZXJl
bmNlczo6c2V0SW50ZWdlclZhbHVlKGNvbgogICAgIGlmIChpbnRlZ2VyVmFsdWVGb3JLZXkoa2V5
KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKENGKQogICAgIHNldFZhbHVl
Rm9yS2V5KGtleSwgY2ZOdW1iZXIodmFsdWUpLmdldCgpKTsKKyNlbmRpZgogCiAgICAgcG9zdFBy
ZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogfQpAQCAtNDQ1LDcgKzQ4Myw5IEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OnNldEZsb2F0VmFsdWUoY29uc3QKICAgICBpZiAoZmxvYXRWYWx1
ZUZvcktleShrZXkpID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ0YpCiAg
ICAgc2V0VmFsdWVGb3JLZXkoa2V5LCBjZk51bWJlcih2YWx1ZSkuZ2V0KCkpOworI2VuZGlmCiAK
ICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CkBAIC00NTUsNyAr
NDk1LDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0Qm9vbFZhbHVlKGNvbnN0CiAgICAgaWYg
KGJvb2xWYWx1ZUZvcktleShrZXkpID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5LCB2YWx1ZSA/IGtDRkJvb2xlYW5UcnVlIDog
a0NGQm9vbGVhbkZhbHNlKTsKKyNlbmRpZgogCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05v
dGlmaWNhdGlvbigpOwogfQpAQCAtNDY1LDcgKzUwNyw5IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldExvbmdMb25nVmFsdWUoY28KICAgICBpZiAobG9uZ2xvbmdWYWx1ZUZvcktleShrZXkpID09
IHZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JL
ZXkoa2V5LCBjZk51bWJlcih2YWx1ZSkuZ2V0KCkpOworI2VuZGlmCiAKICAgICBwb3N0UHJlZmVy
ZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CkBAIC00ODQsMTggKzUyOCwyMyBAQCBCU1RS
IFdlYlByZWZlcmVuY2VzOjp3ZWJQcmVmZXJlbmNlc1JlbW92CiAKIHZvaWQgV2ViUHJlZmVyZW5j
ZXM6OnNhdmUoKQogeworI2lmIFVTRShDRikKICAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25p
emUoYXBwbGljYXRpb25JZCgpKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjps
b2FkKCkKIHsKICAgICBpbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCk7CiAKKyNpZiBVU0UoQ0Yp
CiAgICAgbV9wcml2YXRlUHJlZnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogCiAgICAgbWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZl
cmVuY2VzKCk7CisjZW5kaWYKIH0KIAorI2lmIFVTRShDRikKIHZvaWQgV2ViUHJlZmVyZW5jZXM6
Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiB7CiAgICAgaWYgKGJv
b2xWYWx1ZUZvcktleShXZWJLaXREaWRNaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVy
ZW5jZXNQcmVmZXJlbmNlS2V5KSkKQEAgLTU1OCw2ICs2MDcsNyBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jCiAgICAgICAgIHNldFZhbHVlRm9yS2V5KHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihrZXlzW2ldKSwgdmFsdWVzW2ldKTsKICAgICB9CiB9CisjZW5kaWYK
IAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNjcxLDkgKzE3MjEsMTEgQEAgSFJFU1VM
VCBXZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5jZUZvcgogewogICAgIGlmICghU3lzU3RyaW5n
TGVuKGtleSkgfHwgIVN5c1N0cmluZ0xlbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VW5p
Q2hhcio+KGtleSksIFN5c1N0cmluZ0xlbihrZXkpKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB2YWx1ZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCByZWludGVycHJldF9jYXN0PFVuaUNoYXIqPih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkp
KTsKICAgICBzZXRWYWx1ZUZvcktleShrZXlTdHJpbmcuZ2V0KCksIHZhbHVlU3RyaW5nLmdldCgp
KTsKKyNlbmRpZgogICAgIHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KQEAgLTIyMTksNyArMjI3MSw5IEBAIEhSRVNVTFQgV2ViUHJlZmVy
ZW5jZXM6OnNldENvcmVNYXRoTUxFbmEKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBw
bGljYXRpb25JZChCU1RSIGFwcGxpY2F0aW9uSWQpCiB7CisjaWYgVVNFKENGKQogICAgIG1fYXBw
bGljYXRpb25JZCA9IFN0cmluZyhhcHBsaWNhdGlvbklkKS5jcmVhdGVDRlN0cmluZygpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDEwICszMTUsMTIg
QEAgcHVibGljOgogICAgIEhSRVNVTFQgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlv
bigpOwogCiBwcm90ZWN0ZWQ6CisjaWYgVVNFKENGKQogICAgIHZvaWQgc2V0VmFsdWVGb3JLZXko
Q0ZTdHJpbmdSZWYga2V5LCBDRlByb3BlcnR5TGlzdFJlZiB2YWx1ZSk7CiAgICAgUmV0YWluUHRy
PENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpOwogICAgIHZv
aWQgc2V0VmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5LCBDRlByb3BlcnR5TGlzdFJlZiB2YWx1
ZSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZUZvcktleShjb25zdCBj
aGFyKiBrZXkpOworI2VuZGlmCiAgICAgQlNUUiBzdHJpbmdWYWx1ZUZvcktleShjb25zdCBjaGFy
KiBrZXkpOwogICAgIGludCBpbnRlZ2VyVmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KTsKICAg
ICBCT09MIGJvb2xWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpOwpAQCAtMzMzLDE1ICszMzUs
MjAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVEZWZhdWx0U2V0dGlu
Z3MoKTsKICAgICB2b2lkIHNhdmUoKTsKICAgICB2b2lkIGxvYWQoKTsKKyNpZiBVU0UoQ0YpCiAg
ICAgdm9pZCBtaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYp
OworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3ByaXZhdGVQcmVmczsKICAgICBX
ZWJDb3JlOjpCU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBib29sIG1fYXV0b1NhdmVzIHsgZmFs
c2UgfTsKICAgICBib29sIG1fYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsIHsgdHJ1ZSB9
OwogICAgIHVuc2lnbmVkIG1fbnVtV2ViVmlld3MgeyAwIH07CisKKyNpZiBVU0UoQ0YpCisgICAg
UmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcHJpdmF0ZVByZWZzOwogICAgIHN0
YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fYXBwbGljYXRpb25JZDsKKyNlbmRpZgogfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAx
MSBBcHBjZWxlcmF0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSBCcmVudCBGdWxnaGFtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTIwMiw2
ICsyMDIsMTAgQEAKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgog
I2VuZGlmCiAKKyNpZiBVU0UoRElSRUNUMkQpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNv
bnRleHREaXJlY3QyRC5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAj
aW5jbHVkZSA8V2ViQ29yZS9GdWxsU2NyZWVuQ29udHJvbGxlci5oPgogI2VuZGlmCkBAIC0yMzUs
NyArMjM5LDkgQEAgdXNpbmcgSlNDOjpKU0xvY2s7CiAKIHN0YXRpYyBTdHJpbmcgd2ViS2l0VmVy
c2lvblN0cmluZygpOwogCisjaWYgVVNFKENGKQogc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIFdl
YktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSA9IENGU1RSKCJXZWJLaXRMb2NhbENhY2hlIik7Cisj
ZW5kaWYKIHN0YXRpYyBITU9EVUxFIGFjY2Vzc2liaWxpdHlMaWI7CiAKIHN0YXRpYyBIYXNoU2V0
PFdlYlZpZXcqPiYgcGVuZGluZ0RlbGV0ZUJhY2tpbmdTdG9yZVNldCgpCkBAIC04NzIsMTMgKzg3
OCw2IEBAIGJvb2wgV2ViVmlldzo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICAgICAgICAgIGlm
ICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLQotICAgICAgICBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IGJydXNoOwotICAgICAg
ICBtX3JlbmRlclRhcmdldC0+Q3JlYXRlU29saWRDb2xvckJydXNoKEQyRDE6OkNvbG9yRihEMkQx
OjpDb2xvckY6OkJsdWVWaW9sZXQpLCAmYnJ1c2gpOwotCi0gICAgICAgIG1fcmVuZGVyVGFyZ2V0
LT5CZWdpbkRyYXcoKTsKLSAgICAgICAgbV9yZW5kZXJUYXJnZXQtPkZpbGxSb3VuZGVkUmVjdGFu
Z2xlKEQyRDE6OlJvdW5kZWRSZWN0KEQyRDE6OlJlY3RGKDEwMC4wZiwgMTAwLjBmLCAzMDAuMGYs
IDIwMC4wZiksIDIwLjBmLCAyMC4wZiksIGJydXNoLmdldCgpKTsKLSAgICAgICAgbV9yZW5kZXJU
YXJnZXQtPkVuZERyYXcoKTsKICNlbmRpZgogICAgICAgICBtX2JhY2tpbmdTdG9yZVNpemUuY3gg
PSB3aWR0aDsKICAgICAgICAgbV9iYWNraW5nU3RvcmVTaXplLmN5ID0gaGVpZ2h0OwpAQCAtODk2
LDEyICs4OTUsNiBAQCBib29sIFdlYlZpZXc6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCiAKICAgICAg
ICAgaHIgPSBtX2JhY2tpbmdTdG9yZVJlbmRlclRhcmdldC0+UXVlcnlJbnRlcmZhY2UoX191dWlk
b2YoSUQyRDFHZGlJbnRlcm9wUmVuZGVyVGFyZ2V0KSwgKHZvaWQqKikmbV9iYWNraW5nU3RvcmVH
ZGlJbnRlcm9wKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0KLSAg
ICAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBicnVzaDI7Ci0gICAgICAgIG1fYmFj
a2luZ1N0b3JlUmVuZGVyVGFyZ2V0LT5DcmVhdGVTb2xpZENvbG9yQnJ1c2goRDJEMTo6Q29sb3JG
KEQyRDE6OkNvbG9yRjo6U2VhR3JlZW4pLCAmYnJ1c2gyKTsKLSAgICAgICAgbV9iYWNraW5nU3Rv
cmVSZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOwotICAgICAgICBtX3JlbmRlclRhcmdldC0+Rmls
bFJvdW5kZWRSZWN0YW5nbGUoRDJEMTo6Um91bmRlZFJlY3QoRDJEMTo6UmVjdEYoMTAwLjBmLCAx
MDAuMGYsIDMwMC4wZiwgMjAwLjBmKSwgMjAuMGYsIDIwLjBmKSwgYnJ1c2gyLmdldCgpKTsKLSAg
ICAgICAgbV9yZW5kZXJUYXJnZXQtPkVuZERyYXcoKTsKICNlbmRpZgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0xMjUyLDcgKzEyNDUsOCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50V2l0
aERpcmVjdDJEKCkKICAgICB9CiAKICAgICBSRUNUIGNsaWVudFJlY3QgPSB7fTsKLSAgICBHcmFw
aGljc0NvbnRleHQgZ2MobV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworICAgIFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEIHBsYXRmb3JtQ29udGV4dChtX3JlbmRlclRhcmdldC5nZXQoKSk7CisgICAgR3Jh
cGhpY3NDb250ZXh0IGdjKCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICB7CiAgICAgICAgIG1fcmVu
ZGVyVGFyZ2V0LT5TZXRUYWdzKFdFQktJVF9EUkFXSU5HLCBfX0xJTkVfXyk7CkBAIC01MzQxLDYg
KzUzMzUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAg
ICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0dXJuIGhyOwogCisjaWYgVVNFKENG
KQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVX
aXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3Ry
aW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0byBhIFVSTC4KQEAgLTUzNTgsNiArNTM1Myw5
IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgfQog
CiAgICAgICAgIHNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24odXJsLmdldCgpKTsK
KyNlbHNlCisgICAgICAgIEFTU0VSVCgwKTsKKyNlbmRpZgogICAgICAgICBzdHIuY2xlYXIoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihV
UkwoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCShyZXZpc2lvbiAyNDg0MDEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIw
MTEgQXBwY2VsZXJhdG9yLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1OSw4ICszNTksMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hXaWxsUAogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1l
LT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2Fk
RGVsZWdhdGU7Ci0gICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgm
ZnJhbWVMb2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPndpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTCh3ZWJWaWV3LCBCU3RyaW5nKHVybC5zdHJpbmcoKSksIGRl
bGF5LCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGQWJzb2x1dGVUaW1lVG9EQVRFKGZpcmVEYXRlLnNl
Y29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgbV93ZWJGcmFtZSk7CisgICAgaWYgKFNVQ0NF
RURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkgewor
I2lmIFVTRShDRikKKyAgICAgICAgREFURSBkYXRlID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpDRkFi
c29sdXRlVGltZVRvREFURShmaXJlRGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSk7
CisjZWxzZQorICAgICAgICBEQVRFIGRhdGUgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OmFic29sdXRl
VGltZVRvREFURShmaXJlRGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSk7CisjZW5k
aWYKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTCh3ZWJWaWV3LCBCU3RyaW5nKHVybC5zdHJpbmcoKSksIGRlbGF5LCBkYXRlLCBtX3dlYkZy
YW1lKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkKQEAgLTEwNjQsNiArMTA3MCw3IEBAIE9iamVjdENv
bnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVn
aW5WaWV3KSBjb25zdAogeworI2lmIFVTRShDRikKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogCiAgICAgQ09NUHRyPElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0
ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CkBAIC0xMTE4LDYgKzExMjUsOSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJy
b3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2Vy
SW5mb0JhZy5nZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0lu
RmFpbGVkV2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CisjZWxzZQorICAgIEFTU0VSVCgwKTsK
KyNlbmRpZgogfQogCiBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBsb2FkTWFudWFsbHkpCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQkocmV2aXNpb24gMjQ4
NDAxKQorKysgU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDkgQEAgc2V0KENNQUtFX1BSRUZJWF9QQVRIICR7V0VCS0lUX0xJQlJBUklFUwog
c2V0X3Byb3BlcnR5KEdMT0JBTCBQUk9QRVJUWSBGSU5EX0xJQlJBUllfVVNFX0xJQjMyX1BBVEhT
IE9GRikKIHNldF9wcm9wZXJ0eShHTE9CQUwgUFJPUEVSVFkgRklORF9MSUJSQVJZX1VTRV9MSUI2
NF9QQVRIUyBPTikKIAorc2V0KFdFQktJVF9MSUJSQVJJRVNfTElOS19ESVIgIiR7V0VCS0lUX0xJ
QlJBUklFU19ESVJ9L2xpYjY0IikKKyMgRklYTUU6IFJlbW92ZSAke1dFQktJVF9MSUJSQVJJRVNf
TElOS19ESVJ9IHdoZW4gZmluZF9saWJyYXJ5IGlzIHVzZWQgZm9yIGV2ZXJ5dGhpbmcKK2xpbmtf
ZGlyZWN0b3JpZXMoIiR7Q01BS0VfQklOQVJZX0RJUn0vbGliNjQiICIke1dFQktJVF9MSUJSQVJJ
RVNfTElOS19ESVJ9IikKIHNldChDTUFLRV9BUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFL
RV9CSU5BUllfRElSfS9saWI2NCkKIHNldChDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUlkg
JHtDTUFLRV9CSU5BUllfRElSfS9saWI2NCkKIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJF
Q1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9iaW42NCkKQEAgLTUzLDcgKzU2LDcgQEAgV0VCS0lU
X09QVElPTl9CRUdJTigpCiAKICMgRmVhdHVyZXMgaW4gdGhlIHNhbWUgc3RhdGUgb24gV2luQ2Fp
cm8gYW5kIEFwcGxlV2luCiAKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggUFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfM0RfVFJBTlNGT1JNUyBQUklWQVRFIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCBQUklW
QVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NBQ0hFX1BB
UlRJVElPTklORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIFBSSVZBVEUgT04pCkBAIC03MywyMyArNzYsMjQgQEAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiBQUklWQVRFIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQgUFJJVkFURSBPRkYp
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUg
T04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlVMTFNDUkVFTl9B
UEkgUFJJVkFURSBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9HRU9MT0NBVElPTiBQUklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOREVYRURfREFUQUJBU0UgUFJJVkFURSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JT
RVJWRVIgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgUFJJVkFURSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUyBQUklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQUklWQVRFIE9OKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTUFUSE1MIFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUIFBSSVZBVEUgT04p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVURVJfRUxFTUVOVCBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1M
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01J
TklCUk9XU0VSIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfT1ZF
UkZMT1dfU0NST0xMSU5HX1RPVUNIIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCBQUklWQVRFIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1FVT1RBIFBSSVZBVEUgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFU0laRV9PQlNFUlZFUiBQUklW
QVRFIE9OKQpAQCAtMTAxLDI0ICsxMDUsMjUgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RP
VUNIX0VWRU5UUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9UT1VDSF9TTElERVIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfVU5JRklFRF9CVUlMRFMgUFJJVkFURSBPTikKK1dFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBQUklWQVRFIE9OKQorV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIFBSSVZBVEUgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCQVNTRU1CTFkgUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCQVNTRU1C
TFlfU1RSRUFNSU5HX0FQSSBQUklWQVRFIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1dFQl9QUk9DRVNTX1NBTkRCT1ggUFJJVkFURSBPRkYpCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1hT
TFQgUFJJVkFURSBPTikKIAogIyBNZWRpYSB0aGluZ3MgdGhhdCBzaG91bGQgYmUgb24KIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BVkZfQ0FQVElPTlMgUFJJVkFURSBP
RkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0FVRElPIFBS
SVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBQUklWQVRFIE9GRikKLVdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TRVNTSU9O
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01F
RElBX1NPVVJDRSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUUkVBTSBQUklWQVRFIE9GRikKLVdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9E
RSBQUklWQVRFIE9GRikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9W
SURFT19UUkFDSyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9WSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTiBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfUlRDIFBSSVZBVEUgT0ZGKQog
CkBAIC0xMjksMTIgKzEzNCwxMCBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFZTUVOVF9S
RVFVRVNUIFBSSVZBVEUgT0ZGKQogCiAjIFdlYkdMCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfV0VCR0wyIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdQVSBQUklWQVRFIE9GRikKIAogIyBPZmYgZm9yIG5v
dywgYnV0IHNob3VsZCBiZSBvbgotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFXzNEX1RSQU5TRk9STVMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQUklWQVRFIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUFBMSUNBVElPTl9NQU5J
RkVTVCBQUklWQVRFIE9GRikKQEAgLTE2MSw3ICsxNjQsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BERktJVF9QTFVHSU4gUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUE9JTlRFUl9MT0NLIFBSSVZB
VEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFU09VUkNFX1VTQUdFIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JVQkJFUl9CQU5ESU5HIFBS
SVZBVEUgT0ZGKQpAQCAtMTc4LDE1ICsxODAsMTYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1VTRVJfTUVTU0FHRV9IQU5ETEVSUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMgUFJJVkFURSBPRkYpCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCRFJJVkVSIFBSSVZBVEUgT0ZGKQot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9BVURJTyBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVUSE4g
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VC
X0NSWVBUTyBQUklWQVRFIE9GRikKIAogI1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KFVTRV9WRVJTSU9OX1NUQU1QRVIgUFJJVkFURSBPTikKIAogIyBFeHBlcmltZW50YWwgZmVhdHVy
ZXMKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSBQUklWQVRFICR7RU5B
QkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCisjV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5U
QUxfRkVBVFVSRVN9KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JF
TU9URV9JTlNQRUNUT1IgUFJJVkFURSBPRkYpCisjV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1JFU09VUkNFX1VTQUdFIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFM
X0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNP
VVJDRV9VU0FHRSBQUklWQVRFIE9GRikKIAogIyBGZWF0dXJlcyB0byBpbnZlc3RpZ2F0ZQogIwpA
QCAtMjI0LDI0ICsyMjcsMzkgQEAgZW5kaWYgKCkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9DVVJMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0RJUkVDVDJEIE9OKQogU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0VYUE9SVF9NQUNST1MgT04pCi1TRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lO
U1BFQ1RPUn0pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04p
CitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCisjU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0lOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSICR7RU5BQkxF
X1JFTU9URV9JTlNQRUNUT1J9KQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0lOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSIE9GRikKKworc2V0KEVOQUJMRV9HUkFQSElDU19DT05URVhUXzNEIE9O
KQorc2V0KFVTRV9BTkdMRV9FR0wgT04pCiAKIHNldChXVEZfTElCUkFSWV9UWVBFIFNIQVJFRCkK
IHNldChKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX1RZUEUgU0hBUkVEKQogCiBzZXQoRU5BQkxFX0FQ
SV9URVNUUyBPRkYpCiBzZXQoRU5BQkxFX1dFQkNPUkUgT04pCi1zZXQoRU5BQkxFX1dFQktJVCBP
RkYpCi1zZXQoRU5BQkxFX1dFQktJVF9MRUdBQ1kgT0ZGKQorc2V0KEVOQUJMRV9XRUJLSVQgT04p
CitzZXQoRU5BQkxFX1dFQktJVF9MRUdBQ1kgT04pCiAKICMgT3ZlcnJpZGUgaGVhZGVycyBkaXJl
Y3Rvcmllcworc2V0KEFOR0xFX0ZSQU1FV09SS19IRUFERVJTX0RJUiAke0NNQUtFX0JJTkFSWV9E
SVJ9L0FOR0xFL0hlYWRlcnMpCiBzZXQoV1RGX0ZSQU1FV09SS19IRUFERVJTX0RJUiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dURi9IZWFkZXJzKQogc2V0KEphdmFTY3JpcHRDb3JlX0ZSQU1FV09SS19I
RUFERVJTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlL0hlYWRlcnMpCiBz
ZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9C
SU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS9Qcml2YXRlSGVhZGVycykKK3NldChQQUxfRlJBTUVX
T1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vUEFML0hlYWRlcnMpCitzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dl
YkNvcmUvUHJpdmF0ZUhlYWRlcnMpCitzZXQoV2ViS2l0TGVnYWN5X0ZSQU1FV09SS19IRUFERVJT
X0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdExlZ2FjeS9IZWFkZXJzKQorc2V0KFdlYktp
dF9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQvSGVhZGVy
cykKK3NldChXZWJLaXRfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5B
UllfRElSfS9XZWJLaXQvUHJpdmF0ZUhlYWRlcnMpCiAKICMgT3ZlcnJpZGUgZGVyaXZlZCBzb3Vy
Y2VzIGRpcmVjdG9yaWVzCiBzZXQoV1RGX0RFUklWRURfU09VUkNFU19ESVIgJHtDTUFLRV9CSU5B
UllfRElSfS9XVEYvRGVyaXZlZFNvdXJjZXMpCiBzZXQoSmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzKQorc2V0KFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMpCitzZXQoV2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXRMZWdhY3kvRGVyaXZlZFNvdXJjZXMpCitz
ZXQoV2ViS2l0X0RFUklWRURfU09VUkNFU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMpCiAKICMgT3ZlcnJpZGUgc2NyaXB0cyBkaXJlY3Rvcmllcwogc2V0KFdU
Rl9TQ1JJUFRTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dURi9TY3JpcHRzKQpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4
NDIwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5kIE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFu
ZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQwODI1NTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4v
V2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgICogUGxhdGZvcm1GVFcuY21h
a2U6IEFkZGVkLgorCiAyMDE5LTA4LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBEbyBub3QgYWxsb3cgbmF2aWdhdGlvbnMgb2YgZnJhbWVzIGFib3V0IHRv
IGdldCByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgamF2YXNjcmlwdDogVVJM
cwpJbmRleDogVG9vbHMvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUGxh
dGZvcm1GVFcuY21ha2UJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvUGxhdGZvcm1GVFcuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorI2FkZF9zdWJkaXJlY3RvcnkoSW1hZ2VE
aWZmKQorCitpZiAoRU5BQkxFX1dFQktJVF9MRUdBQ1kpCisgICAgI2FkZF9zdWJkaXJlY3Rvcnko
RHVtcFJlbmRlclRyZWUpCisgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci93aW4pCitl
bmRpZiAoKQorCisjaWYgKEVOQUJMRV9XRUJLSVQpCisjICAgIGFkZF9zdWJkaXJlY3RvcnkoV2Vi
S2l0VGVzdFJ1bm5lcikKKyNlbmRpZiAoKQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvd2luL1dl
YktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93
c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAkocmV2aXNpb24gMjQ4NDAxKQor
KysgVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NzIsNiArNjcyLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93VGV4
dChIV05EIGRpYWxvZywgVQogICAgIHNldFdpbmRvd1RleHQoZGlhbG9nLCBmaWVsZCwgX2JzdHJf
dCh2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKSk7CiB9CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgdm9p
ZCBzZXRXaW5kb3dUZXh0KEhXTkQgZGlhbG9nLCBVSU5UIGZpZWxkLCBDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSwgQ0ZTdHJpbmdSZWYga2V5LCBVSU5UJiB0b3RhbCkKIHsKICAgICBDRk51bWJl
clJlZiBjb3VudE51bSA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBrZXkpKTsKQEAgLTY4NCw2ICs2ODUsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRXaW5kb3dUZXh0KEhXTkQgZGlhbG9nLCBVCiAgICAgc2V0V2luZG93VGV4dChkaWFsb2csIGZp
ZWxkLCBzdGF0aWNfY2FzdDxVSU5UPihjb3VudCkpOwogICAgIHRvdGFsICs9IGNvdW50OwogfQor
I2VuZGlmCiAKIHZvaWQgV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdzo6dXBkYXRlU3RhdGlzdGlj
cyhIV05EIGRpYWxvZykKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375834</attachid>
            <date>2019-08-08 13:16:55 -0700</date>
            <delta_ts>2019-08-08 15:04:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200539-20190808131651.patch</filename>
            <type>text/plain</type>
            <size>150630</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4
LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFdd
IEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNt
YWtlOgorCiAyMDE5LTA4LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBhbmQg
TkVXUyBmb3IgMi4yNS40IHJlbGVhc2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktp
dDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBhbmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZTogQWRk
ZWQuCisKIDIwMTktMDctMTcgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTWFrZSBBTkdMRSB3b3JrIGluc2lkZSBXZWJLaXQyJ3Mgc2FuZGJveApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvUGxhdGZvcm1GVFcuY21ha2UJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzMiBAQAorIyBXZSdyZSB0YXJnZXRpbmcgV2luZG93cyAxMCB3aGljaCB3
aWxsIGhhdmUgRGlyZWN0WCAxMSBvbiBpdCBzbyByZXF1aXJlIHRoYXQKKyMgYnV0IG1ha2UgRGly
ZWN0WCA5IG9wdGlvbmFsCisKK2xpc3QoQVBQRU5EIEFOR0xFX0RFRklOSVRJT05TCisgICAgR0xf
QVBJQ0FMTD0KKyAgICBHTF9BUEk9CisgICAgTk9NSU5NQVgKKykKKworaWYgKFVTRV9BTkdMRV9F
R0wpCisgICAgIyBXZSdyZSB0YXJnZXRpbmcgV2luZG93cyAxMCB3aGljaCB3aWxsIGhhdmUgRGly
ZWN0WCAxMQorICAgIGxpc3QoQVBQRU5EIEFOR0xFX1NPVVJDRVMKKyAgICAgICAgJHthbmdsZV9z
eXN0ZW1fdXRpbHNfc291cmNlc193aW59CisgICAgICAgICR7YW5nbGVfdHJhbnNsYXRvcl9obHNs
X3NvdXJjZXN9CisKKyAgICAgICAgJHtsaWJhbmdsZV9kM2Rfc2hhcmVkX3NvdXJjZXN9CisgICAg
ICAgICR7bGliYW5nbGVfZDNkMTFfc291cmNlc30KKyAgICAgICAgJHtsaWJhbmdsZV9kM2QxMV93
aW4zMl9zb3VyY2VzfQorICAgICkKKworICAgIGxpc3QoQVBQRU5EIEFOR0xFX0RFRklOSVRJT05T
CisgICAgICAgIEFOR0xFX0VOQUJMRV9ITFNMCisgICAgICAgIEFOR0xFX0VOQUJMRV9EM0QxMQor
ICAgICkKKworICAgIGxpc3QoQVBQRU5EIEFOR0xFR0xFU3YyX0xJQlJBUklFUyBkeGd1aWQpCisK
KyAgICAjIERpcmVjdFggOSBzdXBwb3J0IHNob3VsZCBiZSBvcHRpb25hbCBidXQgQU5HTEUgd2ls
bCBub3QgY29tcGlsZSB3aXRob3V0IGl0CisgICAgbGlzdChBUFBFTkQgQU5HTEVfU09VUkNFUyAk
e2xpYmFuZ2xlX2QzZDlfc291cmNlc30pCisgICAgbGlzdChBUFBFTkQgQU5HTEVfREVGSU5JVElP
TlMgQU5HTEVfRU5BQkxFX0QzRDkpCisgICAgbGlzdChBUFBFTkQgQU5HTEVHTEVTdjJfTElCUkFS
SUVTIGQzZDkpCitlbmRpZiAoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NDAxKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzMgQEAK
KzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5kIE1pbmlCcm93c2VyIGJ1aWxkaW5nIGFu
ZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQwODI1NTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpyZW5kZXJUYXJnZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEOjpzdXJmYWNlIGNvbnN0KToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0JhY2tp
bmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6fkJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURpcmVjdDJESW1hZ2VTdXJmYWNlV2l0
aEZhc3RNYWxsb2MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9C
YWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpESUJQaXhlbERh
dGE6OkRJQlBpeGVsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBp
eGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpmaWxsUmVjdFdpdGhHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd0dseXBocyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6UGxhdGZvcm1Db250
ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6UGxh
dGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6flBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2
ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OlBsYXRmb3Jt
Q29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmJpdG1hcFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlyZWN0MkQ6OmJpdG1hcFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGly
ZWN0MkQ6OmNyZWF0ZVdpY0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6Y3Jl
YXRlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElSZW5kZXJU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZh
Y2VUb0Fub3RoZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OnNldEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2F2ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnJlbGVhc2VXaW5kb3dzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpiZWdpbkRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjplbmRE
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5EcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0aDo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ6OmJlZ2luRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRDo6ZW5kRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
dGF0ZVNhdmVyOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6On5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNvbnN0KToK
KwogMjAxOS0wOC0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZG9wdCBub24tZGVwcmVjYXRlZCBDR0NvbG9yU3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERp
cmVjdDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0JhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERp
cmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVkZSAiQ09N
UHRyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHdpbmNvZGVjLmg+Ci0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAor
aW50ZXJmYWNlIElEMkQxQml0bWFwOworaW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJnZXQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDMsOCBAQCBjbGFzcyBCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJh
Y2tlbmREaXJlY3QyRCgpID0gZGVmYXVsdDsKIAotICAgIElXSUNCaXRtYXAqIHN1cmZhY2UoKSBj
b25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKyAgICBJRDJEMURDUmVuZGVyVGFyZ2V0
KiByZW5kZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRhcmdldC5nZXQoKTsgfQor
ICAgIElEMkQxQml0bWFwKiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgp
OyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25z
dCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpID0gMDsKQEAgLTUzLDggKzU1LDggQEAgcHJvdGVjdGVk
OgogICAgIHsKICAgICB9CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zdXJmYWNlOwotICAg
IHZvaWQqIG1fc3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9OworICAgIENPTVB0cjxJRDJE
MURDUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+
IG1fc3VyZmFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5k
RGlyZWN0MkRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjEgKzQwLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxIeXN0ZXJlc2lzRHVy
YXRpb24geyAzMDBfbXMgfTsKIAotc3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJl
Y3QyREltYWdlU3VyZmFjZVdpdGhGYXN0TWFsbG9jKGNvbnN0IEludFNpemUmIHNpemUsIGRvdWJs
ZSBkZXZpY2VTY2FsZUZhY3Rvciwgdm9pZComIGJhY2tpbmdTdG9yZURhdGEpCi17Ci0gICAgYXV0
byBieXRlc1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oc2l6
ZS53aWR0aCgpKTsKLSAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4g
bnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oc2l6ZS5oZWlnaHQo
KSkgKiBieXRlc1BlclJvdzsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJhY2tpbmdTdG9yZURhdGEgPSBmYXN0WmVyb2Vk
TWFsbG9jKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKLQotICAgIHJldHVybiBEaXJlY3QyRDo6Y3Jl
YXRlRGlyZWN0MkRJbWFnZVN1cmZhY2VXaXRoRGF0YShiYWNraW5nU3RvcmVEYXRhLCBzaXplLCBi
eXRlc1BlclJvdy51bnNhZmVHZXQoKSk7Ci19Ci0KIEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3Qy
REltcGw6OkJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGwoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBCYWNraW5nU3RvcmVCYWNrZW5kRGly
ZWN0MkQoc2l6ZSkKICAgICAsIG1fc2Nyb2xsZWRIeXN0ZXJlc2lzKFt0aGlzXShQQUw6Okh5c3Rl
cmVzaXNTdGF0ZSBzdGF0ZSkgewpAQCAtNjIsMTUgKzQ3LDE1IEBAIEJhY2tpbmdTdG9yZUJhY2tl
bmREaXJlY3QyREltcGw6OkJhY2tpbmcKICAgICAgICAgICAgIG1fc2Nyb2xsU3VyZmFjZSA9IG51
bGxwdHI7CiAgICAgICAgIH0sIHNjcm9sbEh5c3RlcmVzaXNEdXJhdGlvbikKIHsKKyAgICBtX3Jl
bmRlclRhcmdldCA9IFdlYkNvcmU6OkRpcmVjdDJEOjpjcmVhdGVHRElSZW5kZXJUYXJnZXQoKTsK
KwogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKICAgICBzY2FsZWRTaXplLnNjYWxl
KGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBtX3N1cmZhY2UgPSBjcmVhdGVEaXJlY3QyREltYWdl
U3VyZmFjZVdpdGhGYXN0TWFsbG9jKHNjYWxlZFNpemUsIGRldmljZVNjYWxlRmFjdG9yLCBtX3N1
cmZhY2VCYWNraW5nRGF0YSk7CisgICAgbV9zdXJmYWNlID0gRGlyZWN0MkQ6OmNyZWF0ZUJpdG1h
cChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2NhbGVkU2l6ZSk7CiB9CiAKIEJhY2tpbmdTdG9yZUJh
Y2tlbmREaXJlY3QyREltcGw6On5CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsKCkKIHsK
LSAgICBmYXN0RnJlZShtX3N1cmZhY2VCYWNraW5nRGF0YSk7Ci0gICAgZmFzdEZyZWUobV9zY3Jv
bGxTdXJmYWNlQmFja2luZ0RhdGEpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZUJhY2tlbmREaXJl
Y3QyREltcGw6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXpl
JiBzY3JvbGxPZmZzZXQpCkBAIC04MywxMCArNjgsMTEgQEAgdm9pZCBCYWNraW5nU3RvcmVCYWNr
ZW5kRGlyZWN0MkRJbXBsOjpzYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fc2Nyb2xs
U3VyZmFjZSkgewotICAgICAgICBhdXRvIHNpemUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6ZShtX3N1
cmZhY2UuZ2V0KCkpOworICAgICAgICBhdXRvIGZsb2F0U2l6ZSA9IERpcmVjdDJEOjpiaXRtYXBT
aXplKG1fc3VyZmFjZS5nZXQoKSk7CisgICAgICAgIEludFNpemUgc2l6ZShmbG9hdFNpemUud2lk
dGgoKSwgZmxvYXRTaXplLmhlaWdodCgpKTsKICAgICAgICAgYXV0byBzY2FsZSA9IERpcmVjdDJE
OjpiaXRtYXBSZXNvbHV0aW9uKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVChzY2Fs
ZS54KCkgPT0gc2NhbGUueSgpKTsKLSAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gY3JlYXRlRGly
ZWN0MkRJbWFnZVN1cmZhY2VXaXRoRmFzdE1hbGxvYyhzaXplLCBzY2FsZS54KCksIG1fc2Nyb2xs
U3VyZmFjZUJhY2tpbmdEYXRhKTsKKyAgICAgICAgbV9zY3JvbGxTdXJmYWNlID0gRGlyZWN0MkQ6
OmNyZWF0ZUJpdG1hcChtX3JlbmRlclRhcmdldC5nZXQoKSwgc2l6ZSk7CiAgICAgfQogCiAgICAg
RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIobV9zdXJmYWNlLmdldCgp
LCBtX3Njcm9sbFN1cmZhY2UuZ2V0KCksIHNjcm9sbE9mZnNldCwgdGFyZ2V0UmVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2Vu
ZERpcmVjdDJESW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHJldmlzaW9uIDI0
ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpZiBVU0UoRElSRUNUMkQpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0
MkQuaCIKLSNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2
aXR5Lmg+CiAKIGludGVyZmFjZSBJV0lDQml0bWFwOwpAQCAtNDMsOCArNDIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CiAKLSAgICBDT01QdHI8SVdJQ0JpdG1hcD4gbV9zY3JvbGxTdXJmYWNlOwot
ICAgIHZvaWQqIG1fc2Nyb2xsU3VyZmFjZUJhY2tpbmdEYXRhIHsgbnVsbHB0ciB9OworICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gbV9zY3JvbGxTdXJmYWNlOwogCiAgICAgUEFMOjpIeXN0ZXJlc2lz
QWN0aXZpdHkgbV9zY3JvbGxlZEh5c3RlcmVzaXM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5jcHAJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9ESUJQ
aXhlbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxNSBAQCB2b2lkIERJQlBp
eGVsRGF0YTo6aW5pdGlhbGl6ZShIQklUTUFQIGJpCiAgICAgbV9iaXRzUGVyUGl4ZWwgPSBibXBJ
bmZvLmJtQml0c1BpeGVsOwogfQogCitESUJQaXhlbERhdGE6OkRJQlBpeGVsRGF0YSh2b2lkKiBk
YXRhLCBJbnRTaXplIHNpemUpCisgICAgOiBtX2JpdG1hcEJ1ZmZlcihyZWludGVycHJldF9jYXN0
PFVJbnQ4Kj4oZGF0YSkpCisgICAgLCBtX2JpdG1hcEJ1ZmZlckxlbmd0aCg4ICogc2l6ZS53aWR0
aCgpICogc2l6ZS5oZWlnaHQoKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9ieXRlc1Bl
clJvdyg4ICogc2l6ZS53aWR0aCgpKQorICAgICwgbV9iaXRzUGVyUGl4ZWwoOCkKK3sKK30KKwog
I2lmbmRlZiBOREVCVUcKIHZvaWQgRElCUGl4ZWxEYXRhOjp3cml0ZVRvRmlsZShMUENXU1RSIGZp
bGVQYXRoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJ
QlBpeGVsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9ESUJQaXhlbERhdGEuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIERJQlBpeGVsRGF0YShI
QklUTUFQKTsKKyAgICBESUJQaXhlbERhdGEodm9pZCogZGF0YSwgSW50U2l6ZSk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNDcgKzU1LDYgQEAg
bmFtZXNwYWNlIERpcmVjdDJEIHsKIGVudW0gUGF0dGVybkFkanVzdG1lbnQgeyBOb0FkanVzdG1l
bnQsIEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSB9OwogZW51bSBBbHBoYVByZXNlcnZhdGlv
biB7IERvTm90UHJlc2VydmVBbHBoYSwgUHJlc2VydmVBbHBoYSB9OwogCi0KLWNsYXNzIFBsYXRm
b3JtQ29udGV4dFN0YXRlU2F2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtQ29udGV4dFN0YXRl
U2F2ZXIoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJlc3Rv
cmUgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAsIG1fc2F2
ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAobV9zYXZlQW5k
UmVzdG9yZSkKLSAgICAgICAgICAgIG1fY29udGV4dC5zYXZlKCk7Ci0gICAgfQotCi0gICAgflBs
YXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2F2ZUFuZFJl
c3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0KLQotICAgIHZv
aWQgc2F2ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUpOwotICAg
ICAgICBtX2NvbnRleHQuc2F2ZSgpOwotICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICB2b2lkIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2F2
ZUFuZFJlc3RvcmUpOwotICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgICAgICBtX3Nh
dmVBbmRSZXN0b3JlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRTYXZlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVBbmRSZXN0b3JlOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgbV9jb250ZXh0OwotICAgIGJvb2wgbV9z
YXZlQW5kUmVzdG9yZSB7IGZhbHNlIH07Ci19OwotCiAvLyBGSVhNRTogUmVwbGFjZSBvbmNlIEdy
YXBoaWNzQ29udGV4dDo6ZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoKQogLy8g
aXMgcmVmYWN0b3JlZCBhcyBhIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24uCiBzdGF0aWMgZmxvYXQg
ZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQgc3Ryb2tlV2lkdGgsIFN0
cm9rZVN0eWxlIHN0cm9rZVN0eWxlLCBmbG9hdCBzdHJva2VUaGlja25lc3MpCkBAIC01MjEsNyAr
NDgwLDcgQEAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbgogICAgIEZp
bGxTb3VyY2UgZmlsbFdpdGhIb2xlU291cmNlID0gZmlsbFNvdXJjZTsKICAgICBmaWxsV2l0aEhv
bGVTb3VyY2UuZmlsbFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZDsKIAotICAgIGZpbGxQYXRoKHBs
YXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFNvdXJjZSwgc2hhZG93U3RhdGUpOworICAgIGZpbGxQ
YXRoKHBsYXRmb3JtQ29udGV4dCwgcGF0aCwgZmlsbFdpdGhIb2xlU291cmNlLCBzaGFkb3dTdGF0
ZSk7CiB9CiAKIHZvaWQgZmlsbFJlY3RXaXRoR3JhZGllbnQoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBJRDJEMUJydXNoKiBn
cmFkaWVudCkKQEAgLTUzNCw2ICs0OTMsOCBAQCB2b2lkIGZpbGxSZWN0V2l0aEdyYWRpZW50KFBs
YXRmb3JtQ29udGV4CiAgICAgICAgIGNvbnN0IEQyRDFfUkVDVF9GIGQyZFJlY3QgPSByZWN0Owog
ICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIGdyYWRpZW50KTsK
ICAgICB9OworCisgICAgZHJhd1dpdGhvdXRTaGFkb3cocGxhdGZvcm1Db250ZXh0LCByZWN0LCBk
cmF3RnVuY3Rpb24pOwogfQogCiB2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2UmIGZp
bGxTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKQEAgLTczNSwxMiArNjk2
LDczIEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJgogICAgIH0pOwog
fQogCi0vKgotdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFN0cm9rZVNvdXJj
ZSYgc3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqIHNjYWxlZEZvbnQsIGRvdWJs
ZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8RGlyZWN0V3JpdGVHbHlwaFR5cGU+
JiBnbHlwaHMsIGZsb2F0IHhPZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5n
TW9kZSwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNl
dCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQorCit2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNv
dXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQmIGZvbnQs
IGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+
JiBnbHlwaHMsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3Qg
VmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+JiBnbHlwaE9mZnNldHMsIGZsb2F0IHhPZmZzZXQs
IFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0Nv
bG9yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBw
bGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKKworICAgIHBsYXRmb3JtQ29u
dGV4dC5zYXZlKCk7CisKKyAgICBEMkQxX01BVFJJWF8zWDJfRiBtYXRyaXg7CisgICAgcmVuZGVy
VGFyZ2V0LT5HZXRUcmFuc2Zvcm0oJm1hdHJpeCk7CisKKyAgICAvKgorICAgIC8vIEZJWE1FOiBH
ZXQgU3ludGhldGljIE9ibGlxdWUgd29ya2luZworICAgIGlmIChwbGF0Zm9ybURhdGEuc3ludGhl
dGljT2JsaXF1ZSgpKSB7CisgICAgICAgIHN0YXRpYyBmbG9hdCBza2V3ID0gLXRhbmYoc3ludGhl
dGljT2JsaXF1ZUFuZ2xlKCkgKiBwaUZsb2F0IC8gMTgwLjBmKTsKKyAgICAgICAgYXV0byBza2V3
TWF0cml4ID0gRDJEMTo6TWF0cml4M3gyRjo6U2tldyhza2V3LCAwKTsKKyAgICAgICAgY29udGV4
dC0+U2V0VHJhbnNmb3JtKG1hdHJpeCAqIHNrZXdNYXRyaXgpOworICAgIH0KKyAgICAqLworCisg
ICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1EYXRhLmR3Rm9udCgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChwbGF0Zm9ybURhdGEuZHdGb250RmFjZSgpKTsKKworICAgIERXUklURV9HTFlQSF9SVU4g
Z2x5cGhSdW47CisgICAgZ2x5cGhSdW4uZm9udEZhY2UgPSBwbGF0Zm9ybURhdGEuZHdGb250RmFj
ZSgpOworICAgIGdseXBoUnVuLmZvbnRFbVNpemUgPSBwbGF0Zm9ybURhdGEuc2l6ZSgpOworICAg
IGdseXBoUnVuLmdseXBoQ291bnQgPSBnbHlwaHMuc2l6ZSgpOworICAgIGdseXBoUnVuLmdseXBo
SW5kaWNlcyA9IGdseXBocy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhBZHZhbmNlcyA9IGhv
cml6b250YWxBZHZhbmNlcy5kYXRhKCk7CisgICAgZ2x5cGhSdW4uZ2x5cGhPZmZzZXRzID0gbnVs
bHB0cjsKKyAgICBnbHlwaFJ1bi5pc1NpZGV3YXlzID0gcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9u
KCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKKyAgICBnbHlwaFJ1bi5iaWRpTGV2ZWwg
PSAwOworCisgICAgLyoKKyAgICAvLyBGSVhNRSgpOiBHZXQgU2hhZG93cyB3b3JraW5nCisgICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgIENvbG9y
IHNoYWRvd0NvbG9yOworICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hh
ZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
IHsKKyAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFz
aW5nLgorICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgQ29s
b3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOworICAgICAgICBDb2xv
ciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCks
IHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xvci5hbHBo
YSgpIC8gMjU1KTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFk
b3dPZmZzZXQud2lkdGgoKTsKKyAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJh
bnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHll
dCwgc28gZG93biBpcyBuZWdhdGl2ZS4KKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2lu
dC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworCisgICAgICAgIGF1dG8gc2hhZG93QnJ1c2gg
PSBncmFwaGljc0NvbnRleHQuYnJ1c2hXaXRoQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsKKyAgICAg
ICAgY29udGV4dC0+RHJhd0dseXBoUnVuKEQyRDE6OlBvaW50MkYoc2hhZG93VGV4dFgsIHNoYWRv
d1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgICAgIGlmIChmb250LnN5bnRo
ZXRpY0JvbGRPZmZzZXQoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPkRyYXdHbHlwaFJ1bihEMkQx
OjpQb2ludDJGKHNoYWRvd1RleHRYICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHNoYWRv
d1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dCcnVzaCk7CisgICAgfQorICAgICovCisKKyAgICBy
ZW5kZXJUYXJnZXQtPkRyYXdHbHlwaFJ1bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSwgcG9pbnQu
eSgpKSwgJmdseXBoUnVuLCBmaWxsU291cmNlLmJydXNoLmdldCgpKTsKKyAgICAvLyBpZiAoZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpCisgICAgLy8gICAgIGNvbnRleHQtPkRyYXdHbHlwaFJ1
bihEMkQxOjpQb2ludDJGKHBvaW50LngoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBw
b2ludC55KCkpLCAmZ2x5cGhSdW4sIGdyYXBoaWNzQ29udGV4dC5zb2xpZEZpbGxCcnVzaCgpKTsK
KworICAgIC8vIGlmIChoYXNTaW1wbGVTaGFkb3cpCisgICAgLy8gICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisKKyAg
ICBwbGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQotKi8KKwogCiB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFw
KiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZs
b2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmCiB2b2lkIHN0cm9rZVBhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRo
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgY2xlYXJS
ZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKLS8vIEZJ
WE1FKElNUExFTUVOVCk6IHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYs
IGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0
ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEaXJlY3RXcml0ZVNjYWxlZEZvbnQqLCBkb3VibGUsIGNv
bnN0IFZlY3RvcjxEaXJlY3RXcml0ZUdseXBoVHlwZT4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2Rl
RmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwordm9pZCBkcmF3
R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0
IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdS
SVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCiB2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHks
IGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxv
YXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJKHJldmlz
aW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZURl
Y29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTUzLDYgKzU0LDExIEBA
IEludFNpemUgYml0bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKiBiaXQKICAgICByZXR1cm4gSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAorRmxvYXRTaXplIGJpdG1hcFNpemUoSUQyRDFCaXRt
YXAqIGJpdG1hcFNvdXJjZSkKK3sKKyAgICByZXR1cm4gYml0bWFwU291cmNlLT5HZXRTaXplKCk7
Cit9CisKIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFwU291cmNlKiBiaXRt
YXBTb3VyY2UpCiB7CiAgICAgY29uc3RleHByIGRvdWJsZSBkcGlCYXNlID0gOTYuMDsKQEAgLTYz
LDggKzY5LDIxIEBAIEZsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJV0lDQml0bWFwU28KICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UG9pbnQgcmVzdWx0KGRwaVgsIGRwaVkpOwot
ICAgIHJlc3VsdC5zY2FsZSgxIC8gZHBpQmFzZSk7CisgICAgcmVzdWx0LnNjYWxlKDEuMCAvIGRw
aUJhc2UpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Zsb2F0UG9pbnQgYml0bWFwUmVzb2x1
dGlvbihJRDJEMUJpdG1hcCogYml0bWFwKQoreworICAgIGNvbnN0ZXhwciBkb3VibGUgZHBpQmFz
ZSA9IDk2LjA7CisKKyAgICBmbG9hdCBkcGlYLCBkcGlZOworICAgIGJpdG1hcC0+R2V0RHBpKCZk
cGlYLCAmZHBpWSk7CisKKyAgICBGbG9hdFBvaW50IHJlc3VsdChkcGlYLCBkcGlZKTsKKyAgICBy
ZXN1bHQuc2NhbGUoMS4wIC8gZHBpQmFzZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKwogfQogCiB1
bnNpZ25lZCBiaXRzUGVyUGl4ZWwoR1VJRCBiaXRtYXBGb3JtYXQpCkBAIC0xMDEsNiArMTIwLDI5
IEBAIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJlY3QyREltYWdlU3UKICAgICByZXR1cm4g
c3VyZmFjZTsKIH0KIAorQ09NUHRyPElXSUNCaXRtYXA+IGNyZWF0ZVdpY0JpdG1hcChjb25zdCBJ
bnRTaXplJiBzaXplKQoreworICAgIENPTVB0cjxJV0lDQml0bWFwPiBzdXJmYWNlOworICAgIEhS
RVNVTFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+
Q3JlYXRlQml0bWFwKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgR1VJRF9XSUNQaXhlbEZv
cm1hdDMyYnBwUEJHUkEsIFdJQ0JpdG1hcENhY2hlT25EZW1hbmQsICZzdXJmYWNlKTsKKyAgICBp
ZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IHN1cmZhY2U7Cit9CisKK0NPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQml0bWFwKElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgYXV0
byBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFwUHJvcGVydGllcyhEMkQxOjpQaXhlbEZv
cm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJ
UExJRUQpKTsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEQyRDFfU0la
RV9VIGJpdG1hcFNpemUgPSBzaXplOworICAgIEhSRVNVTFQgaHIgPSByZW5kZXJUYXJnZXQtPkNy
ZWF0ZUJpdG1hcChiaXRtYXBTaXplLCBiaXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsKKyAgICBp
ZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IGJpdG1hcDsKK30KKwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5kZXJUYXJn
ZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqIGJpdG1hcFNvdXJjZSkKIHsKICAgICBhdXRvIHRh
cmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKEQyRDFfUkVOREVS
X1RBUkdFVF9UWVBFX0RFRkFVTFQsCkBAIC0xMTUsMTQgKzE1NywyNiBAQCBDT01QdHI8SUQyRDFS
ZW5kZXJUYXJnZXQ+IGNyZWF0ZVJlbmRlclRhCiAgICAgcmV0dXJuIGJpdG1hcENvbnRleHQ7CiB9
CiAKLXZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJV0lDQml0bWFwKiBmcm9t
LCBJV0lDQml0bWFwKiB0bywgY29uc3QgSW50U2l6ZSYgc291cmNlT2Zmc2V0LCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0KQorQ09NUHRyPElEMkQxRENSZW5k
ZXJUYXJnZXQ+IGNyZWF0ZUdESVJlbmRlclRhcmdldCgpCit7CisgICAgYXV0byB0YXJnZXRQcm9w
ZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9UQVJHRVRf
VFlQRV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAgICAwLCAw
LCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEUsIEQyRDFfRkVBVFVSRV9M
RVZFTF9ERUZBVUxUKTsKKworICAgIENPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiByZW5kZXJU
YXJnZXQ7CisgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgp
LT5DcmVhdGVEQ1JlbmRlclRhcmdldCgmdGFyZ2V0UHJvcGVydGllcywgJnJlbmRlclRhcmdldCk7
CisgICAgaWYgKCFyZW5kZXJUYXJnZXQgfHwgIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIHJlbmRlclRhcmdldDsKK30KKwordm9pZCBjb3B5UmVj
dEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKElEMkQxQml0bWFwKiBmcm9tLCBJRDJEMUJpdG1hcCog
dG8sIGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYgZGVzdE9mZnNldCkKIHsKLSAgICAvKgotICAgIFJlZlB0cjxjYWlyb190PiBj
b250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHRvKSk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRl
KGNvbnRleHQuZ2V0KCksIGRlc3RPZmZzZXQud2lkdGgoKSwgZGVzdE9mZnNldC5oZWlnaHQoKSk7
Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQuZ2V0KCksIGNhaXJvT3BlcmF0b3IpOwot
ICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0LmdldCgp
LCBzb3VyY2VPZmZzZXQsIHJlY3QpOwotICAgICovCisgICAgYXV0byBvZmZzZXQgPSBEMkQxOjpQ
b2ludDJVKCk7CisgICAgYXV0byBzb3VyY2VSZWN0ID0gRDJEMTo6UmVjdFUoc291cmNlT2Zmc2V0
LndpZHRoKCksIC1zb3VyY2VPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CisgICAgSFJFU1VMVCBociA9IHRvLT5Db3B5RnJvbUJpdG1hcCgmb2Zmc2V0LCBmcm9t
LCAmc291cmNlUmVjdCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBEaXJlY3QyRApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJEVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NU
eXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAoraW50ZXJmYWNlIElEMkQxQml0bWFwOwor
aW50ZXJmYWNlIElEMkQxRENSZW5kZXJUYXJnZXQ7CiBpbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJn
ZXQ7CiBpbnRlcmZhY2UgSVdJQ0JpdG1hcFNvdXJjZTsKIGludGVyZmFjZSBJV0lDQml0bWFwOwpA
QCAtMzksMTggKzQyLDI0IEBAIGludGVyZmFjZSBJV0lDQml0bWFwOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIEludFNpemU7CiAKIG5hbWVzcGFjZSBEaXJlY3QyRCB7CiAKIEludFNpemUgYml0
bWFwU2l6ZShJV0lDQml0bWFwU291cmNlKik7CitGbG9hdFNpemUgYml0bWFwU2l6ZShJRDJEMUJp
dG1hcCopOwogRmxvYXRQb2ludCBiaXRtYXBSZXNvbHV0aW9uKElXSUNCaXRtYXBTb3VyY2UqKTsK
K0Zsb2F0UG9pbnQgYml0bWFwUmVzb2x1dGlvbihJRDJEMUJpdG1hcCopOwogdW5zaWduZWQgYml0
c1BlclBpeGVsKEdVSUQpOworQ09NUHRyPElEMkQxQml0bWFwPiBjcmVhdGVCaXRtYXAoSUQyRDFS
ZW5kZXJUYXJnZXQqLCBjb25zdCBJbnRTaXplJik7CitDT01QdHI8SVdJQ0JpdG1hcD4gY3JlYXRl
V2ljQml0bWFwKGNvbnN0IEludFNpemUmKTsKIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVEaXJl
Y3QyREltYWdlU3VyZmFjZVdpdGhEYXRhKHZvaWQqIGRhdGEsIGNvbnN0IEludFNpemUmLCB1bnNp
Z25lZCBzdHJpZGUpOwogQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBjcmVhdGVSZW5kZXJUYXJn
ZXRGcm9tV0lDQml0bWFwKElXSUNCaXRtYXAqKTsKK0NPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0
PiBjcmVhdGVHRElSZW5kZXJUYXJnZXQoKTsKIAotdm9pZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNl
VG9Bbm90aGVyKElXSUNCaXRtYXAqIGZyb20sIElXSUNCaXRtYXAqIHRvLCBjb25zdCBJbnRTaXpl
JiBzb3VyY2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0
ID0gSW50U2l6ZSgpKTsKK3ZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJRDJE
MUJpdG1hcCogZnJvbSwgSUQyRDFCaXRtYXAqIHRvLCBjb25zdCBJbnRTaXplJiBzb3VyY2VPZmZz
ZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0ID0gSW50U2l6ZSgp
KTsKIAogfSAvLyBuYW1lc3BhY2UgRGlyZWN0MkQKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw4ICs1Myw2IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBo
ZGMKIAogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQyRDFEQ1Jl
bmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkVDVCByZWN0LCBib29sIGhhc0FscGhhKQogewot
ICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7Ci0KICAgICAvLyBDcmVhdGUgYSBEQyByZW5kZXIgdGFy
Z2V0LgogICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRhcmdldFByb3Bl
cnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKICAgICAgICAgRDJEMTo6UGl4
ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVN
VUxUSVBMSUVEKSwKQEAgLTY3LDYgKzY1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0Nv
bnRleHQoSERDIGhkYwogCiAgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwogICAgIG1f
ZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBs
YXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwor
ICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKiBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgcmVuZGVyZXJUeXBlKQpAQCAtMTY0LDggKzE2Mywx
MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0cm95KCkKIAogUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQqIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QK
IHsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBBU1NFUlQoIXBhaW50aW5nRGlzYWJsZWQoKSk7Ci0gICAgcmV0dXJuIG1fZGF0
YS0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgcmV0dXJuICZtX2RhdGEtPnBsYXRmb3JtQ29udGV4
dCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c3luY0NvbnRl
eHQoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmKQpAQCAtMTk3LDE4ICsxOTgsMTIgQEAgZmxvYXQg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjdQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghcGFpbnRpbmdEaXNhYmxlZCgp
KTsKLSAgICBBU1NFUlQoIW1faW1wbCk7Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0
KCkpOwogICAgIERpcmVjdDJEOjpzYXZlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFw
YWludGluZ0Rpc2FibGVkKCkpOwotICAgIEFTU0VSVCghbV9pbXBsKTsKLQogICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KQEAgLTI0NywxNCArMjQyLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZWxlYXNlV2luZG93c0NvbnQKIAogICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJp
dG1hcFByb3BlcnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSk7CiAKKyAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOworICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICp0aGlzLT5wbGF0
Zm9ybUNvbnRleHQoKTsKKwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOwotICAgIEhS
RVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPkNyZWF0ZUJpdG1h
cChwaXhlbERhdGEuc2l6ZSgpLCBwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5ieXRlc1Bl
clJvdygpLCAmYml0bWFwUHJvcGVydGllcywgJmJpdG1hcCk7CisgICAgSFJFU1VMVCBociA9IHBs
YXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKS0+Q3JlYXRlQml0bWFwKHBpeGVsRGF0YS5zaXpl
KCksIHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksICZiaXRtYXBQ
cm9wZXJ0aWVzLCAmYml0bWFwKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKLSAgICBE
MkRDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptX2RhdGEpOworICAgIFBsYXRmb3JtQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgLy8gTm90
ZTogVGhlIGNvbnRlbnQgaW4gdGhlIEhEQyBpcyBpbnZlcnRlZCBjb21wYXJlZCB0byBEaXJlY3Qy
RCwgc28gaXQgbmVlZHMgdG8gYmUgZmxpcHBlZC4KLSAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCk7CisgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0LnJlbmRlclRhcmdldCgpOwogCiAgICAgRDJEMV9NQVRSSVhfM1gyX0YgY3VycmVudFRy
YW5zZm9ybTsKICAgICBjb250ZXh0LT5HZXRUcmFuc2Zvcm0oJmN1cnJlbnRUcmFuc2Zvcm0pOwpA
QCAtMzE0LDcgKzMxMiw3IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBo
aWMKICAgICBpZiAoIW1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoYmVnaW5EcmF3Q291bnQpCisgICAgaWYgKG1fcGxhdGZvcm1Db250
ZXh0LmJlZ2luRHJhd0NvdW50KQogICAgICAgICBlbmREcmF3KCk7CiB9CiAKQEAgLTM0NiwyMSAr
MzQ0LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpmbHUKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCiB7Ci0gICAgQVNT
RVJUKG1fcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKTsKLSAgICBtX3BsYXRmb3JtQ29u
dGV4dC5yZW5kZXJUYXJnZXQoKS0+QmVnaW5EcmF3KCk7Ci0gICAgKytiZWdpbkRyYXdDb3VudDsK
KyAgICBtX3BsYXRmb3JtQ29udGV4dC5iZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXcoKQogewotICAgIEFTU0VSVChtX3BsYXRmb3Jt
Q29udGV4dC5yZW5kZXJUYXJnZXQoKSk7Ci0gICAgRDJEMV9UQUcgZmlyc3QsIHNlY29uZDsKLSAg
ICBIUkVTVUxUIGhyID0gbV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCktPkVuZERyYXco
JmZpcnN0LCAmc2Vjb25kKTsKLQotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCJGYWlsZWQgaW4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjplbmRE
cmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIsIGhyLCBmaXJzdCwgc2Vjb25kKTsK
LQotICAgIC0tYmVnaW5EcmF3Q291bnQ7CisgICAgbV9wbGF0Zm9ybUNvbnRleHQuZW5kRHJhdygp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBA
IC00MTksMTIgKzQwOCwxNCBAQCBJRDJEMUJydXNoKiBHcmFwaGljc0NvbnRleHQ6OnBhdHRlcm5G
aWxsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXcoKQogewotICAgIG1fZGF0YS0+
YmVnaW5EcmF3KCk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+YmVnaW5EcmF3KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmREcmF3KCkKIHsKLSAgICBtX2RhdGEtPmVuZERyYXcoKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZv
cm1Db250ZXh0KCkpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5lbmREcmF3KCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmbHVzaCgpCkBAIC05OTUsNyArOTg2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbgogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pbXBsKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpzZXRD
VE0oKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsKKyAgICAg
ICAgbV9pbXBsLT5zZXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTEzMSwxMCArMTEyMiw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJc0FjY2VsZXJh
dGVkQ28KIAogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgY29u
c3QKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghaGFzUGxhdGZvcm1D
b250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6aXNBY2NlbGVyYXRlZENv
bnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTUsMTMgKzE1NSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6ZmlsbFJlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKIHsKLSAg
ICBhdXRvIHBsYXRmb3JtR3JhZGllbnQgPSBhZG9wdENPTShncmFkaWVudC5jcmVhdGVQbGF0Zm9y
bUdyYWRpZW50SWZOZWNlc3NhcnkobV9wbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCkpKTsK
KyAgICBDT01QdHI8SUQyRDFCcnVzaD4gcGxhdGZvcm1HcmFkaWVudCA9IGdyYWRpZW50LmNyZWF0
ZVBsYXRmb3JtR3JhZGllbnRJZk5lY2Vzc2FyeShtX3BsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJn
ZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUdyYWRpZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBEaXJlY3QyRDo6c2F2ZShtX3BsYXRmb3JtQ29udGV4dCk7CiAgICAgRGlyZWN0MkQ6OmZpbGxS
ZWN0V2l0aEdyYWRpZW50KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LCBwbGF0Zm9ybUdyYWRpZW50
LmdldCgpKTsKLSAgICBEaXJlY3QyRDo6cmVzdG9yZShtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0xOTAsOSArMTg4LDE0IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUm8KICAgICBEaXJlY3QyRDo6U3RhdGU6
OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgcHJldmlvdXNPcGVyYXRv
ciwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCB7IH0sIERp
cmVjdDJEOjpTaGFkb3dTdGF0ZShncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpKSk7CisgICAgYXV0
byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOworCisgICAgRGlyZWN0MkQ6OkZp
bGxTb3VyY2UgZmlsbFNvdXJjZShzdGF0ZSwgbV9wbGF0Zm9ybUNvbnRleHQpOworICAgIGZpbGxT
b3VyY2UuYnJ1c2ggPSBtX3BsYXRmb3JtQ29udGV4dC5icnVzaFdpdGhDb2xvcihjb2xvcik7CisK
KyAgICBEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUobV9wbGF0Zm9ybUNvbnRleHQs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgZmlsbFNvdXJjZSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRl
KGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0yMzgsNyArMjQxLDMx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3R2wKICAgICBpZiAoIWZv
bnQucGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKKyAgICBWZWN0b3I8dW5z
aWduZWQgc2hvcnQ+IGdseXBocyhudW1HbHlwaHMpOworICAgIFZlY3RvcjxmbG9hdD4gaG9yaXpv
bnRhbEFkdmFuY2VzKG51bUdseXBocyk7CisgICAgVmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+
IGdseXBoT2Zmc2V0cyhudW1HbHlwaHMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bUdseXBoczsgKytpKSB7CisgICAgICAgIGlmIChpICsgZnJvbSA+PSBnbHlwaEJ1ZmZlci5h
ZHZhbmNlc0NvdW50KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGFkdmFu
Y2UgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpICsgZnJvbSk7CisgICAgICAgIGlmICghYWR2YW5j
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdseXBoc1tpXSA9IGdseXBoQnVm
ZmVyLmdseXBoQXQoaSArIGZyb20pOworICAgICAgICBob3Jpem9udGFsQWR2YW5jZXNbaV0gPSBh
ZHZhbmNlLT53aWR0aCgpOworICAgICAgICBnbHlwaE9mZnNldHNbaV0uYWR2YW5jZU9mZnNldCA9
IGFkdmFuY2UtPndpZHRoKCk7CisgICAgICAgIGdseXBoT2Zmc2V0c1tpXS5hc2NlbmRlck9mZnNl
dCA9IGFkdmFuY2UtPmhlaWdodCgpOworICAgIH0KKworICAgIGRvdWJsZSBzeW50aGV0aWNCb2xk
T2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9
IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CisgICAgRGlyZWN0MkQ6OmRyYXdHbHlwaHMobV9w
bGF0Zm9ybUNvbnRleHQsIERpcmVjdDJEOjpGaWxsU291cmNlKHN0YXRlLCBtX3BsYXRmb3JtQ29u
dGV4dCksIERpcmVjdDJEOjpTdHJva2VTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1Db250ZXh0KSwK
KyAgICAgICAgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIGZvbnQsIHN5bnRo
ZXRpY0JvbGRPZmZzZXQsIGdseXBocywgaG9yaXpvbnRhbEFkdmFuY2VzLCBnbHlwaE9mZnNldHMs
IHhPZmZzZXQsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yKTsKIH0KIAogSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJl
Y3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXNoZXMoY29u
c3QgRGFzaEFycmF5Jik7CiAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CiAKLSAgICBQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCogcGxhdGZvcm1Db250ZXh0KCkgeyByZXR1cm4gJm1fcGxhdGZvcm1D
b250ZXh0OyB9CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCgp
IHsgcmV0dXJuIG1fcGxhdGZvcm1Db250ZXh0OyB9CiAgICAgSUQyRDFSZW5kZXJUYXJnZXQqIHJl
bmRlclRhcmdldCgpOwogCiAgICAgSERDIG1faGRjIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5j
cHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9QYXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDkgQEAg
dm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmbwogICAgIGlmICghY3VycmVu
dFBvaW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fYWN0aXZlUGF0aCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgbV9hY3RpdmVQYXRoLT5TZXRGaWxsTW9kZShmaWxsTW9kZSk7CiAK
ICAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSB0cmFuc2Zvcm0ubWFwUG9pbnQoY3VycmVudFBv
aW50LnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCShyZXZp
c2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDI1
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnNldFBhdHRlcm4KICAgICBtX3N0cm9r
ZVN5bGVJc0RpcnR5ID0gdHJ1ZTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6
YmVnaW5EcmF3KCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJUYXJnZXQpOworICAgIG1fcmVuZGVy
VGFyZ2V0LT5CZWdpbkRyYXcoKTsKKyAgICArK2JlZ2luRHJhd0NvdW50OworfQorCit2b2lkIFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEOjplbmREcmF3KCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJU
YXJnZXQpOworICAgIEQyRDFfVEFHIGZpcnN0LCBzZWNvbmQ7CisgICAgSFJFU1VMVCBociA9IG1f
cmVuZGVyVGFyZ2V0LT5FbmREcmF3KCZmaXJzdCwgJnNlY29uZCk7CisKKyAgICBpZiAoIVNVQ0NF
RURFRChocikpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEOjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIsIGhyLCBm
aXJzdCwgc2Vjb25kKTsKKworICAgIC0tYmVnaW5EcmF3Q291bnQ7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNv
bnRleHREaXJlY3QyRC5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NhdmVkU3RhdGUoKSBj
b25zdCB7IHJldHVybiAhbV9yZW5kZXJTdGF0ZXMuaXNFbXB0eSgpOyB9CiAKKyAgICB2b2lkIGJl
Z2luRHJhdygpOworICAgIHZvaWQgZW5kRHJhdygpOworCiAgICAgZW51bSBEaXJlY3QyRExheWVy
VHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAgICAgdm9pZCBwdXNoUmVuZGVy
Q2xpcChEaXJlY3QyRExheWVyVHlwZSk7CiAgICAgdm9pZCBzZXRBY3RpdmVMYXllcihDT01QdHI8
SUQyRDFMYXllcj4mJik7CkBAIC0xMjgsNiArMTMxLDggQEAgcHJpdmF0ZToKICAgICBTdHJva2VT
dHlsZSBtX3N0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBEYXNoQXJyYXkgbV9kYXNo
ZXM7CiAKKyAgICB1bnNpZ25lZCBiZWdpbkRyYXdDb3VudCB7IDAgfTsKKwogICAgIGZsb2F0IG1f
bWl0ZXJMaW1pdCB7IDEwLjBmIH07CiAgICAgZmxvYXQgbV9kYXNoT2Zmc2V0IHsgMCB9OwogICAg
IGZsb2F0IG1fcGF0dGVybldpZHRoIHsgMS4wZiB9OwpAQCAtMTQ0LDYgKzE0OSw0NiBAQCBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiB9
OwogCitjbGFzcyBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBQbGF0
Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBjb250ZXh0LCBi
b29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkK
KyAgICAgICAgLCBtX3NhdmVBbmRSZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQuc2F2ZSgpOwor
ICAgIH0KKworICAgIH5QbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7CisgICAgICAg
IGlmIChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsK
KyAgICB9CisKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3NhdmVB
bmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9zYXZlQW5k
UmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUo
KTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKworICAgIGJvb2wg
ZGlkU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZlQW5kUmVzdG9yZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIG1fY29udGV4
dDsKKyAgICBib29sIG1fc2F2ZUFuZFJlc3RvcmUgeyBmYWxzZSB9OworfTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5kIE1pbmlC
cm93c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQw
ODI1NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICog
UGxhdGZvcm1GVFcuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaDoKKyAgICAgICAgKiBTaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6
OnJlbmRlclRhcmdldCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHA6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVS
TCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJM
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VS
TCk6CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbldpbik6CisKIDIwMTktMDgtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIHNvbWUgSVRQIHRocmVhZGlu
ZyBBU1NFUlRzIGludG8gUkVMRUFTRV9BU1NFUlRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1GVFcuY21h
a2UJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM4NyBAQAorc2V0KFdlYktpdF9PVVRQVVRfTkFNRSBXZWJL
aXQyKQorc2V0KFdlYktpdF9XZWJQcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdFdlYlByb2Nlc3Mp
CitzZXQoV2ViS2l0X05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdE5ldHdvcmtQcm9j
ZXNzKQorc2V0KFdlYktpdF9QbHVnaW5Qcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdFBsdWdpblBy
b2Nlc3MpCisKK2FkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKKworbGlzdChBUFBF
TkQgV2ViS2l0X1NPVVJDRVMKKyAgICBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCisKKyAgICBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorCisgICAgTmV0d29ya1Byb2Nlc3Mv
d2luL05ldHdvcmtQcm9jZXNzTWFpbldpbi5jcHAKKworICAgIFBsYXRmb3JtL0lQQy93aW4vQXR0
YWNobWVudFdpbi5jcHAKKyAgICBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisK
KyAgICBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
LmNwcAorCisgICAgUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisgICAgUGxhdGZvcm0vd2lu
L01vZHVsZVdpbi5jcHAKKyAgICBQbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAorCisg
ICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorCisgICAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcAorCisgICAg
U2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKKyAgICBTaGFyZWQvd2luL05h
dGl2ZVdlYktleWJvYXJkRXZlbnRXaW4uY3BwCisgICAgU2hhcmVkL3dpbi9OYXRpdmVXZWJNb3Vz
ZUV2ZW50V2luLmNwcAorICAgIFNoYXJlZC93aW4vTmF0aXZlV2ViVG91Y2hFdmVudFdpbi5jcHAK
KyAgICBTaGFyZWQvd2luL05hdGl2ZVdlYldoZWVsRXZlbnRXaW4uY3BwCisgICAgU2hhcmVkL3dp
bi9XZWJFdmVudEZhY3RvcnkuY3BwCisKKyAgICBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAor
ICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCisgICAgVUlQcm9jZXNzL0xl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisgICAgVUlQcm9jZXNzL1dlYkdyYW1tYXJE
ZXRhaWwuY3BwCisgICAgVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKKworICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKKworICAgIFVJUHJvY2Vz
cy9BUEkvQy9jdXJsL1dLUHJvdGVjdGlvblNwYWNlQ3VybC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcAorCisgICAgVUlQcm9jZXNzL0FQ
SS9DL3dpbi9XS1ZpZXcuY3BwCisKKyAgICBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0
YVN0b3JlV2luLmNwcAorCisgICAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisKKyAgICBVSVByb2Nlc3MvTGF1bmNo
ZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKKworICAgIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcAorCisgICAgVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAorCisgICAgVUlQcm9jZXNzL3dpbi9QYWdl
Q2xpZW50SW1wbC5jcHAKKyAgICBVSVByb2Nlc3Mvd2luL1RleHRDaGVja2VyV2luLmNwcAorICAg
IFVJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAKKyAgICBVSVByb2Nlc3Mv
d2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorICAgIFVJUHJvY2Vzcy93aW4vV2ViUGFnZVBy
b3h5V2luLmNwcAorICAgIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCisg
ICAgVUlQcm9jZXNzL3dpbi9XZWJQcmVmZXJlbmNlc1dpbi5jcHAKKyAgICBVSVByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NQb29sV2luLmNwcAorICAgIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKwor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAor
CisgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Ob25lLmNw
cAorCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9QbHVnaW5Qcm94eVdpbi5j
cHAKKworICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51Q2xp
ZW50V2luLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVu
dVdpbi5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorCisgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
TWFpbldpbi5jcHAKKyAgICBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKQorCisj
IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMgaXMKKyMgZXhwZWN0ZWQgaW4gRGVyaXZlZFNvdXJjZXMvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC8uCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VU
UFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKKyAgICBERVBFTkRTICR7SmF2YVNj
cmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcworICAgIENPTU1BTkQgY3AgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzICR7REVSSVZFRF9T
T1VSQ0VTX1dFQklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMKKykKKworbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElS
RUNUT1JJRVMKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy93aW4iCisgICAgIiR7
V0VCS0lUX0RJUn0vUGxhdGZvcm0vY2xhc3NpZmllciIKKyAgICAiJHtXRUJLSVRfRElSfS9QbHVn
aW5Qcm9jZXNzL3dpbiIKKyAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2Mvd2luIgorICAg
ICIke1dFQktJVF9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgorICAgICIke1dFQktJ
VF9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvciIKKyAg
ICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvUGx1Z2lucy93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0v
U2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL3dpbiIKKyAgICAiJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9DL2N1cmwiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3dpbiIK
KyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC93aW4iCisgICAgIiR7V0VCS0lU
X0RJUn0vVUlQcm9jZXNzL0FQSS93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL1BsdWdpbnMv
d2luIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy93aW4iCisgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd2luIgorICAgICIke1dFQktJVF9ESVJ9
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dpbi9ET00iCisgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93aW4iCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
biIKKyAgICAiJHtXRUJLSVRfRElSfS93aW4iCispCisKK2xpc3QoQVBQRU5EIFdlYktpdF9TWVNU
RU1fSU5DTFVERV9ESVJFQ1RPUklFUworKQorCitzZXQoV2ViS2l0Q29tbW9uSW5jbHVkZURpcmVj
dG9yaWVzICR7V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVN9KQorc2V0KFdlYktpdENvbW1vblN5
c3RlbUluY2x1ZGVEaXJlY3RvcmllcyAke1dlYktpdF9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklF
U30pCisKK2xpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUworICAgIFdlYlByb2Nlc3MvRW50
cnlQb2ludC93aW4vV2ViUHJvY2Vzc01haW4uY3BwCispCisKK2xpc3QoQVBQRU5EIE5ldHdvcmtQ
cm9jZXNzX1NPVVJDRVMKKyAgICBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3dpbi9OZXR3b3Jr
UHJvY2Vzc01haW4uY3BwCispCisKK2lmICgke0VOQUJMRV9QTFVHSU5fUFJPQ0VTU30pCisgICAg
bGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgKQorZW5kaWYgKCkKKworYWRk
X2RlZmluaXRpb25zKC1EVVNFX0RJUkVDVDJEPTEgLURVU0VfQ1VSTD0xKQorCitsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29r
aWVNYW5hZ2VyQ3VybC5jcHAKKworICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGFDdXJsLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEN1cmwuY3BwCisKKyAgICBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCisg
ICAgTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCisgICAgTmV0d29y
a1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwCisKKyAgICBTaGFy
ZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorCisgICAgU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKworICAgIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0
b3JlRGlyZWN0MkQuY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKykKKworbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xV
REVfRElSRUNUT1JJRVMKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jdXJsIgor
ICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybCIKKykKKwor
bGlzdChBUFBFTkQgV2ViS2l0X0xJQlJBUklFUworICAgIFBSSVZBVEUKKyAgICAgICAgJHtPUEVO
U1NMX0xJQlJBUklFU30KKyAgICAgICAgRDJkMS5saWIKKyAgICAgICAgRHdyaXRlCisgICAgICAg
IER4Z3VpZAorICAgICAgICBXaW5kb3dzQ29kZWNzCisgICAgICAgIG1mdXVpZC5saWIKKyAgICAg
ICAgc3RybWlpZHMubGliCispCisKK2lmIChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBs
aXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUworICAgICAgICBVSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAKKyAgICAgICAgVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisKKyAgICAgICAgVUlQcm9jZXNzL3dpbi9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKyAgICApCisKKyAgICBsaXN0KEFQUEVORCBXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mvc29j
a2V0IgorICAgICkKK2VuZGlmICgpCisKK3NldChTaGFyZWRXZWJLaXRMaWJyYXJpZXMKKyAgICAk
e1dlYktpdF9MSUJSQVJJRVN9CispCisKK1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtXZWJLaXRf
U09VUkNFU30pCisKKyMgVGVtcG9yYXJpbHkgbGlzdCBvdXQgc2hhcmVkIGhlYWRlcnMgaGVyZQor
c2V0KFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKKyAgICBTaGFyZWQvQVBJL2MvV0tB
cnJheS5oCisgICAgU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisgICAgU2hhcmVkL0FQSS9jL1dLQ2Vy
dGlmaWNhdGVJbmZvLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmgKKyAgICBT
aGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uaAorICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRl
eHRNZW51SXRlbVR5cGVzLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tEYXRhLmgKKyAgICBTaGFyZWQv
QVBJL2MvV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaAorICAgIFNoYXJlZC9BUEkvYy9XS0RlcHJl
Y2F0ZWQuaAorICAgIFNoYXJlZC9BUEkvYy9XS0RpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
CisgICAgU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5oCisgICAgU2hhcmVkL0FQSS9jL1dLRXJy
b3JSZWYuaAorICAgIFNoYXJlZC9BUEkvYy9XS0V2ZW50LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tG
aW5kT3B0aW9ucy5oCisgICAgU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuaAorICAgIFNoYXJlZC9B
UEkvYy9XS0ltYWdlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuaAorICAgIFNo
YXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmgKKyAgICBTaGFyZWQvQVBJL2MvV0tOdW1i
ZXIuaAorICAgIFNoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAorICAgIFNoYXJlZC9BUEkv
Yy9XS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tQYWdlVmlzaWJp
bGl0eVR5cGVzLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5oCisgICAg
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuaAorICAgIFNoYXJlZC9BUEkvYy9XS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisgICAgU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmgKKyAgICBT
aGFyZWQvQVBJL2MvV0tTdHJpbmdQcml2YXRlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tUeXBlLmgK
KyAgICBTaGFyZWQvQVBJL2MvV0tVUkwuaAorICAgIFNoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3Qu
aAorICAgIFNoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzLmgKKyAgICBTaGFyZWQvQVBJL2MvV0tVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZS5oCisKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuaAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVu
dC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKKyAgICBV
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5o
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLQ3JlZGVudGlhbFR5cGVzLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVm
LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZUluZm9SZWYuaAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uTWFuYWdlci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5o
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLSWNvbkRhdGFiYXNlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0xheW91dE1vZGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S01lc3NhZ2VMaXN0ZW5lci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXkuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLTmF0aXZlRXZlbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rp
b25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhUmVmLmgKKyAgICBV
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uUmVzcG9uc2VSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VDb250ZXh0TWVudUNsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlRmluZENs
aWVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUZpbmRNYXRjaGVzQ2xpZW50LmgKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlRm9ybUNsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUdyb3VwLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VMb2FkZXJDbGllbnQuaAorICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlUG9saWN5Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0
ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BsdWdpbkxvYWRQb2xpY3kuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2VUeXBlcy5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1h
bmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5oCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLVGVzdGluZ1N1cHBvcnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Rl
eHRDaGVja2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCisgICAg
VUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdw
b3J0QXR0cmlidXRlcy5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKKyAgICBVSVByb2Nl
c3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dlYktp
dDJfQy5oCisKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oCisKKyAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmgKKyAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGaWxlSGFu
ZGxlUmVmLmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVBy
aXZhdGUuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SW5pdGlhbGl6ZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUluc3BlY3Rvci5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZU5hdmlnYXRpb25BY3Rpb24uaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oCisgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFubmVyLmgKKyAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VGb3JtQ2xp
ZW50LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlR3JvdXAuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgKKyAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgKKyAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVVJQ2xpZW50LmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmgKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuaAorKQor
CisjIFdpbmRvd3Mgc3BlY2lmaWMKK2xpc3QoQVBQRU5EIFdlYktpdF9QVUJMSUNfRlJBTUVXT1JL
X0hFQURFUlMKKyAgICBTaGFyZWQvQVBJL2Mvd2luL1dLQmFzZVdpbi5oCisKKyAgICBVSVByb2Nl
c3MvQVBJL0Mvd2luL1dLVmlldy5oCispCisKK3NldChXZWJLaXRfRk9SV0FSRElOR19IRUFERVJT
X0RJUkVDVE9SSUVTCisgICAgU2hhcmVkL0FQSS9jCisKKyAgICBTaGFyZWQvQVBJL2MvY2YKKyAg
ICBTaGFyZWQvQVBJL2Mvd2luCisKKyAgICBVSVByb2Nlc3MvQVBJL0MKKyAgICBVSVByb2Nlc3Mv
QVBJL2NwcAorCisgICAgVUlQcm9jZXNzL0FQSS9DL3dpbgorCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYworKQorCitsaXN0KEFQUEVORCBXZWJLaXRfUFVCTElDX0ZSQU1FV09S
S19IRUFERVJTCisgICAgI1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uaAorCisgICAg
U2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmgKKworICAgIFVJUHJvY2Vz
cy9BUEkvQy9jdXJsL1dLUHJvdGVjdGlvblNwYWNlQ3VybC5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oCispCisKK1dFQktJVF9NQUtFX0ZPUldB
UkRJTkdfSEVBREVSUyhXZWJLaXQKKyAgICBUQVJHRVRfTkFNRSBXZWJLaXRGcmFtZXdvcmtIZWFk
ZXJzCisgICAgREVTVElOQVRJT04gJHtXZWJLaXRfRlJBTUVXT1JLX0hFQURFUlNfRElSfS9XZWJL
aXQKKyAgICBGSUxFUyAke1dlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlN9CisgICAgRkxB
VFRFTkVECispCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2
aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU2hhcmVhYmxlQml0bWFwX2gKLSNkZWZpbmUg
U2hhcmVhYmxlQml0bWFwX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CkBAIC00MCw2ICszOSwxMiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgogCisjaWYgVVNFKERJUkVDVDJE
KQoraW50ZXJmYWNlIElXSUNCaXRtYXA7CisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwpAQCAtMTI1LDYgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGNyZWF0
ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRt
YXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRo
YXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNlbGlmIFVT
RShESVJFQ1QyRCkKKyAgICBDT01QdHI8SVdJQ0JpdG1hcD4gY3JlYXRlRGlyZWN0MkRTdXJmYWNl
KCk7CisgICAgdm9pZCBzeW5jKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xNDEsMTYgKzE0OSwyMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lk
KiB0eXBlbGVzc0RhdGEsIHNpemVfdCk7CiAjZW5kaWYKIAotI2lmIFVTRShDQUlSTykKKyNpZiBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlU3VyZmFj
ZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXApOwogI2VuZGlmCiAKK3B1YmxpYzoKICAgICB2b2lk
KiBkYXRhKCkgY29uc3Q7Citwcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlvbikudW5zYWZl
R2V0KCk7IH0KIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIENvbmZpZ3VyYXRp
b24gbV9jb25maWd1cmF0aW9uOwogCisjaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lD
Qml0bWFwPiBtX2JpdG1hcDsKKyNlbmRpZgorCiAgICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBiaXRt
YXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBzaGFyZWQg
bWVtb3J5IG9iamVjdC4KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsK
IApAQCAtMTYwLDQgKzE3NCwzIEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gU2hhcmVhYmxlQml0bWFwX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRElCUGl4ZWxEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9EaXJlY3QyRE9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpcmVjdDJEVXRpbGl0
aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBhdXRvIGJpdG1hcEZvcm1hdCA9IEdVSURfV0lD
UGl4ZWxGb3JtYXQzMmJwcFBCR1JBOworCitzdGF0aWMgdW5zaWduZWQgc3RyaWRlRm9yV2lkdGgo
dW5zaWduZWQgd2lkdGgpCit7CisgICAgc3RhdGljIHVuc2lnbmVkIGJpdHNQZXJQaXhlbCA9IERp
cmVjdDJEOjpiaXRzUGVyUGl4ZWwoYml0bWFwRm9ybWF0KTsKKyAgICByZXR1cm4gYml0c1BlclBp
eGVsICogd2lkdGggLyA4OworfQorCitDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4g
U2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXplIHNp
emUsIGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIGNh
bGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uZmlndXJhdGlvbikgKiBzaXplLndpZHRoKCk7Cit9CisK
K3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBD
b25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKworc3RhdGljIGlubGluZSBDT01Q
dHI8SVdJQ0JpdG1hcD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUpCit7CisgICAgY29uc3QgdW5zaWduZWQgc3RyaWRlID0gc3Ry
aWRlRm9yV2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICByZXR1cm4gRGlyZWN0MkQ6OmNyZWF0ZURp
cmVjdDJESW1hZ2VTdXJmYWNlV2l0aERhdGEoZGF0YSwgc2l6ZSwgc3RyaWRlKTsKK30KKworc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQoKQoreworICAgIG1fYml0bWFwID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7
CisgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0ID0gRGlyZWN0MkQ6
OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAobV9iaXRtYXAuZ2V0KCkpOworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKK30KKwordm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQoreworICAgIHBhaW50
KGNvbnRleHQsIDEsIGRzdFBvaW50LCBzcmNSZWN0KTsKK30KKwordm9pZCBTaGFyZWFibGVCaXRt
YXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBh
dXRvIHN1cmZhY2UgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKKworICAgIEZsb2F0UmVjdCBk
ZXN0UmVjdChkc3RQb2ludCwgc3JjUmVjdC5zaXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0
U2NhbGVkKHNyY1JlY3QpOworICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUoc2NhbGVGYWN0b3IpOwor
CisgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIGF1dG8mIHN0
YXRlID0gY29udGV4dC5zdGF0ZSgpOworICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICpjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24oKSwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEs
IERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworfQorCitDT01QdHI8SVdJQ0JpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKQoreworICAgIG1fYml0bWFw
ID0gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEoKSwgbV9zaXplKTsKKyAgICByZWYoKTsgLy8g
QmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZVN1cmZhY2VEYXRhLgorICAgIHJldHVybiBtX2Jp
dG1hcDsKK30KKwordm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTdXJmYWNlRGF0YSh2b2lk
KiB0eXBlbGVzc0JpdG1hcCkKK3sKKyAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0
eXBlbGVzc0JpdG1hcCktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVEaXJl
Y3QyRFN1cmZhY2UuCit9CisKK1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJ
bWFnZSgpCit7CisgICAgYXV0byBzdXJmYWNlID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7Cisg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworfQorCit2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6c3luYyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBB
U1NFUlQobV9iaXRtYXApOworCisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZERyYXcoKTsKKworICAg
IFdJQ1JlY3QgcmNMb2NrID0geyAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
IH07CisKKyAgICBDT01QdHI8SVdJQ0JpdG1hcExvY2s+IGJpdG1hcERhdGFMb2NrOworICAgIEhS
RVNVTFQgaHIgPSBtX2JpdG1hcC0+TG9jaygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrUmVhZCwgJmJp
dG1hcERhdGFMb2NrKTsKKyAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICBVSU5UIGJ1
ZmZlclNpemUgPSAwOworICAgICAgICBXSUNJblByb2NQb2ludGVyIGRhdGFQdHIgPSBudWxscHRy
OworICAgICAgICBociA9IGJpdG1hcERhdGFMb2NrLT5HZXREYXRhUG9pbnRlcigmYnVmZmVyU2l6
ZSwgJmRhdGFQdHIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgIG1l
bWNweShkYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFQdHIpLCBidWZmZXJTaXpl
KTsKKyAgICB9CisKKyAgICAvLyBPbmNlIHdlIGFyZSBkb25lIG1vZGlmeWluZyB0aGUgZGF0YSwg
dW5sb2NrIHRoZSBiaXRtYXAKKyAgICBiaXRtYXBEYXRhTG9jayA9IG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9C
YWNraW5nU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKIAorI2lmIFVT
RShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQmFja2luZ1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0ICsyMywxOSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQmFja2luZ1N0
b3JlX2gKLSNkZWZpbmUgQmFja2luZ1N0b3JlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBV
U0UoQ0FJUk8pCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8uaD4K
KyNlbGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tl
bmREaXJlY3QyRC5oPgorI2VuZGlmCisKKyNpZiBVU0UoRElSRUNUMkQpCitpbnRlcmZhY2UgSUQy
RDFSZW5kZXJUYXJnZXQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MiwxNyAr
NTcsMjUgQEAgcHVibGljOgogCiAjaWYgVVNFKENBSVJPKQogICAgIHR5cGVkZWYgY2Fpcm9fdCog
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgdHlwZWRl
ZiBJRDJEMVJlbmRlclRhcmdldCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcGFpbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mKTsK
IAorI2lmIFVTRShESVJFQ1QyRCkKKyAgICBJRDJEMURDUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQoKSB7IHJldHVybiBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpOyB9CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCosIGNvbnN0
IFVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOwogCiAjaWYg
VVNFKENBSVJPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNr
ZW5kQ2Fpcm8+IGNyZWF0ZUJhY2tlbmQoKTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBjcmVhdGVC
YWNrZW5kKCk7CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwpAQCAtNzAs
OSArODMsOSBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CiAj
aWYgVVNFKENBSVJPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVC
YWNrZW5kQ2Fpcm8+IG1fYmFja2VuZDsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBtX2JhY2tlbmQ7
CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gQmFja2lu
Z1N0b3JlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTAgQEAKICNp
bmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgogCisjaWYg
VVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPGQyZDEuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCShyZXZpc2lv
biAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxh
dGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpS
ZWdpb24mIHVucGFpbnRlZFJlZ2lvbik7CiAjZW5kaWYKIAorI2lmIFVTRShESVJFQ1QyRCkKKyAg
ICBJRDJEMURDUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQoKSB7IHJldHVybiBtX2JhY2tpbmdT
dG9yZSA/IG1fYmFja2luZ1N0b3JlLT5yZW5kZXJUYXJnZXQoKSA6IG51bGxwdHI7IH0KKyNlbmRp
ZgorCiAgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJlZUNv
bnRleHQ7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9y
ZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
QmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNs
dWRlICJVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpcmVjdDJEVXRpbGl0aWVzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg+CisjaW5jbHVkZSA8ZDJkMS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVu
aXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0
ZUJhY2tlbmQoKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJh
Y2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK3Zv
aWQgQmFja2luZ1N0b3JlOjpwYWludChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHJlbmRlclRhcmdldC0+QmVnaW5EcmF3KCk7CisK
KyAgICBBU1NFUlQobV9iYWNrZW5kKTsKKworICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9wZXJ0aWVz
ID0gRDJEMTo6Qml0bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CisgICAgYXV0byBicnVzaFByb3BlcnRp
ZXMgPSBEMkQxOjpCcnVzaFByb3BlcnRpZXMoKTsKKworICAgIENPTVB0cjxJRDJEMUJpdG1hcEJy
dXNoPiBwYXR0ZXJuQnJ1c2g7CisgICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+Q3JlYXRl
Qml0bWFwQnJ1c2gobV9iYWNrZW5kLT5zdXJmYWNlKCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMs
ICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEFTU0VSVChTVUNDRUVERUQo
aHIpKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybjsKKworICAgIEQy
RDFfUkVDVF9GIGRlc3RSZWN0KHJlY3QpOworICAgIHJlbmRlclRhcmdldC0+RmlsbFJlY3Rhbmds
ZSgmZGVzdFJlY3QsIHBhdHRlcm5CcnVzaC5nZXQoKSk7CisgICAgcmVuZGVyVGFyZ2V0LT5FbmRE
cmF3KCk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFi
bGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKK3sKKyAgICBX
VEZMb2dBbHdheXMoIkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUiKTsKKyAgICBpZiAo
IW1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kID0gY3JlYXRlQmFja2VuZCgpOworCisgICAg
c2Nyb2xsKHVwZGF0ZUluZm8uc2Nyb2xsUmVjdCwgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQpOwor
CisgICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0cy4KKyAgICBJbnRQb2ludCB1cGRhdGVSZWN0
TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKKworICAg
IENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwUmVuZGVyVGFyZ2V0OworICAg
IEhSRVNVTFQgaHIgPSBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpLT5DcmVhdGVDb21wYXRpYmxl
UmVuZGVyVGFyZ2V0KCZiaXRtYXBSZW5kZXJUYXJnZXQpOworICAgIEdyYXBoaWNzQ29udGV4dCBn
cmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5
KGJpdG1hcFJlbmRlclRhcmdldC5nZXQoKSkpOworCisgICAgLy8gV2hlbiBtX3dlYlBhZ2VQcm94
eS5kcmF3c0JhY2tncm91bmQoKSBpcyBmYWxzZSwgYml0bWFwIGNvbnRhaW5zIHRyYW5zcGFyZW50
IHBhcnRzIGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgd2VicGFnZS4KKyAgICAvLyBGb3Igc3VjaCBj
YXNlLCBiaXRtYXAgbXVzdCBiZSBkcmF3biB1c2luZyBDb21wb3NpdGVDb3B5IHRvIG92ZXJ3cml0
ZSB0aGUgZXhpc3Rpbmcgc3VyZmFjZS4KKyAgICBncmFwaGljc0NvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZUNvcHkpOworCisgICAgZm9yIChjb25zdCBhdXRv
JiB1cGRhdGVSZWN0IDogdXBkYXRlSW5mby51cGRhdGVSZWN0cykgeworICAgICAgICBJbnRSZWN0
IHNyY1JlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJlY3RM
b2NhdGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKKyAgICAgICAgYml0bWFwLT5w
YWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxlRmFjdG9yKCksIHVwZGF0ZVJlY3QubG9j
YXRpb24oKSwgc3JjUmVjdCk7CisgICAgfQorCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBvdXRw
dXQ7CisgICAgaHIgPSBiaXRtYXBSZW5kZXJUYXJnZXQtPkdldEJpdG1hcCgmb3V0cHV0KTsKKyAg
ICBEMkQxX1BPSU5UXzJVIGRlc3RQb2ludCA9IEQyRDE6OlBvaW50MlUoKTsKKyAgICBhdXRvIHNp
emUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6ZShvdXRwdXQuZ2V0KCkpOworICAgIEQyRDFfUkVDVF9V
IGRlc3RSZWN0ID0gRDJEMTo6UmVjdFUoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKKyAgICBociA9IG1fYmFja2VuZC0+c3VyZmFjZSgpLT5Db3B5RnJvbUJpdG1hcCgmZGVzdFBv
aW50LCBvdXRwdXQuZ2V0KCksICZkZXN0UmVjdCk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpz
Y3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zm
c2V0KQoreworICAgIGlmIChzY3JvbGxPZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFdURkxvZ0Fsd2F5cygiQmFja2luZ1N0b3JlOjpzY3JvbGwiKTsKKworICAgIEFTU0VS
VChtX2JhY2tlbmQpOworICAgIG1fYmFja2VuZC0+c2Nyb2xsKHNjcm9sbFJlY3QsIHNjcm9sbE9m
ZnNldCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCShyZXZpc2lv
biAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJv
eHlXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViQ29yZUluc3RhbmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dN
ZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisKKyNpZiBV
U0UoQ0YpCiAjaW5jbHVkZSA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CisjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTI2NSwyMCArMjY4LDMyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ2xvc2VGcm8KIAogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JQYWdlVVJMKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1s
VVJMUmVmID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChXZWJDb3JlOjp3ZWJLaXRC
dW5kbGUoKSwgQ0ZTVFIoIk1haW4iKSwgQ0ZTVFIoImh0bWwiKSwgQ0ZTVFIoIldlYkluc3BlY3Rv
clVJIikpKTsKICAgICByZXR1cm4gQ0ZVUkxHZXRTdHJpbmcoaHRtbFVSTFJlZi5nZXQoKSk7Cisj
ZWxzZQorICAgIHJldHVybiB7IH07CisjZW5kaWYKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpCiB7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHRtbFVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwo
V2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENGU1RSKCJUZXN0IiksIENGU1RSKCJodG1sIiksIENG
U1RSKCJXZWJJbnNwZWN0b3JVSSIpKSk7CiAgICAgcmV0dXJuIENGVVJMR2V0U3RyaW5nKGh0bWxV
UkxSZWYuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCiB9CiAKIFN0cmlu
ZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpCiB7CisjaWYgVVNFKENGKQog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYmFzZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5
UmVzb3VyY2VVUkwoV2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENGU1RSKCJXZWJJbnNwZWN0b3JV
SSIpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgcmV0dXJuIENGVVJMR2V0U3RyaW5nKGJhc2VV
UkxSZWYuZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCiB9CiAKIHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDg0
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdl
YldoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
V2luLmgiCiAjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgpAQCAtNTMsMTQgKzUyLDI2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V2luZG93c1RvdWNoLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KLSNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5r
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmgiCisjZW5kaWYKKworI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlIDxj
YWlyby13aW4zMi5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisjZW5kaWYgCisKKyNpZiBVU0UoRElS
RUNUMkQpCisjaW5jbHVkZSA8V2ViQ29yZS9EaXJlY3QyRFV0aWxpdGllcy5oPgorI2VuZGlmCisK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDcx
LDYgKzQ4Miw3IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmUKICAg
ICBpZiAoYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcyo+KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwb3J0IFdlYktpdDEncyByZWN0IGNvYWxlc2NpbmcgbG9naWMgaGVy
ZS4KICAgICAgICAgUmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsKKyNpZiBVU0UoQ0FJUk8pCiAgICAg
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX3dpbjMyX3N1cmZhY2VfY3JlYXRl
KGhkYyk7CiAgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7
CiAKQEAgLTQ3OCw2ICs0OTAsMTMgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25z
dCBJbnRSZQogCiAgICAgICAgIGNhaXJvX2Rlc3Ryb3koY29udGV4dCk7CiAgICAgICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKyNlbHNlCisgICAgICAgIFJFQ1QgZDJEaXJ0eVJl
Y3QgPSBkaXJ0eVJlY3Q7CisgICAgICAgIGlmIChDT01QdHI8SUQyRDFEQ1JlbmRlclRhcmdldD4g
cmVuZGVyVGFyZ2V0ID0gZHJhd2luZ0FyZWEtPnJlbmRlclRhcmdldCgpKSB7CisgICAgICAgICAg
ICByZW5kZXJUYXJnZXQtPkJpbmREQyhoZGMsICZkMkRpcnR5UmVjdCk7CisgICAgICAgICAgICBk
cmF3aW5nQXJlYS0+cGFpbnQocmVuZGVyVGFyZ2V0LmdldCgpLCBkaXJ0eVJlY3QsIHVucGFpbnRl
ZFJlZ2lvbik7CisgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgIGF1dG8gdW5wYWludGVkUmVj
dHMgPSB1bnBhaW50ZWRSZWdpb24ucmVjdHMoKTsKICAgICAgICAgZm9yIChhdXRvJiByZWN0IDog
dW5wYWludGVkUmVjdHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNz
YWdlTGlzdGVuZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaD4KKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYK
KworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29w
U291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpAQCAtMjQxLDYgKzI0OCw3IEBAIHZvaWQgRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjptYWkKICAgICAgICAgbV9wcmV2aW91c0xheWVyVHJl
ZUhvc3QtPmNvbnRlbnRzU2l6ZUNoYW5nZWQoc2l6ZSk7CiB9CiAKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQgRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewogICAg
IGlmIChtX2xheWVyVHJlZUhvc3QpCkBAIC0yNTYsNiArMjY0LDcgQEAgdm9pZCBEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpZAogICAgIGVsc2UgaWYgKG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0KQogICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdC0+ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKFdURk1vdmUoYXR0cnMpKTsKIH0KKyNlbmRpZgogCiBHcmFwaGljc0xheWVy
RmFjdG9yeSogRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpncmFwaGljc0xheWVyRmFj
dG9yeSgpCiB7CkBAIC03NDQsNiArNzUzLDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjpkaXMKICAgICAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0cy5hcHBlbmQocmVj
dCk7CiAgICAgfQogCisjaWYgVVNFKERJUkVDVDJEKQorICAgIGJpdG1hcC0+c3luYygqZ3JhcGhp
Y3NDb250ZXh0KTsKKyNlbmRpZgorCiAgICAgLy8gTGF5b3V0IGNhbiB0cmlnZ2VyIG1vcmUgY2Fs
bHMgdG8gc2V0TmVlZHNEaXNwbGF5IGFuZCB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3MgdGhlbQog
ICAgIC8vIHVudGlsIHRoZSBVSSBwcm9jZXNzIGhhcyBwYWludGVkIHRoZSB1cGRhdGUsIHNvIHdl
IHN0b3AgdGhlIHRpbWVyIGhlcmUuCiAgICAgbV9kaXNwbGF5VGltZXIuc3RvcCgpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0UGFpbnRpbmdFbmFibGVkKGJvb2wgcGFpbnRpbmdFbmFibGVkKSBvdmVycmlkZSB7
IG1faXNQYWludGluZ0VuYWJsZWQgPSBwYWludGluZ0VuYWJsZWQ7IH07CiAgICAgdm9pZCB1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IG92ZXJyaWRlOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVS
RV9NQVBQRVIpCiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3Bl
Y3RvclVJV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMjIgQEAgYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2Fu
U2F2ZSgpCiAKIFN0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7
CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc3RyaW5nc1VSTFJlZiA9IGFk
b3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoV2ViQ29yZTo6d2ViS2l0QnVuZGxlKCksIENG
U1RSKCJsb2NhbGl6ZWRTdHJpbmdzIiksIENGU1RSKCJqcyIpLCBDRlNUUigiV2ViSW5zcGVjdG9y
VUkiKSkpOwogICAgIHJldHVybiBDRlVSTEdldFN0cmluZyhzdHJpbmdzVVJMUmVmLmdldCgpKTsK
KyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgogfQogCiBTdHJpbmcgUmVtb3RlV2ViSW5z
cGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogeworI2lmIFVTRShDRikKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHN0cmluZ3NVUkxSZWYgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291
cmNlVVJMKFdlYkNvcmU6OndlYktpdEJ1bmRsZSgpLCBDRlNUUigibG9jYWxpemVkU3RyaW5ncyIp
LCBDRlNUUigianMiKSwgQ0ZTVFIoIldlYkluc3BlY3RvclVJIikpKTsKICAgICByZXR1cm4gQ0ZV
UkxHZXRTdHJpbmcoc3RyaW5nc1VSTFJlZi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB7IH07
CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAkocmV2aXNpb24g
MjQ4NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkF1eGls
aWFyeVByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPE9i
amJhc2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTQyLDYgKzQzLDkgQEAgcHVibGljOgogCiBpbnQgV2ViUHJvY2Vzc01haW5XaW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogeworICAgIC8vIFdlYlByb2Nlc3MgdXNlcyBEaXJlY3RYCisgICAg
SFJFU1VMVCBociA9IDo6Q29Jbml0aWFsaXplRXgobnVsbHB0ciwgQ09JTklUX01VTFRJVEhSRUFE
RUQpOworICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBBdXhp
bGlhcnlQcm9jZXNzTWFpbjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBh
bmQgZXhlY3V0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MDgyNTUwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFBsYXRmb3JtRlRXLmNtYWtlOiBBZGRlZC4KKwogMjAxOS0wOC0wNiAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRml4IEFwcGxl
V2luIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI0
ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgaWYgKE1TVkMpCiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VY
RUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvdmVyc2lvbi1z
dGFtcC5wbCAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfSAkPFRBUkdFVF9GSUxF
OldlYktpdExlZ2FjeT4KICAgICAgICAgVkVSQkFUSU0pCiAKLSAgICAgaWYgKE5PVCBXVEZfUExB
VEZPUk1fV0lOX0NBSVJPKQorICAgICBpZiAoQVBQTEUpCiAgICAgICAgICBhZGRfc3ViZGlyZWN0
b3J5KHdpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zKQogICAgICBlbmRpZiAoKQogZW5kaWYg
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybUZUVy5jbWFrZQkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDY4IEBACithZGRfZGVmaW5pdGlvbnMoLURVU0VfRElSRUNUMkQ9MSAtRFVT
RV9DVVJMPTEgLURXRUJLSVRfRVhQT1JUUz0xKQorbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X1BS
SVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1dFQktJVF9MSUJSQVJJRVNfRElSfS9p
bmNsdWRlIgorKQorbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X1NPVVJDRVNfQ2xhc3NlcworICAg
IHdpbi9XZWJEb3dubG9hZENVUkwuY3BwCisgICAgd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyQ1VSTC5jcHAKKykKK2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9MSUJSQVJJ
RVMKKyAgICAke09QRU5TU0xfTElCUkFSSUVTfQorICAgIFBSSVZBVEUgbWZ1dWlkLmxpYgorICAg
IFBSSVZBVEUgc3RybWlpZHMubGliCisgICAgUFJJVkFURSAke0xJQlhNTDJfTElCUkFSSUVTfQor
ICAgIFBSSVZBVEUgJHtMSUJYU0xUX0xJQlJBUklFU30KKyAgICBQUklWQVRFICR7U1FMSVRFX0xJ
QlJBUklFU30KKyAgICBQUklWQVRFICR7WkxJQl9MSUJSQVJJRVN9CispCisKK2FkZF9jdXN0b21f
Y29tbWFuZCgKKyAgICBPVVRQVVQgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
V2ViS2l0VmVyc2lvbi5oCisgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCS0lUTEVHQUNZX0RJUn0v
c2NyaXB0cy9nZW5lcmF0ZS13ZWJraXR2ZXJzaW9uLnBsCisgICAgREVQRU5EUyAke1dFQktJVExF
R0FDWV9ESVJ9L21hYy9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCisgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRMRUdBQ1lfRElSfS9zY3JpcHRzL2dlbmVyYXRl
LXdlYmtpdHZlcnNpb24ucGwgLS1jb25maWcgJHtXRUJLSVRMRUdBQ1lfRElSfS9tYWMvQ29uZmln
dXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZyAtLW91dHB1dERpciAke1dlYktpdExlZ2FjeV9ERVJJ
VkVEX1NPVVJDRVNfRElSfQorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5
X1NPVVJDRVMgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0VmVyc2lv
bi5oKQorCitsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9S
SUVTCisgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlIgorICAgICIk
e0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0Q29yZSIKKyAg
ICAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUvV2ViQ29yZSIKKyAgICAi
JHtXRUJLSVRMRUdBQ1lfRElSfS93aW4iCisgICAgIiR7V0VCS0lUTEVHQUNZX0RJUn0vd2luL3Bs
dWdpbnMiCisgICAgIiR7V0VCS0lUTEVHQUNZX0RJUn0vd2luL1dlYkNvcmVTdXBwb3J0IgorICAg
ICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbmNsdWRlIgorICAgICIke1dl
YktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzIgorKQorCitsaXN0KEFQ
UEVORCBXZWJLaXRMZWdhY3lfSU5DTFVERVMKKyAgICB3aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuaAorICAgIHdpbi9DT01FbnVtVmFyaWFudC5oCisgICAgd2luL0NPTVByb3BlcnR5QmFnLmgK
KyAgICB3aW4vQ09NVmFyaWFudFNldHRlci5oCisgICAgd2luL0NvZGVBbmFseXNpc0NvbmZpZy5o
CisgICAgd2luL0RPTUNTU0NsYXNzZXMuaAorICAgIHdpbi9ET01Db3JlQ2xhc3Nlcy5oCisgICAg
d2luL0RPTUV2ZW50c0NsYXNzZXMuaAorICAgIHdpbi9ET01IVE1MQ2xhc3Nlcy5oCisgICAgd2lu
L0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgKKyAgICB3aW4vRGVmYXVsdFBvbGljeURlbGVnYXRl
LmgKKyAgICB3aW4vRm9yRWFjaENvQ2xhc3MuaAorICAgIHdpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmgKKyAgICB3aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKyAgICB3aW4vTWVtb3J5U3Ry
ZWFtLmgKKyAgICB3aW4vUHJvZ0lETWFjcm9zLmgKKyAgICB3aW4vV2ViQWN0aW9uUHJvcGVydHlC
YWcuaAorICAgIHdpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmgKKyAgICB3aW4vV2ViQXJjaGl2ZS5o
CisgICAgd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisgICAgd2luL1dlYkNhY2hlLmgKKyAgICB3
aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorICAgIHdpbi9XZWJDb3JlU3RhdGlzdGlj
cy5oCisgICAgd2luL1dlYkRhdGFTb3VyY2UuaAorICAgIHdpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
aAorICAgIHdpbi9XZWJEb2N1bWVudExvYWRlci5oCisgICAgd2luL1dlYkRvd25sb2FkLmgKKyAg
ICB3aW4vV2ViRHJvcFNvdXJjZS5oCisgICAgd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5oCisg
ICAgd2luL1dlYkVycm9yLmgKKyAgICB3aW4vV2ViRnJhbWUuaAorICAgIHdpbi9XZWJGcmFtZVBv
bGljeUxpc3RlbmVyLmgKKyAgICB3aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCisg
ICAgd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorICAgIHdpbi9XZWJIVE1MUmVwcmVzZW50
YXRpb24uaAorICAgIHdpbi9XZWJIaXN0b3J5LmgKKyAgICB3aW4vV2ViSGlzdG9yeUl0ZW0uaAor
ICAgIHdpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmgKKyAgICB3aW4vV2ViS2l0Q09NQVBJLmgK
KyAgICB3aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmgKKyAgICB3aW4vV2ViS2l0RExMLmgKKyAgICB3
aW4vV2ViS2l0R3JhcGhpY3MuaAorICAgIHdpbi9XZWJLaXRMb2dnaW5nLmgKKyAgICB3aW4vV2Vi
S2l0U3RhdGlzdGljcy5oCisgICAgd2luL1dlYktpdFN0YXRpc3RpY3NQcml2YXRlLmgKKyAgICB3
aW4vV2ViS2l0U3lzdGVtQml0cy5oCisgICAgd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5oCisg
ICAgd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmgKKyAgICB3aW4vV2ViTmF2aWdhdGlvbkRhdGEu
aAorICAgIHdpbi9XZWJOb3RpZmljYXRpb24uaAorICAgIHdpbi9XZWJOb3RpZmljYXRpb25DZW50
ZXIuaAorICAgIHdpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorICAgIHdpbi9XZWJQcmVm
ZXJlbmNlcy5oCisgICAgd2luL1dlYlJlc291cmNlLmgKKyAgICB3aW4vV2ViU2NyaXB0T2JqZWN0
LmgKKyAgICB3aW4vV2ViU2NyaXB0V29ybGQuaAorICAgIHdpbi9XZWJTZWN1cml0eU9yaWdpbi5o
CisgICAgd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmgKKyAgICB3aW4vV2ViVGV4dFJlbmRlcmVy
LmgKKyAgICB3aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAorICAgIHdpbi9XZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5oCisgICAgd2luL1dlYlVSTENyZWRlbnRp
YWwuaAorICAgIHdpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuaAorICAgIHdpbi9XZWJVUkxSZXNw
b25zZS5oCisgICAgd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oCisgICAgd2luL1dlYlZp
ZXcuaAorICAgIHdpbi9XZWJXb3JrZXJzUHJpdmF0ZS5oCispCisKK2xpc3QoQVBQRU5EIFdlYktp
dExlZ2FjeV9TT1VSQ0VTX0NsYXNzZXMKKyAgICB3aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisgICAg
d2luL0FjY2Vzc2libGVEb2N1bWVudC5jcHAKKyAgICB3aW4vQWNjZXNzaWJsZUltYWdlLmNwcAor
ICAgIHdpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCisgICAgd2luL0JhY2tGb3J3YXJkTGlzdC5j
cHAKKyAgICB3aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCisgICAgd2luL0RPTUNTU0Ns
YXNzZXMuY3BwCisgICAgd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorICAgIHdpbi9ET01FdmVudHND
bGFzc2VzLmNwcAorICAgIHdpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKKyAgICB3aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuY3BwCisgICAgd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKyAg
ICB3aW4vRm9yRWFjaENvQ2xhc3MuY3BwCisgICAgd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCisgICAgd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKyAgICB3aW4vTWVtb3J5U3Ry
ZWFtLmNwcAorICAgIHdpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKyAgICB3aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAKKyAgICB3aW4vV2ViQXJjaGl2ZS5jcHAKKyAgICB3aW4vV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcAorICAgIHdpbi9XZWJDYWNoZS5jcHAKKyAgICB3aW4vV2ViQ29yZVN0
YXRpc3RpY3MuY3BwCisgICAgd2luL1dlYkRhdGFTb3VyY2UuY3BwCisgICAgd2luL1dlYkRhdGFi
YXNlTWFuYWdlci5jcHAKKyAgICB3aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisgICAgd2luL1dl
YkRvd25sb2FkLmNwcAorICAgIHdpbi9XZWJEcm9wU291cmNlLmNwcAorICAgIHdpbi9XZWJFbGVt
ZW50UHJvcGVydHlCYWcuY3BwCisgICAgd2luL1dlYkVycm9yLmNwcAorICAgIHdpbi9XZWJGcmFt
ZS5jcHAKKyAgICB3aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKyAgICB3aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKyAgICB3aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAKKyAgICB3aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorICAgIHdpbi9XZWJIaXN0
b3J5LmNwcAorICAgIHdpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKyAgICB3aW4vV2ViSW5zcGVjdG9y
LmNwcAorICAgIHdpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAorICAgIHdpbi9XZWJLaXRD
T01BUEkuY3BwCisgICAgd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKyAgICB3aW4vV2ViS2l0
RExMLmNwcAorICAgIHdpbi9XZWJLaXRMb2dnaW5nLmNwcAorICAgIHdpbi9XZWJLaXRNZXNzYWdl
TG9vcC5jcHAKKyAgICB3aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKyAgICB3aW4vV2ViS2l0U3lz
dGVtQml0cy5jcHAKKyAgICB3aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorICAgIHdpbi9X
ZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKyAgICB3aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisg
ICAgd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwCisgICAgd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAK
KyAgICB3aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorICAgIHdpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKKyAgICB3aW4vV2ViUmVzb3VyY2UuY3BwCisgICAgd2luL1dlYlNjcmlwdE9iamVjdC5j
cHAKKyAgICB3aW4vV2ViU2NyaXB0V29ybGQuY3BwCisgICAgd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcAorICAgIHdpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKKyAgICB3aW4vV2ViVGV4dFJl
bmRlcmVyLmNwcAorICAgIHdpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKyAg
ICB3aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisgICAgd2luL1dl
YlVSTENyZWRlbnRpYWwuY3BwCisgICAgd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKyAg
ICB3aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisgICAgd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKKyAgICB3aW4vV2ViVmlldy5jcHAKKyAgICB3aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3Bw
CisKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKyAgICB3aW4vcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZVdpbi5jcHAKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5EZWJ1Zy5jcHAKKyAg
ICB3aW4vcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAorICAgIHdpbi9wbHVn
aW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uY3BwCisgICAgd2luL3BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcAorICAgIHdp
bi9wbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKyAgICB3aW4vcGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorICAgIHdpbi9wbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisgICAgd2luL3BsdWdpbnMvbnBh
cGkuY3BwCisKKyAgICB3aW4vc3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKQorCits
aXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfU09VUkNFU19XZWJDb3JlU3VwcG9ydAorICAgIHdpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKyAgICB3aW4v
V2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0
L0VtYmVkZGVkV2lkZ2V0LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorICAgIHdpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcAorICAgIHdpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
CisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKyAgICB3aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorICAg
IHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisgICAgd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
RGVsZWdhdGUuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRl
LmgKKyAgICB3aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorICAg
IHdpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorICAgIHdpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisgICAgd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2l0ZWRMaW5rU3RvcmUuY3BwCisgICAgd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaAorKQorCitpZiAoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA4KQorICAgIGVuYWJs
ZV9sYW5ndWFnZShBU01fTUFTTSkKKyAgICBpZiAoTVNWQykKKyAgICAgICAgc2V0KE1BU01fRVhF
Q1VUQUJMRSBtbDY0KQorICAgICAgICBzZXQoTUFTTV9GTEFHUyAvYyAvRm8pCisgICAgICAgIGFk
ZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgICAgIE9VVFBVVCAke1dlYktpdExlZ2FjeV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9QYWludEhvb2tzLm9iagorICAgICAgICAgICAgTUFJTl9ERVBFTkRF
TkNZIHdpbi9wbHVnaW5zL1BhaW50SG9va3MuYXNtCisgICAgICAgICAgICBDT01NQU5EICR7TUFT
TV9FWEVDVVRBQkxFfSAke01BU01fRkxBR1N9CisgICAgICAgICAgICAgICAgJHtXZWJLaXRMZWdh
Y3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vUGFpbnRIb29rcy5vYmoKKyAgICAgICAgICAgICAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2luL3BsdWdpbnMvUGFpbnRIb29rcy5hc20KKyAg
ICAgICAgICAgIFZFUkJBVElNKQorICAgICAgICBsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfU09V
UkNFUworICAgICAgICAgICAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vUGFp
bnRIb29rcy5vYmoKKyAgICAgICAgKQorICAgIGVsc2UgKCkKKyAgICAgICAgbGlzdChBUFBFTkQg
V2ViS2l0TGVnYWN5X1NPVVJDRVMKKyAgICAgICAgICAgIHdpbi9wbHVnaW5zL1BhaW50SG9va3Mu
YXNtCisgICAgICAgICkKKyAgICBlbmRpZiAoKQorZW5kaWYgKCkKKworaWYgKENPTVBJTEVSX0lT
X0dDQ19PUl9DTEFORykKKyAgICBXRUJLSVRfQUREX1RBUkdFVF9DWFhfRkxBR1MoV2ViS2l0TGVn
YWN5IC1Xbm8tb3ZlcmxvYWRlZC12aXJ0dWFsKQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgV2Vi
S2l0TGVnYWN5X1NPVVJDRVMgJHtXZWJLaXRMZWdhY3lfSU5DTFVERVN9ICR7V2ViS2l0TGVnYWN5
X1NPVVJDRVNfQ2xhc3Nlc30gJHtXZWJLaXRMZWdhY3lfU09VUkNFU19XZWJDb3JlU3VwcG9ydH0p
CisKK3NvdXJjZV9ncm91cChJbmNsdWRlcyBGSUxFUyAke1dlYktpdExlZ2FjeV9JTkNMVURFU30p
Citzb3VyY2VfZ3JvdXAoQ2xhc3NlcyBGSUxFUyAke1dlYktpdExlZ2FjeV9TT1VSQ0VTX0NsYXNz
ZXN9KQorc291cmNlX2dyb3VwKFdlYkNvcmVTdXBwb3J0IEZJTEVTICR7V2ViS2l0TGVnYWN5X1NP
VVJDRVNfV2ViQ29yZVN1cHBvcnR9KQorCisjIEJ1aWxkIHRoZSBDT00gaW50ZXJmYWNlOgorbWFj
cm8oR0VORVJBVEVfSU5URVJGQUNFIF9pbmZpbGUgX2RlZmluZXMgX2RlcGVuZHMpCisgICAgZ2V0
X2ZpbGVuYW1lX2NvbXBvbmVudChfZmlsZXdlICR7X2luZmlsZX0gTkFNRV9XRSkKKyAgICBhZGRf
Y3VzdG9tX2NvbW1hbmQoCisgICAgICAgIE9VVFBVVCAgJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy8ke19maWxld2V9LmgKKyAgICAgICAgTUFJTl9ERVBFTkRF
TkNZICR7X2luZmlsZX0KKyAgICAgICAgREVQRU5EUyAke19kZXBlbmRzfQorICAgICAgICBDT01N
QU5EIG1pZGwuZXhlIC9JICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2luL0ludGVyZmFj
ZXMiIC9JICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2luL0ludGVyZmFjZXMvQWNjZXNz
aWJsZTIiIC9JICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbmNsdWRlIiAv
SSAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dpbiIgL1dYIC9jaGFyIHNpZ25lZCAvZW52
IHdpbjMyIC90bGIgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS8ke19maWxld2V9
LnRsYiIgL291dCAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNl
cyIgL2ggIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvJHtf
ZmlsZXdlfS5oIiAvaWlkICIke19maWxld2V9X2kuYyIgJHtfZGVmaW5lc30gIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS8ke19pbmZpbGV9IgorICAgICAgICBVU0VTX1RFUk1JTkFMIFZFUkJB
VElNKQorICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke1dlYktpdExlZ2FjeV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzLyR7X2ZpbGV3ZX0uaCBQUk9QRVJUSUVTIEdFTkVS
QVRFRCBUUlVFKQorICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke1dlYktpdExlZ2Fj
eV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzLyR7X2ZpbGV3ZX1faS5jIFBST1BFUlRJ
RVMgR0VORVJBVEVEIFRSVUUpCitlbmRtYWNybygpCisKK3NldChNSURMX0RFRklORVMgL0RcIFwi
X19QUk9EVUNUSU9OX189MDFcIikKKworc2V0KFdFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVT
CisgICAgd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZUNvbXBhcmFibGUuaWRsCisgICAgd2luL0lu
dGVyZmFjZXMvRE9NQ1NTLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0RPTUNvcmUuaWRsCisgICAg
d2luL0ludGVyZmFjZXMvRE9NRXZlbnRzLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0RPTUV4dGVu
c2lvbnMuaWRsCisgICAgd2luL0ludGVyZmFjZXMvRE9NSFRNTC5pZGwKKyAgICB3aW4vSW50ZXJm
YWNlcy9ET01Qcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0RPTVJhbmdlLmlkbAorICAg
IHdpbi9JbnRlcmZhY2VzL0RPTVdpbmRvdy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JR0VOX0RP
TU9iamVjdC5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViQXJjaGl2ZS5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9JV2ViQmFja0ZvcndhcmRMaXN0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJDYWNo
ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViQ29yZVN0YXRpc3RpY3MuaWRsCisgICAgd2lu
L0ludGVyZmFjZXMvSVdlYkRhdGFTb3VyY2UuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkRh
dGFiYXNlTWFuYWdlci5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRG9jdW1lbnQuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvSVdlYkRvd25sb2FkLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJFZGl0aW5nRGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkVtYmVkZGVkVmll
dy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRXJyb3IuaWRsCisgICAgd2luL0ludGVyZmFj
ZXMvSVdlYkVycm9yUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRm9ybURlbGVn
YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZS5pZGwKKyAgICB3aW4vSW50ZXJm
YWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVM
b2FkRGVsZWdhdGVQcml2YXRlMi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2
YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVZpZXcuaWRsCisgICAgd2luL0lu
dGVyZmFjZXMvSVdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaWRsCisgICAgd2luL0ludGVy
ZmFjZXMvSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24uaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdl
Ykdlb2xvY2F0aW9uUHJvdmlkZXIuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSFRUUFVSTFJlc3BvbnNlLmlk
bAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5LmlkbAorICAgIHdpbi9JbnRlcmZhY2Vz
L0lXZWJIaXN0b3J5RGVsZWdhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJ
dGVtLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZh
Y2VzL0lXZWJJbnNwZWN0b3IuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkluc3BlY3RvclBy
aXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYkphdmFTY3JpcHRDb2xsZWN0b3IuaWRs
CisgICAgd2luL0ludGVyZmFjZXMvSVdlYktpdFN0YXRpc3RpY3MuaWRsCisgICAgd2luL0ludGVy
ZmFjZXMvSVdlYk11dGFibGVVUkxSZXF1ZXN0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJN
dXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYk5hdmln
YXRpb25EYXRhLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJOb3RpZmljYXRpb24uaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvSVdlYk5vdGlmaWNhdGlvbkNlbnRlci5pZGwKKyAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIuaWRsCisgICAgd2luL0ludGVyZmFjZXMv
SVdlYlBvbGljeURlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJQb2xpY3lEZWxl
Z2F0ZVByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlkbAor
ICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCisgICAgd2luL0lu
dGVyZmFjZXMvSVdlYlJlc291cmNlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViUmVzb3VyY2VMb2FkRGVs
ZWdhdGVQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJSZXNvdXJjZUxvYWREZWxl
Z2F0ZVByaXZhdGUyLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJTY3JpcHRPYmplY3QuaWRs
CisgICAgd2luL0ludGVyZmFjZXMvSVdlYlNjcmlwdFdvcmxkLmlkbAorICAgIHdpbi9JbnRlcmZh
Y2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViU2VyaWFs
aXplZEpTVmFsdWUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlNlcmlhbGl6ZWRKU1ZhbHVl
UHJpdmF0ZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVGV4dFJlbmRlcmVyLmlkbAorICAg
IHdpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJVSURlbGVnYXRlMi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVUkxSZXF1ZXN0LmlkbAorICAgIHdpbi9JbnRl
cmZhY2VzL0lXZWJVUkxSZXNwb25zZS5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVz
cG9uc2VQcml2YXRlLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJVbmRvTWFuYWdlci5pZGwK
KyAgICB3aW4vSW50ZXJmYWNlcy9JV2ViVW5kb1RhcmdldC5pZGwKKyAgICB3aW4vSW50ZXJmYWNl
cy9JV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJW
aWV3LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwKKyAgICB3aW4v
SW50ZXJmYWNlcy9JV2ViV29ya2Vyc1ByaXZhdGUuaWRsCisgICAgd2luL0ludGVyZmFjZXMvSmF2
YVNjcmlwdENvcmVBUElUeXBlcy5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCisg
ICAgd2luL0ludGVyZmFjZXMvV2ViU2Nyb2xsYmFyVHlwZXMuaWRsCisKKyAgICB3aW4vSW50ZXJm
YWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nl
c3NpYmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUy
L0FjY2Vzc2libGVBcHBsaWNhdGlvbi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGVSZWxhdGlvbi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlU3RhdGVzLmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0Fj
Y2Vzc2libGVUZXh0LmlkbAorICAgIHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2li
bGVUZXh0Mi5pZGwKKyAgICB3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9JQTJDb21tb25UeXBl
cy5pZGwKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vaW5jbHVkZS9h
dXRvdmVyc2lvbi5oIgorKQorCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7V2Vi
S2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L2luY2x1ZGUvYXV0b3ZlcnNpb24uaAorICAg
IFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfU09VUkNFX0RJUn0KKyAgICBDT01NQU5EICR7UEVS
TF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1dG8t
dmVyc2lvbi5wbCAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfQorICAgIFZFUkJB
VElNKQorCitHRU5FUkFURV9JTlRFUkZBQ0Uod2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbCAke01J
RExfREVGSU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRF
X0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlQXBwbGljYXRp
b24uaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RFUEVOREVOQ0lFU30i
KQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2li
bGUyLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9
IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3Np
YmxlMl8yLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJ
RVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nl
c3NpYmxlUmVsYXRpb24uaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lfSURMX0RF
UEVOREVOQ0lFU30iKQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsICR7TUlETF9ERUZJTkVTfSAiJHtXRUJLSVRMRUdBQ1lf
SURMX0RFUEVOREVOQ0lFU30iKQorR0VORVJBVEVfSU5URVJGQUNFKHdpbi9JbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbCAke01JRExfREVGSU5FU30gIiR7V0VCS0lUTEVH
QUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0LmlkbCAke01JRExfREVGSU5FU30g
IiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9IikKK0dFTkVSQVRFX0lOVEVSRkFDRSh3
aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlVGV4dC5pZGwgJHtNSURMX0RFRklO
RVN9ICIke1dFQktJVExFR0FDWV9JRExfREVQRU5ERU5DSUVTfSIpCitHRU5FUkFURV9JTlRFUkZB
Q0Uod2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVRleHQyLmlkbCAke01JRExf
REVGSU5FU30gIiR7V0VCS0lUTEVHQUNZX0lETF9ERVBFTkRFTkNJRVN9IikKKworYWRkX2xpYnJh
cnkoV2ViS2l0TGVnYWN5R1VJRCBTVEFUSUMKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9XZWJLaXQuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQXBwbGljYXRpb24uaCIKKyAg
ICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlMi5oIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyXzIuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlUmVsYXRpb24uaCIKKyAgICAiJHtXZWJLaXRMZWdh
Y3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlU3RhdGVzLmgiCisg
ICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvSUEyQ29t
bW9uVHlwZXMuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0LmgiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RF
UklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZVRleHQuaCIKKyAgICAiJHtX
ZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlVGV4
dDIuaCIKKyAgICAiJHtXZWJLaXRMZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNl
cy9XZWJLaXRfaS5jIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bnRlcmZhY2VzL0FjY2Vzc2libGVBcHBsaWNhdGlvbl9pLmMiCisgICAgIiR7V2ViS2l0TGVnYWN5
X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZTJfaS5jIgorICAgICIk
e1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGUy
XzJfaS5jIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZh
Y2VzL0FjY2Vzc2libGVSZWxhdGlvbl9pLmMiCisgICAgIiR7V2ViS2l0TGVnYWN5X0RFUklWRURf
U09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZUVkaXRhYmxlVGV4dF9pLmMiCisgICAg
IiR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJs
ZVRleHRfaS5jIgorICAgICIke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRl
cmZhY2VzL0FjY2Vzc2libGVUZXh0Ml9pLmMiCispCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2Vi
S2l0TGVnYWN5R1VJRCBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FIFdlYktpdEdVSUQke0RFQlVHX1NV
RkZJWH0pCisKK2xpc3QoQVBQRU5EIFdlYktpdExlZ2FjeV9MSUJSQVJJRVMKKyAgICBQUklWQVRF
IENvbWN0bDMyCisgICAgUFJJVkFURSBDb21zdXBwCisgICAgUFJJVkFURSBDcnlwdDMyCisgICAg
UFJJVkFURSBEMmQxCisgICAgUFJJVkFURSBEd3JpdGUKKyAgICBQUklWQVRFIER4Z3VpZAorICAg
IFBSSVZBVEUgSXBobHBhcGkKKyAgICBQUklWQVRFIFBzYXBpCisgICAgUFJJVkFURSBScGNydDQK
KyAgICBQUklWQVRFIFNobHdhcGkKKyAgICBQUklWQVRFIFVzcDEwCisgICAgUFJJVkFURSBWZXJz
aW9uCisgICAgUFJJVkFURSBXZWJLaXRHVUlEJHtERUJVR19TVUZGSVh9CisgICAgUFJJVkFURSBX
aW5kb3dzQ29kZWNzCisgICAgUFJJVkFURSBXaW5tbQorKQorCitzZXQoQ01BS0VfU0hBUkVEX0xJ
TktFUl9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAvU1VCU1lTVEVNOldJTkRP
V1MiKQorc2V0KENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFH
U30gL1NVQlNZU1RFTTpXSU5ET1dTIikKKworIyBXZSBuZWVkIHRoZSB3ZWJraXQgbGlicmFyaWVz
IHRvIGNvbWUgYmVmb3JlIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaWJyYXJpZXMgdG8gcHJldmVudCBz
eW1ib2wgY29uZmxpY3RzIHdpdGggdXVpZC5saWIuCisjIFRvIGRvIHRoaXMgd2UgYWRkIHN5c3Rl
bSBkZWZhdWx0IGxpYnMgYXMgd2Via2l0IGxpYnMgYW5kIHplcm8gb3V0IHN5c3RlbSBkZWZhdWx0
IGxpYnMuCitzdHJpbmcoUkVQTEFDRSAiICIgIlw7IiBDWFhfTElCUyAke0NNQUtFX0NYWF9TVEFO
REFSRF9MSUJSQVJJRVN9KQorbGlzdChBUFBFTkQgV2ViS2l0TGVnYWN5X0xJQlJBUklFUyAke0NY
WF9MSUJTfSkKK3NldChDTUFLRV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTICIiKQorCitzZXQoQ01B
S0VfU0hBUkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAke01T
VkNfUlVOVElNRV9MSU5LRVJfRkxBR1N9IikKKworIyBJZiB0aGlzIGRpcmVjdG9yeSBpc24ndCBj
cmVhdGVkIGJlZm9yZSBtaWRsIHJ1bnMgYW5kIGF0dGVtcHRzIHRvIG91dHB1dCBXZWJLaXQudGxi
LAorIyBJdCBmYWlscyB3aXRoIGFuIHVudXN1YWwgZXJyb3IgLSBtaWRsIGZhaWxlZCAtIGZhaWxl
ZCB0byBzYXZlIGFsbCBjaGFuZ2VzCitmaWxlKE1BS0VfRElSRUNUT1JZICR7Q01BS0VfUlVOVElN
RV9PVVRQVVRfRElSRUNUT1JZfSkKK2ZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtXZWJLaXRMZWdhY3lf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJmYWNlcykKKworc2V0KFdlYktpdExlZ2FjeV9QVUJM
SUNfRlJBTUVXT1JLX0hFQURFUlMKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGUyLmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGUyXzIuaAorICAgICR7V2ViS2l0TGVn
YWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0Fj
Y2Vzc2libGVFZGl0YWJsZVRleHQuaAorICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNF
U19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJsZVJlbGF0aW9uLmgKKyAgICAke1dlYktpdExlZ2Fj
eV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL0FjY2Vzc2libGVTdGF0ZXMuaAorICAg
ICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFjZXMvQWNjZXNzaWJs
ZVRleHQuaAorICAgICR7V2ViS2l0TGVnYWN5X0RFUklWRURfU09VUkNFU19ESVJ9L0ludGVyZmFj
ZXMvQWNjZXNzaWJsZVRleHQyLmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9JbnRlcmZhY2VzL0lBMkNvbW1vblR5cGVzLmgKKyAgICAke1dlYktpdExlZ2FjeV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9JbnRlcmZhY2VzL1dlYktpdC5oCisKKyAgICB3aW4vQWNjZXNzaWJs
ZUJhc2UuaAorICAgIHdpbi9BY2Nlc3NpYmxlRG9jdW1lbnQuaAorICAgIHdpbi9DRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZy5oCisgICAgd2luL1dlYkRhdGFTb3VyY2UuaAorICAgIHdpbi9XZWJGcmFt
ZS5oCisgICAgd2luL1dlYktpdENPTUFQSS5oCispCisKK1dFQktJVF9NQUtFX0ZPUldBUkRJTkdf
SEVBREVSUyhXZWJLaXRMZWdhY3lHVUlECisgICAgVEFSR0VUX05BTUUgV2ViS2l0TGVnYWN5RnJh
bWV3b3JrSGVhZGVycworICAgIERFU1RJTkFUSU9OICR7V2ViS2l0TGVnYWN5X0ZSQU1FV09SS19I
RUFERVJTX0RJUn0vV2ViS2l0TGVnYWN5CisgICAgRklMRVMgJHtXZWJLaXRMZWdhY3lfUFVCTElD
X0ZSQU1FV09SS19IRUFERVJTfQorICAgIEZMQVRURU5FRAorKQorYWRkX2RlcGVuZGVuY2llcyhX
ZWJLaXRMZWdhY3lGcmFtZXdvcmtIZWFkZXJzIFdlYkNvcmVQcml2YXRlRnJhbWV3b3JrSGVhZGVy
cykKKworc2V0KFdlYktpdExlZ2FjeV9PVVRQVVRfTkFNRQorICAgIFdlYktpdCR7REVCVUdfU1VG
RklYfQorKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NDAx
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTktMDgtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0ZUV10gR2V0IFdlYktpdCwgV2ViS2l0MiwgYW5kIE1pbmlCcm93
c2VyIGJ1aWxkaW5nIGFuZCBleGVjdXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQwODI1
NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogQWNj
ZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9sb2NhbGUpOgor
ICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKENvbnZlcnRD
RlR5cGVUb1ZhcmlhbnQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OlJlYWQp
OgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToKKyAgICAgICAgKiBD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oOgorICAgICAgICAqIENPTVByb3BlcnR5QmFnLmg6Cisg
ICAgICAgIChIYXNoVHlwZT46OlJlYWQpOgorICAgICAgICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0
eUluZm8pOgorICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgICogTWFy
c2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6Cisg
ICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQXJjaGl2ZS5oOgorICAgICAg
ICAqIFdlYkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAg
ICogV2ViS2l0Q09NQVBJLmNwcDoKKyAgICAgICAgKiBXZWJLaXRDT01BUEkuaDoKKyAgICAgICAg
KiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6Cisg
ICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmg6CisgICAgICAgICogV2ViTXV0YWJsZVVS
TFJlcXVlc3QuY3BwOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAqIFdlYlZp
ZXcuaDoKKwogMjAxOS0wNy0yOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255
LmNvbT4KIAogICAgICAgICBbV2luXVtXSzFdIENhbid0IGNoYW5nZSBXZWIgSW5zcGVjdG9yIGZy
b250ZW5kIGhlaWdodCBpbiBoaWdoIERQSQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0FjY2Vzc2libGVCYXNlLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2
LDExIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9sb2NhbGUoX091dF8KICAgICBpZiAo
IW1fb2JqZWN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCisjaWYgVVNFKENGKQogICAgIGxv
Y2FsZS0+bGFuZ3VhZ2UgPSBCU3RyaW5nKG1fb2JqZWN0LT5sYW5ndWFnZSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpLnJlbGVhc2UoKTsKKyNlbHNlCisgICAgbG9jYWxlLT5sYW5ndWFnZSA9IEJT
dHJpbmcobV9vYmplY3QtPmxhbmd1YWdlKCkpLnJlbGVhc2UoKTsKKyNlbmRpZgogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFn
PiBDRkRpY3RpbwogICAgIHJldHVybiBuZXcgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc7CiB9CiAK
KyNpZiBVU0UoQ0YpCiB2b2lkIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpzZXREaWN0aW9uYXJ5
KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKIHsKICAgICBtX2RpY3Rpb25hcnkg
PSBkaWN0aW9uYXJ5OwpAQCAtNTcsNiArNTgsNyBAQCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIENG
RGljdGlvbmFyeVByb3BlCiB7CiAgICAgcmV0dXJuIG1fZGljdGlvbmFyeS5nZXQoKTsKIH0KKyNl
bmRpZgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTk2LDYgKzk4LDcgQEAgVUxPTkcg
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OlJlbGVhc2UoKQogCiBzdGF0aWMgYm9vbCBDb252ZXJ0
Q0ZUeXBlVG9WYXJpYW50KFZBUklBTlQqIHBWYXIsIHZvaWQqIGNmT2JqKQogeworI2lmIFVTRShD
RikKICAgICBpZiAoIWNmT2JqKSB7CiAgICAgICAgIFZfVlQocFZhcikgPSBWVF9OVUxMOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMSw5ICsxMjQsMTEgQEAgc3RhdGljIGJvb2wgQ29udmVy
dENGVHlwZVRvVmFyaWFudChWQVJJQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQor
I2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgVVNFKENGKQogc3RhdGljIGJvb2wg
Q29udmVydFZhcmlhbnRUb0NGVHlwZShWQVJJQU5UKiBwVmFyLCB2b2lkKiogY2ZPYmopCiB7CiAg
ICAgaWYgKFZfVlQocFZhcikgPT0gVlRfTlVMTCkgewpAQCAtMTUzLDExICsxNTgsMTMgQEAgc3Rh
dGljIGJvb2wgQ29udmVydFZhcmlhbnRUb0NGVHlwZShWQVJJQQogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CiB9CisjZW5kaWYKIAogSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVh
ZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElFcnJvckxvZyAqIC8qcEVy
cm9yTG9nKi8pCiB7CiAgICAgaWYgKCFwc3pQcm9wTmFtZSkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyNpZiBVU0UoQ0YpCiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lk
KiB2YWx1ZTsKICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpM
UENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKQEAgLTE3MCw2ICsxNzcsNyBAQCBI
UkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpSZWFkKExQCiAgICAgICAgIENGUmVsZWFz
ZShrZXkpOwogICAgICAgICByZXR1cm4gaHI7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIEVf
RkFJTDsKIH0KICAgICAgICAgCkBAIC0xNzcsNiArMTg1LDcgQEAgSFJFU1VMVCBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6V3JpdGUoXwogewogICAgIGlmICghcHN6UHJvcE5hbWUgfHwgIXBWYXIp
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisjaWYgVVNFKENGKQogICAgIGlmICghbV9kaWN0
aW9uYXJ5KSB7CiAgICAgICAgIG1fZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgfQpAQCAtMTg5LDUgKzE5OCw2IEBAIEhS
RVNVTFQgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKF8KICAgICAgICAgQ0ZSZWxlYXNl
KGNmT2JqKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJu
IEVfRkFJTDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVBy
b3BlcnR5QmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxNSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTQgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIENG
RGljdGlvbmFyeVByb3BlcnR5QmFnX2gKLSNkZWZpbmUgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWdf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NPTVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVTRShDRikKIHR5
cGVkZWYgc3RydWN0IF9fQ0ZEaWN0aW9uYXJ5KiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmOworI2Vu
ZGlmCiAKIGNsYXNzIENGRGljdGlvbmFyeVByb3BlcnR5QmFnIDogcHVibGljIElQcm9wZXJ0eUJh
ZyB7CiBwdWJsaWM6CkBAIC00MCw4ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIFJlbGVhc2UoKTsKIAorI2lmIFVTRShDRikKICAgICB2b2lkIHNldERpY3Rpb25h
cnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KTsKICAgICBXRUJLSVRfQVBJIENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZh
dGU6CiAgICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKTsKQEAgLTUzLDggKzU2LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUmVhZChMUENPTEVT
VFIgcHN6UHJvcE5hbWUsIFZBUklBTlQqLCBJRXJyb3JMb2cqKTsKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV3JpdGUoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsIF9J
bl8gIFZBUklBTlQqKTsKIAorI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gbV9kaWN0aW9uYXJ5OworI2VuZGlmCiAgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKIH07Ci0KLSNlbmRpZiAvLyBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZ19oCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSwxMiArMTM5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJv
cGVydHlCYWcKICAgICBpZiAoaXQgPT0gZW5kKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJH
OwogCisjaWYgVVNFKENGKQogICAgIFZBUlRZUEUgcmVxdWVzdGVkVHlwZSA9IFZfVlQocFZhcik7
CiAgICAgVl9WVChwVmFyKSA9IFZUX0VNUFRZOwogICAgIENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVU
eXBlPjo6c2V0VmFyaWFudChwVmFyLCBpdC0+dmFsdWUpOwogCiAgICAgaWYgKHJlcXVlc3RlZFR5
cGUgIT0gQ09NVmFyaWFudFNldHRlcjxWYWx1ZVR5cGU+Ojp2YXJpYW50VHlwZShpdC0+dmFsdWUp
ICYmIHJlcXVlc3RlZFR5cGUgIT0gVlRfRU1QVFkpCiAgICAgICAgIHJldHVybiA6OlZhcmlhbnRD
aGFuZ2VUeXBlKHBWYXIsIHBWYXIsIFZBUklBTlRfTk9VU0VST1ZFUlJJREUgfCBWQVJJQU5UX0FM
UEhBQk9PTCwgcmVxdWVzdGVkVHlwZSk7CisjZWxzZQorICAgIEFTU0VSVCgwKTsKKyNlbmRpZgog
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMDEsNiArMjA1LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZwogICAgIGlmIChtX2hhc2hNYXAuc2l6ZSgpIDw9IGlQ
cm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIAorI2lmIFVTRShDRikKICAg
ICAqcGNQcm9wZXJ0aWVzID0gMDsKICAgICBhdXRvIGN1cnJlbnQgPSBtX2hhc2hNYXAuYmVnaW4o
KTsKICAgICBhdXRvIGVuZCA9IG1faGFzaE1hcC5lbmQoKTsKQEAgLTIyMCw2ICsyMjUsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnCiAgICAgICAgIHdjc2NweV9z
KHBQcm9wQmFnW2pdLnBzdHJOYW1lLCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgY3VycmVudC0+
a2V5LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKTsKICAgICAgICAgKysqcGNQcm9wZXJ0aWVzOwog
ICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDkgKzM1LDEzIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CisjaWYgVVNFKENGKQorCiBDRkFycmF5Q2FsbEJhY2tzIE1hcnNoYWxsaW5nSGVscGVyczo6a0lV
bmtub3duQXJyYXlDYWxsQmFja3MgPSB7MCwgSVVua25vd25SZXRhaW5DYWxsYmFjaywgSVVua25v
d25SZWxlYXNlQ2FsbGJhY2ssIDAsIDB9OwogQ0ZEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MgTWFy
c2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MgPSB7MCwg
SVVua25vd25SZXRhaW5DYWxsYmFjaywgSVVua25vd25SZWxlYXNlQ2FsbGJhY2ssIDAsIDB9Owog
CisjZW5kaWYKKwogVVJMIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTChCU1RSIHVybFN0
cikKIHsKICAgICByZXR1cm4gVVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNTdHJpbmdMZW4o
dXJsU3RyKSkpOwpAQCAtNDgsNiArNTIsNyBAQCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJM
VG9CU1RSKGNvbnN0CiAgICAgcmV0dXJuIEJTdHJpbmcodXJsLnN0cmluZygpKS5yZWxlYXNlKCk7
CiB9CiAKKyNpZiBVU0UoQ0YpCiBDRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJp
bmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICByZXR1cm4gQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKQEAgLTk5LDcgKzEwNCw5IEBAIENG
TnVtYmVyUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk4KIHsKICAgICByZXR1cm4gQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51bSk7CiB9CisjZW5kaWYKIAor
I2lmIFVTRShDRikKIENGQWJzb2x1dGVUaW1lIE1hcnNoYWxsaW5nSGVscGVyczo6d2luZG93c0Vw
b2NoQWJzb2x1dGVUaW1lKCkKIHsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgd2luZG93c0Vw
b2NoQWJzb2x1dGVUaW1lID0gMDsKQEAgLTEwOSw4ICsxMTYsMzQgQEAgQ0ZBYnNvbHV0ZVRpbWUg
TWFyc2hhbGxpbmdIZWxwZXJzOjp3aW5kbwogICAgIH0KICAgICByZXR1cm4gd2luZG93c0Vwb2No
QWJzb2x1dGVUaW1lOwogfQorI2Vsc2UKK2RvdWJsZSBNYXJzaGFsbGluZ0hlbHBlcnM6OndpbmRv
d3NFcG9jaEFic29sdXRlVGltZSgpCit7CisgICAgc3RhdGljIGRvdWJsZSB3aW5kb3dzRXBvY2hB
YnNvbHV0ZVRpbWUgPSAwOworICAgIGlmICghd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKSB7Cisg
ICAgICAgIFNZU1RFTVRJTUUgd2luZG93c0Vwb2NoRGF0ZSA9IHsgfTsKKyAgICAgICAgd2luZG93
c0Vwb2NoRGF0ZS53WWVhciA9IDE4OTk7CisgICAgICAgIHdpbmRvd3NFcG9jaERhdGUud01vbnRo
ID0gMTI7CisgICAgICAgIHdpbmRvd3NFcG9jaERhdGUud0RheSA9IDMwOworCisgICAgICAgIEZJ
TEVUSU1FIGFic29sdXRlRmlsZVRpbWU7CisgICAgICAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZ3
aW5kb3dzRXBvY2hEYXRlLCAmYWJzb2x1dGVGaWxlVGltZSk7CisKKyAgICAgICAgVUxBUkdFX0lO
VEVHRVIgdGltZVZhbHVlOworICAgICAgICB0aW1lVmFsdWUuTG93UGFydCA9IGFic29sdXRlRmls
ZVRpbWUuZHdMb3dEYXRlVGltZTsKKyAgICAgICAgdGltZVZhbHVlLkhpZ2hQYXJ0ID0gYWJzb2x1
dGVGaWxlVGltZS5kd0hpZ2hEYXRlVGltZTsKKworICAgICAgICB3aW5kb3dzRXBvY2hBYnNvbHV0
ZVRpbWUgPSB0aW1lVmFsdWUuUXVhZFBhcnQ7CisgICAgfQorICAgIHJldHVybiB3aW5kb3dzRXBv
Y2hBYnNvbHV0ZVRpbWU7Cit9CisjZW5kaWYKIAorI2lmIFVTRShDRikKIENGQWJzb2x1dGVUaW1l
IE1hcnNoYWxsaW5nSGVscGVyczo6REFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSBkYXRlKQorI2Vs
c2UKK2RvdWJsZSBNYXJzaGFsbGluZ0hlbHBlcnM6OkRBVEVUb0Fic29sdXRlVGltZShEQVRFIGRh
dGUpCisjZW5kaWYKIHsKICAgICAvLyA8aHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS9tczIyMTYyNy5hc3B4PgogICAgIC8vIERBVEU6IFRoaXMgaXMgdGhlIHNhbWUgbnVt
YmVyaW5nIHN5c3RlbSB1c2VkIGJ5IG1vc3Qgc3ByZWFkc2hlZXQgcHJvZ3JhbXMsCkBAIC0xMjks
MTEgKzE2MiwxNiBAQCBDRkFic29sdXRlVGltZSBNYXJzaGFsbGluZ0hlbHBlcnM6OkRBVEVUCiAg
ICAgcmV0dXJuIHJvdW5kKChkYXRlICsgd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkpICogc2Vj
b25kc1BlckRheSk7CiB9CiAKKyNpZiBVU0UoQ0YpCiBEQVRFIE1hcnNoYWxsaW5nSGVscGVyczo6
Q0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZBYnNvbHV0ZVRpbWUgYWJzb2x1dGVUaW1lKQorI2Vsc2UK
K0RBVEUgTWFyc2hhbGxpbmdIZWxwZXJzOjphYnNvbHV0ZVRpbWVUb0RBVEUoZG91YmxlIGFic29s
dXRlVGltZSkKKyNlbmRpZgogewogICAgIHJldHVybiAocm91bmQoYWJzb2x1dGVUaW1lKS9zZWNv
bmRzUGVyRGF5IC0gd2luZG93c0Vwb2NoQWJzb2x1dGVUaW1lKCkpOwogfQogCisjaWYgVVNFKENG
KQogLy8gdXRpbGl0eSBtZXRob2QgdG8gc3RvcmUgYSAxLWRpbSBzdHJpbmcgdmVjdG9yIGludG8g
YSBuZXdseSBjcmVhdGVkIFNBRkVBUlJBWQogU0FGRUFSUkFZKiBNYXJzaGFsbGluZ0hlbHBlcnM6
OnN0cmluZ0FycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZiBpbkFycmF5KQogewpAQCAtMTYzLDYg
KzIwMSw3IEBAIFNBRkVBUlJBWSogTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRBcnJheVQKICAgICB9
CiAgICAgcmV0dXJuIHNhOwogfQorI2VuZGlmCiAKIFNBRkVBUlJBWSogTWFyc2hhbGxpbmdIZWxw
ZXJzOjppbnRSZWN0VG9TYWZlQXJyYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsK
QEAgLTE4OSw2ICsyMjgsOCBAQCBTQUZFQVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aW50UmVj
dFRvCiAgICAgcmV0dXJuIHNhOwogfQogCisjaWYgVVNFKENGKQorCiAvLyB1dGlsaXR5IG1ldGhv
ZCB0byBzdG9yZSBhIDEtZGltIElVbmtub3duKiB2ZWN0b3IgaW50byBhIG5ld2x5IGNyZWF0ZWQg
U0FGRUFSUkFZCiBTQUZFQVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aXVua25vd25BcnJheVRv
U2FmZUFycmF5KENGQXJyYXlSZWYgaW5BcnJheSkKIHsKQEAgLTI2NywzICszMDgsNSBAQCB2b2lk
IE1hcnNoYWxsaW5nSGVscGVyczo6SVVua25vd25SZWxlYXNlCiB7CiAgICAgKChJVW5rbm93biop
IHZhbHVlKS0+UmVsZWFzZSgpOwogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTEgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1hcnNo
YWxsaW5nSGVscGVyc19ICi0jZGVmaW5lIE1hcnNoYWxsaW5nSGVscGVyc19ICisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKyNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMzgsNiArNDAsOCBAQCBjbGFzcyBNYXJzaGFsbGlu
Z0hlbHBlcnMKIHB1YmxpYzoKICAgICBzdGF0aWMgVVJMIEJTVFJUb0tVUkwoQlNUUik7CiAgICAg
c3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFVSTCYpOworCisjaWYgVVNFKENGKQogICAgIHN0
YXRpYyBDRlVSTFJlZiBQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpTdHJpbmcm
KTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJM
UmVmIGZpbGVVUkwpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJlZihCU1RSKTsK
QEAgLTUwLDcgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRlVGlt
ZVRvREFURShDRkFic29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5nQXJy
YXlUb1NhZmVBcnJheShDRkFycmF5UmVmKTsKICAgICBzdGF0aWMgU0FGRUFSUkFZKiBpbnRBcnJh
eVRvU2FmZUFycmF5KENGQXJyYXlSZWYpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91YmxlIERBVEVU
b0Fic29sdXRlVGltZShEQVRFKTsKKyAgICBzdGF0aWMgREFURSBhYnNvbHV0ZVRpbWVUb0RBVEUo
ZG91YmxlKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIFNBRkVBUlJBWSogaW50UmVjdFRvU2FmZUFy
cmF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworI2lmIFVTRShDRikKICAgICBzdGF0aWMg
U0FGRUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7CiAgICAgc3Rh
dGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKICAgICBz
dGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOwpAQCAtNTks
MTMgKzcwLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VDYWxs
YmFjayhDRkFsbG9jYXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5Q2Fs
bEJhY2tzIGtJVW5rbm93bkFycmF5Q2FsbEJhY2tzOwogICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyBrSVVua25vd25EaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3M7CisjZW5kaWYK
IAogcHJpdmF0ZToKKyNpZiBVU0UoQ0YpCiAgICAgc3RhdGljIENGQWJzb2x1dGVUaW1lIHdpbmRv
d3NFcG9jaEFic29sdXRlVGltZSgpOworI2Vsc2UKKyAgICBzdGF0aWMgZG91YmxlIHdpbmRvd3NF
cG9jaEFic29sdXRlVGltZSgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgTWFyc2hhbGxpbmdI
ZWxwZXJzKCk7CiAgICAgfk1hcnNoYWxsaW5nSGVscGVycygpOwogfTsKLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAko
cmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRp
b25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDkgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgV2ViS2l0
TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gQ0ZTVFIoIldlYktpdExvY2FsQ2FjaGUiKTsKKyNlbmRp
ZgogCiAvLyBXZWJBcHBsaWNhdGlvbkNhY2hlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xODks
NiArMTkxLDcgQEAgSFJFU1VMVCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aAogCiAg
ICAgYXV0byBjb3JlT3JpZ2lucyA9IHN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hlKCk7CiAKKyNp
ZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheUl0ZW0gPSBh
ZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvcmVPcmln
aW5zLnNpemUoKSwgJk1hcnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duQXJyYXlDYWxsQmFja3Mp
KTsKIAogICAgIGZvciAoYXV0byYgY29yZU9yaWdpbiA6IGNvcmVPcmlnaW5zKQpAQCAtMjAzLDYg
KzIwNiw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dpdGgKICAgICBD
T01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwogICAgIHJlc3VsdC0+c2V0RGljdGlvbmFyeShkaWN0
aW9uYXJ5LmdldCgpKTsKICAgICAqb3JpZ2lucyA9IHJlc3VsdC5sZWFrUmVmKCk7CisjZW5kaWYK
IAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaW5jbHVk
ZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJNZW1vcnlTdHJlYW0uaCIKKworI2lmIFVT
RShDRikKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNlbmRpZgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzYsOSArMzksMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkK
IHsKKyNpZiBVU0UoQ0YpCiAgICAgV2ViQXJjaGl2ZSogaW5zdGFuY2UgPSBuZXcgV2ViQXJjaGl2
ZSgwKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOworI2Vs
c2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBXZWJBcmNoaXZlKiBXZWJBcmNo
aXZlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2
ZSkKQEAgLTUwLDcgKzU3LDkgQEAgV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3JlYXRlSW5zdGFu
Y2UoUgogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiYmIGNvcmVBcmNoaXZlKQorI2lmIFVTRShDRikKICAgICA6IG1fYXJjaGl2ZShXVEZNb3ZlKGNv
cmVBcmNoaXZlKSkKKyNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CkBAIC0xMTMsOCArMTIyLDEwIEBAIEhSRVNVTFQg
V2ViQXJjaGl2ZTo6aW5pdFdpdGhOb2RlKF9Jbl9vcHQKICAgICBpZiAoIWRvbU5vZGUpCiAgICAg
ICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCisjaWYgVVNFKENGKQogICAgIG1fYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZG9tTm9kZS0+bm9kZSgpKTsKLSAgICAKKyNlbmRp
ZgorCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE0Nyw2ICsxNTgsNyBAQCBIUkVTVUxUIFdl
YkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAKKyNpZiBVU0UoQ0YpCiAgICAgKnN0cmVhbSA9IG51bGxwdHI7
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKTsKICAgICBpZiAoIWNmRGF0YSkKQEAgLTE1NSw0ICsxNjcsOCBAQCBIUkVT
VUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0CiAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0
YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmgJKHJldmlzaW9uIDI0ODQwMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsOSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMCB9OworI2lmIFVTRShDRikKICAgICBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZT4gbV9hcmNoaXZlOworI2VuZGlmCiB9OwogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDg0MDEpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOCw2ICsxMDgsNyBAQCBIUkVTVUxUIFdlYkNhY2hlOjpzdGF0aXN0aWNzKF9Jbm91dF8gaW50
CiAKICAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0ID0gV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKIAorI2lmIFVTRShDRikK
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgaW1hZ2VzS2V5ID0gQ0ZTVFIoImltYWdlcyIpOwogICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBzdHlsZXNoZWV0c0tleSA9IENGU1RSKCJzdHlsZSBzaGVldHMi
KTsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgeHNsS2V5ID0gQ0ZTVFIoInhzbCIpOwpAQCAtMjA5
LDYgKzIxMCw5IEBAIEhSRVNVTFQgV2ViQ2FjaGU6OnN0YXRpc3RpY3MoX0lub3V0XyBpbnQKICAg
ICBzWzNdID0gcHJvcEJhZy5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisg
ICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFdlYkNhY2hlOjplbXB0eSgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFi
YXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgV2Vi
RGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IENGU1RSKCJXZWJEYXRhYmFzZURpcmVjdG9y
eSIpOworI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VxdWFsKExQQ1dTVFIgczEsIExQ
Q1dTVFIgczIpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAko
cmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVy
dHlCYWc+IGNyZWF0ZVVzZXJJbgogICAgIFZlY3RvcjxDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiwg
MT4gYXJyYXlJdGVtOwogICAgIGFycmF5SXRlbS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheUl0
ZW1baV0gPSBkYXRhW2ldOworICAgICAgICBhcnJheUl0ZW0udW5jaGVja2VkQXBwZW5kKGRhdGFb
aV0pOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDT01QdHI8SVdlYkhpc3RvcnlJdGVt
Pj4+IGRpY3Rpb25hcnk7CiAgICAgU3RyaW5nIGtleShub3RpZmljYXRpb25TdHIsIDo6U3lzU3Ry
aW5nTGVuKG5vdGlmaWNhdGlvblN0cikpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMyArODcs
MTYgQEAgV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbgogCiAvLyBJV2Vi
SGlzdG9yeUl0ZW1Qcml2YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgdXJsS2V5
ID0gQ0ZTVFIoIiIpOwogc3RhdGljIENGU3RyaW5nUmVmIHRpdGxlS2V5ID0gQ0ZTVFIoInRpdGxl
Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSA9IENGU1RSKCJs
YXN0VmlzaXRXYXNGYWlsdXJlIik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcmVkaXJlY3RVUkxzS2V5
ID0gQ0ZTVFIoInJlZGlyZWN0VVJMcyIpOworI2VuZGlmCiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0
ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rp
b25hcnkpCiB7CisjaWYgVVNFKENGKQogICAgIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVm
ID0gKENGRGljdGlvbmFyeVJlZikgZGljdGlvbmFyeTsKIAogICAgIENGU3RyaW5nUmVmIHVybFN0
cmluZ1JlZiA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeVJl
ZiwgdXJsS2V5KTsKQEAgLTEyNSwxMCArMTI4LDE0IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06
OmluaXRGcm9tRGljdGlvbmEKICAgICAgICAgbV9oaXN0b3J5SXRlbS0+c2V0TGFzdFZpc2l0V2Fz
RmFpbHVyZSh0cnVlKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9O
T1RJTVBMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbihfX2RlcmVmX291dF9vcHQgdm9pZCoqIGRpY3Rpb25hcnkpCiB7CisjaWYg
VVNFKENGKQogICAgIENGRGljdGlvbmFyeVJlZiogZGljdGlvbmFyeVJlZiA9IChDRkRpY3Rpb25h
cnlSZWYqKSBkaWN0aW9uYXJ5OwogCiAgICAgc2l6ZV90IGtleUNvdW50ID0gMDsKQEAgLTE1OSw2
ICsxNjYsOSBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzCiAgICAg
ICAgIENGUmVsZWFzZSh2YWx1ZXNbaV0pOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAg
IHJldHVybiBFX05PVElNUEw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6
aGFzVVJMU3RyaW5nKF9PdXRfIEJPT0wqIGhhc1VSTCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdENPTUFQSS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q09NQVBJLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYs
OSBAQCBIUkVTVUxUIFdlYktpdENyZWF0ZUluc3RhbmNlKFJFRkNMU0lEIHJjCiAgICAgcmV0dXJu
IGZhY3RvcnktPkNyZWF0ZUluc3RhbmNlKHBVbmtPdXRlciwgcmlpZCwgcHB2T2JqZWN0KTsKIH0K
IAorI2lmIFVTRShDRikKIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7CiAgICAgcmV0dXJu
IFdlYkNvcmU6OndlYktpdEJ1bmRsZSgpOwogfQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRDT01BUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRDT01BUEkuaAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0Q09NQVBJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEw
IEBAIGV4dGVybiAiQyIgewogLy8gVGhpcyBieXBhc3NlcyBDb0NyZWF0ZUluc3RhbmNlIGVudGly
ZWx5LCBzbyByZWdpc3RyeSBrZXlzIGFuZCBpc29sYXRlZCBDT00gbWFuaWZlc3RzIGFyZW4ndCBu
ZWVkZWQuCiBIUkVTVUxUIFdFQktJVF9BUEkgV2ViS2l0Q3JlYXRlSW5zdGFuY2UoUkVGQ0xTSUQs
IElVbmtub3duKiBwVW5rT3V0ZXIsIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOwogCisjaWYgVVNFKENGKQogdHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRsZSogQ0ZCdW5kbGVS
ZWY7CiBDRkJ1bmRsZVJlZiBXRUJLSVRfQVBJIHdlYktpdEJ1bmRsZSgpOworI2VuZGlmCiAKIH0K
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCShyZXZpc2lvbiAyNDg0
MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDcsNyArMjQ3LDkgQEAgdHlwZWRlZiBKU0NsYXNzUmVmICgqSlNDbGFzc0NyZWF0
ZUZ1bmN0aQogdHlwZWRlZiB2b2lkKiAoKkpTT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uKShKU09i
amVjdFJlZik7CiB0eXBlZGVmIEpTT2JqZWN0UmVmICgqSlNPYmplY3RNYWtlRnVuY3Rpb25TdHVi
KShKU0NvbnRleHRSZWYsIEpTQ2xhc3NSZWYsIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCAoKkpTT2Jq
ZWN0U2V0UHJvcGVydHlGdW5jdGlvbikoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmLCBKU1Byb3BlcnR5QXR0cmlidXRlcywgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKKyNpZiBVU0UoQ0YpCiB0eXBlZGVmIEpTU3RyaW5nUmVmICgq
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmdGdW5jdGlvbikoQ0ZTdHJpbmdSZWYpOworI2VuZGlm
CiB0eXBlZGVmIEpTU3RyaW5nUmVmICgqSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmdGdW5j
dGlvbikoY29uc3QgY2hhciopOwogdHlwZWRlZiBjb25zdCBKU0NoYXIqICgqSlNTdHJpbmdHZXRD
aGFyYWN0ZXJzUHRyRnVuY3Rpb24pKEpTU3RyaW5nUmVmKTsKIHR5cGVkZWYgc2l6ZV90ICgqSlNT
dHJpbmdHZXRMZW5ndGhGdW5jdGlvbikoSlNTdHJpbmdSZWYpOwpAQCAtMjYyLDcgKzI2NCw5IEBA
IEpTQ2xhc3NDcmVhdGVGdW5jdGlvbiBtX2pzQ2xhc3NDcmVhdGVGdW4KIEpTT2JqZWN0R2V0UHJp
dmF0ZUZ1bmN0aW9uIG1fanNPYmplY3RHZXRQcml2YXRlRnVuY3Rpb24gPSBudWxscHRyOwogSlNP
YmplY3RNYWtlRnVuY3Rpb25TdHViIG1fanNPYmplY3RNYWtlRnVuY3Rpb24gPSBudWxscHRyOwog
SlNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9u
ID0gbnVsbHB0cjsKKyNpZiBVU0UoQ0YpCiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0
aW9uIG1fanNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmdGdW5jdGlvbiA9IG51bGxwdHI7CisjZW5k
aWYKIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nRnVuY3Rpb24gbV9qc1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uID0gbnVsbHB0cjsKIEpTU3RyaW5nR2V0Q2hhcmFjdGVy
c1B0ckZ1bmN0aW9uIG1fanNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyRnVuY3Rpb24gPSBudWxscHRy
OwogSlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbiBtX2pzU3RyaW5nR2V0TGVuZ3RoRnVuY3Rpb24g
PSBudWxscHRyOwpAQCAtMjg2LDcgKzI5MCw5IEBAIHZvaWQgYmluZEphdmFTY3JpcHRUcmFtcG9s
aW5lKCkKICAgICBtX2pzT2JqZWN0R2V0UHJpdmF0ZUZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2Fz
dDxKU09iamVjdEdldFByaXZhdGVGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAi
SlNPYmplY3RHZXRQcml2YXRlIikpOwogICAgIG1fanNPYmplY3RNYWtlRnVuY3Rpb24gPSByZWlu
dGVycHJldF9jYXN0PEpTT2JqZWN0TWFrZUZ1bmN0aW9uU3R1Yj4oOjpHZXRQcm9jQWRkcmVzcyhs
aWJyYXJ5LCAiSlNPYmplY3RNYWtlIikpOwogICAgIG1fanNPYmplY3RTZXRQcm9wZXJ0eUZ1bmN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU09iamVjdFNldFByb3BlcnR5RnVuY3Rpb24+KDo6R2V0
UHJvY0FkZHJlc3MobGlicmFyeSwgIkpTT2JqZWN0U2V0UHJvcGVydHkiKSk7OworI2lmIFVTRShD
RikKICAgICBtX2pzU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nRnVuY3Rpb24gPSByZWludGVycHJl
dF9jYXN0PEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nRnVuY3Rpb24+KDo6R2V0UHJvY0FkZHJl
c3MobGlicmFyeSwgIkpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nIikpOworI2VuZGlmCiAgICAg
bV9qc1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uID0gcmVpbnRlcnByZXRfY2Fz
dDxKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZ0Z1bmN0aW9uPig6OkdldFByb2NBZGRyZXNz
KGxpYnJhcnksICJKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyIpKTsKICAgICBtX2pzU3Ry
aW5nR2V0Q2hhcmFjdGVyc1B0ckZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxKU1N0cmluZ0dl
dENoYXJhY3RlcnNQdHJGdW5jdGlvbj4oOjpHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiSlNTdHJp
bmdHZXRDaGFyYWN0ZXJzUHRyIikpOwogICAgIG1fanNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNTdHJpbmdHZXRMZW5ndGhGdW5jdGlvbj4oOjpHZXRQcm9jQWRk
cmVzcyhsaWJyYXJ5LCAiSlNTdHJpbmdHZXRMZW5ndGgiKSk7CkBAIC0zMjksMTIgKzMzNSwxNCBA
QCBXRUJLSVRfQVBJIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvCiAgICAgICAgIG1fanNP
YmplY3RTZXRQcm9wZXJ0eUZ1bmN0aW9uKGN0eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOwogfQogCisjaWYgVVNFKENGKQogV0VCS0lUX0FQSSBK
U1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmluZ1JlZiB2YWx1ZSkK
IHsKICAgICBpZiAobV9qc1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uKQogICAgICAg
ICByZXR1cm4gbV9qc1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZ0Z1bmN0aW9uKHZhbHVlKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KKyNlbmRpZgogCiBXRUJLSVRfQVBJIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHZhbHVlKQogewpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3Bw
CShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMCBAQAogCiAjaW5j
bHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAKKyNpZiBVU0UoQ0YpCisKKyNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM3LDcgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KIAogY2xhc3MgTG9jYWxpemVkU3RyaW5nOwogCkBAIC0yNDEsMyArMjQ0LDQgQEAg
TFBDVFNUUiBXZWJMb2NhbGl6ZWRMUENUU1RSKFdlYkxvY2FsaXphYgogdm9pZCBTZXRXZWJMb2Nh
bGl6ZWRTdHJpbmdNYWluQnVuZGxlKENGQnVuZGxlUmVmKQogewogfQorI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuaAkocmV2
aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVT
dHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgV2ViTG9j
YWxpemFibGVTdHJpbmdzX0gKICNkZWZpbmUgV2ViTG9jYWxpemFibGVTdHJpbmdzX0gKIAorI2lm
IFVTRShDRikKKwogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAK
IHR5cGVkZWYgc3RydWN0IHsKQEAgLTcxLDMgKzczLDYgQEAgZXh0ZXJuIFdlYkxvY2FsaXphYmxl
U3RyaW5nc0J1bmRsZSBMT0NBTAogI2VuZGlmCiAKICNlbmRpZgorCisjZW5kaWYKKwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAko
cmV2aXNpb24gMjQ4NDAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVS
TFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsOSArMzY1LDEzIEBAIEhSRVNVTFQg
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldENsaWVudEMKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKIAogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxQ
Q0NFUlRfQ09OVEVYVD4oY2VydCk7CisjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNlcnREYXRhID0gV2ViQ29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRDb250ZXh0
KTsKICAgICBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUobV9yZXF1ZXN0LnVy
bCgpLmhvc3QoKS50b1N0cmluZygpLCBjZXJ0RGF0YS5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7
CisjZWxzZQorICAgIHJldHVybiBFX05PVElNUEw7CisjZW5kaWYKIH0KIAogQ0ZVUkxSZXF1ZXN0
UmVmIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjZlJlcXVlc3QoKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjQ4NDAxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4K
ICNlbmRpZgogCisjaWYgVVNFKENGKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNjEsNiArNjUsOCBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nJiBvbGRQcmVmZXJlbmNlc1BhdGgoCiAgICAgcmV0dXJuIHBhdGg7
CiB9CiAKKyNpZiBVU0UoQ0YpCisKIHRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+IHN0cnVj
dCBDRk51bWJlclRyYWl0cyB7IHN0YXRpYyBjb25zdCBDRk51bWJlclR5cGUgVHlwZTsgfTsKIHRl
bXBsYXRlPD4gc3RydWN0IENGTnVtYmVyVHJhaXRzPGludD4geyBzdGF0aWMgY29uc3QgQ0ZOdW1i
ZXJUeXBlIFR5cGUgPSBrQ0ZOdW1iZXJTSW50MzJUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q0ZOdW1iZXJUcmFpdHM8TE9OR0xPTkc+IHsgc3RhdGljIGNvbnN0IENGTnVtYmVyVHlwZSBUeXBl
ID0ga0NGTnVtYmVyTG9uZ0xvbmdUeXBlOyB9OwpAQCAtMTAzLDYgKzEwOSw3IEBAIHN0YXRpYyBi
b29sIGJvb2xlYW5WYWx1ZUZvclByZWZlcmVuY2VzVmEKIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYg
ZGVmYXVsdFNldHRpbmdzOwogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVuY2Vz
OjptX2FwcGxpY2F0aW9uSWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsKKyNl
bmRpZgogCiBzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ09NUHRyPFdlYlByZWZlcmVuY2Vz
Pj4mIHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkKIHsKQEAgLTE4NiwxMyArMTkzLDE2IEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OnJlbW92ZVJlZmVyZW5jZUZvckkKICAgICAgICAgd2ViUHJlZmVy
ZW5jZXNJbnN0YW5jZXMoKS5yZW1vdmUoaWRlbnRpZmllclN0cmluZyk7CiB9CiAKKyNpZiBVU0Uo
Q0YpCiBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNlczo6YXBwbGljYXRpb25JZCgpCiB7CiAgICAg
cmV0dXJuIG1fYXBwbGljYXRpb25JZC5nZXQoKTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYlByZWZl
cmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIHsKKyNpZiBVU0UoQ0YpCiAgICAg
aWYgKGRlZmF1bHRTZXR0aW5ncykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzQsOCArMzQ0LDEw
IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2UKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29yZU1hdGhNTEVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAogICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRl
ZmF1bHRzOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0YpCiBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxp
c3RSZWY+IFdlYlByZWZlcmVuY2VzOjp2YWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpCiB7CiAg
ICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZh
bHVlKG1fcHJpdmF0ZVByZWZzLmdldCgpLCBrZXkpOwpAQCAtMzY5LDkgKzM4MSwxMSBAQCBSZXRh
aW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IFdlYlByZWZlcmVuCiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZktleSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygwLCBrZXks
IGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKICAgICByZXR1cm4gdmFsdWVGb3JLZXkoY2ZLZXku
Z2V0KCkpOwogfQorI2VuZGlmCiAKIEJTVFIgV2ViUHJlZmVyZW5jZXM6OnN0cmluZ1ZhbHVlRm9y
S2V5KGNvbnN0IGNoYXIqIGtleSkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUHJv
cGVydHlMaXN0UmVmPiB2YWx1ZSA9IHZhbHVlRm9yS2V5KGtleSk7CiAgICAgCiAgICAgaWYgKCF2
YWx1ZSB8fCAoQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkp
KQpAQCAtMzk1LDI2ICs0MDksNDYgQEAgQlNUUiBXZWJQcmVmZXJlbmNlczo6c3RyaW5nVmFsdWVG
b3JLZXkoYwogICAgICAgICAKICAgICBic3RyW2xlbmd0aF0gPSAwOwogICAgIHJldHVybiBic3Ry
OworI2Vsc2UKKyAgICBCU3RyaW5nIGR1bW15OworICAgIHJldHVybiBkdW1teTsKKyNlbmRpZgog
fQogCiBpbnQgV2ViUHJlZmVyZW5jZXM6OmludGVnZXJWYWx1ZUZvcktleShjb25zdCBjaGFyKiBr
ZXkpCiB7CisjaWYgVVNFKENGKQogICAgIHJldHVybiBudW1iZXJWYWx1ZUZvclByZWZlcmVuY2Vz
VmFsdWU8aW50Pih2YWx1ZUZvcktleShrZXkpLmdldCgpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7
CisjZW5kaWYKIH0KIAogQk9PTCBXZWJQcmVmZXJlbmNlczo6Ym9vbFZhbHVlRm9yS2V5KGNvbnN0
IGNoYXIqIGtleSkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZUZvclBy
ZWZlcmVuY2VzVmFsdWUodmFsdWVGb3JLZXkoa2V5KS5nZXQoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCiB9CiAKIGZsb2F0IFdlYlByZWZlcmVuY2VzOjpmbG9hdFZhbHVlRm9yS2V5
KGNvbnN0IGNoYXIqIGtleSkKIHsKKyNpZiBVU0UoQ0YpCiAgICAgcmV0dXJuIG51bWJlclZhbHVl
Rm9yUHJlZmVyZW5jZXNWYWx1ZTxmbG9hdD4odmFsdWVGb3JLZXkoa2V5KS5nZXQoKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIExPTkdMT05HIFdlYlByZWZlcmVuY2VzOjps
b25nbG9uZ1ZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSkKIHsKKyNpZiBVU0UoQ0YpCiAgICAg
cmV0dXJuIG51bWJlclZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZTxMT05HTE9ORz4odmFsdWVGb3JL
ZXkoa2V5KS5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKGNvbnN0IGNoYXIqIGtleSwgQlNUUiB2YWx1
ZSkKQEAgLTQyMyw5ICs0NTcsMTEgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0U3RyaW5nVmFs
dWUoY29ucwogICAgIHZhbC5hZG9wdEJTVFIoc3RyaW5nVmFsdWVGb3JLZXkoa2V5KSk7CiAgICAg
aWYgKHZhbCAmJiAhd2NzY21wKHZhbCwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
KyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZVJlZiA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVuaUNoYXIqPih2YWx1ZSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHdjc2xlbih2YWx1ZSkpKSk7
CiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5LCB2YWx1ZVJlZi5nZXQoKSk7CisjZW5kaWYKIAogICAg
IHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKIH0KQEAgLTQzNSw3ICs0NzEs
OSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRJbnRlZ2VyVmFsdWUoY29uCiAgICAgaWYgKGlu
dGVnZXJWYWx1ZUZvcktleShrZXkpID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQ0YpCiAgICAgc2V0VmFsdWVGb3JLZXkoa2V5LCBjZk51bWJlcih2YWx1ZSkuZ2V0KCkpOwor
I2VuZGlmCiAKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CkBA
IC00NDUsNyArNDgzLDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0RmxvYXRWYWx1ZShjb25z
dAogICAgIGlmIChmbG9hdFZhbHVlRm9yS2V5KGtleSkgPT0gdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmIFVTRShDRikKICAgICBzZXRWYWx1ZUZvcktleShrZXksIGNmTnVtYmVyKHZhbHVl
KS5nZXQoKSk7CisjZW5kaWYKIAogICAgIHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRp
b24oKTsKIH0KQEAgLTQ1NSw3ICs0OTUsOSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRCb29s
VmFsdWUoY29uc3QKICAgICBpZiAoYm9vbFZhbHVlRm9yS2V5KGtleSkgPT0gdmFsdWUpCiAgICAg
ICAgIHJldHVybjsKIAorI2lmIFVTRShDRikKICAgICBzZXRWYWx1ZUZvcktleShrZXksIHZhbHVl
ID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2UpOworI2VuZGlmCiAKICAgICBwb3N0
UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CkBAIC00NjUsNyArNTA3LDkgQEAg
dm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0TG9uZ0xvbmdWYWx1ZShjbwogICAgIGlmIChsb25nbG9u
Z1ZhbHVlRm9yS2V5KGtleSkgPT0gdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShD
RikKICAgICBzZXRWYWx1ZUZvcktleShrZXksIGNmTnVtYmVyKHZhbHVlKS5nZXQoKSk7CisjZW5k
aWYKIAogICAgIHBvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKIH0KQEAgLTQ4
NCwxOCArNTI4LDIzIEBAIEJTVFIgV2ViUHJlZmVyZW5jZXM6OndlYlByZWZlcmVuY2VzUmVtb3YK
IAogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2F2ZSgpCiB7CisjaWYgVVNFKENGKQogICAgIENGUHJl
ZmVyZW5jZXNBcHBTeW5jaHJvbml6ZShhcHBsaWNhdGlvbklkKCkpOworI2VuZGlmCiB9CiAKIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OmxvYWQoKQogewogICAgIGluaXRpYWxpemVEZWZhdWx0U2V0dGlu
Z3MoKTsKIAorI2lmIFVTRShDRikKICAgICBtX3ByaXZhdGVQcmVmcyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBtaWdyYXRlV2ViS2l0
UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoKTsKKyNlbmRpZgogfQogCisjaWYgVVNFKENGKQog
dm9pZCBXZWJQcmVmZXJlbmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVu
Y2VzKCkKIHsKICAgICBpZiAoYm9vbFZhbHVlRm9yS2V5KFdlYktpdERpZE1pZ3JhdGVXZWJLaXRQ
cmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlc1ByZWZlcmVuY2VLZXkpKQpAQCAtNTU4LDYgKzYwNyw3
IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmMKICAgICAgICAgc2V0
VmFsdWVGb3JLZXkoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGtleXNbaV0pLCB2YWx1ZXNbaV0p
OwogICAgIH0KIH0KKyNlbmRpZgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE2NzEs
OSArMTcyMSwxMSBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yCiB7
CiAgICAgaWYgKCFTeXNTdHJpbmdMZW4oa2V5KSB8fCAhU3lzU3RyaW5nTGVuKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
cmVpbnRlcnByZXRfY2FzdDxVbmlDaGFyKj4oa2V5KSwgU3lzU3RyaW5nTGVuKGtleSkpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VW5pQ2hhcio+KHZhbHVlKSwg
U3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHNldFZhbHVlRm9yS2V5KGtleVN0cmluZy5nZXQo
KSwgdmFsdWVTdHJpbmcuZ2V0KCkpOworI2VuZGlmCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdl
c05vdGlmaWNhdGlvbigpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMjIxOSw3ICsyMjcxLDkg
QEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0Q29yZU1hdGhNTEVuYQogCiBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzZXRBcHBsaWNhdGlvbklkKEJTVFIgYXBwbGljYXRpb25JZCkKIHsKKyNp
ZiBVU0UoQ0YpCiAgICAgbV9hcHBsaWNhdGlvbklkID0gU3RyaW5nKGFwcGxpY2F0aW9uSWQpLmNy
ZWF0ZUNGU3RyaW5nKCk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyNDg0MDEpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTUsMTAgKzMxNSwxMiBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBwb3N0UHJlZmVyZW5j
ZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiAKIHByb3RlY3RlZDoKKyNpZiBVU0UoQ0YpCiAgICAg
dm9pZCBzZXRWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZh
bHVlKTsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlRm9yS2V5KENGU3Ry
aW5nUmVmIGtleSk7CiAgICAgdm9pZCBzZXRWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXksIENG
UHJvcGVydHlMaXN0UmVmIHZhbHVlKTsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+
IHZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSk7CisjZW5kaWYKICAgICBCU1RSIHN0cmluZ1Zh
bHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSk7CiAgICAgaW50IGludGVnZXJWYWx1ZUZvcktleShj
b25zdCBjaGFyKiBrZXkpOwogICAgIEJPT0wgYm9vbFZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtl
eSk7CkBAIC0zMzMsMTUgKzMzNSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpOwogICAgIHZvaWQgc2F2ZSgpOwogICAgIHZvaWQgbG9h
ZCgpOworI2lmIFVTRShDRikKICAgICB2b2lkIG1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQ
cmVmZXJlbmNlcygpOwogICAgIHZvaWQgY29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVu
Y2VzKENGRGljdGlvbmFyeVJlZik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1f
cmVmQ291bnQgeyAwIH07Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1f
cHJpdmF0ZVByZWZzOwogICAgIFdlYkNvcmU6OkJTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIGJv
b2wgbV9hdXRvU2F2ZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hdXRvbWF0aWNhbGx5RGV0ZWN0
c0NhY2hlTW9kZWwgeyB0cnVlIH07CiAgICAgdW5zaWduZWQgbV9udW1XZWJWaWV3cyB7IDAgfTsK
KworI2lmIFVTRShDRikKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gbV9w
cml2YXRlUHJlZnM7CiAgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9hcHBsaWNh
dGlvbklkOworI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExIEFwcGNlbGVyYXRvciwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEJyZW50IEZ1bGdoYW0uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtMjAyLDYgKzIwMiwxMCBAQAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg+CisjZW5kaWYKKwogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3JlZW5Db250cm9sbGVy
Lmg+CiAjZW5kaWYKQEAgLTIzNSw3ICsyMzksOSBAQCB1c2luZyBKU0M6OkpTTG9jazsKIAogc3Rh
dGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCk7CiAKKyNpZiBVU0UoQ0YpCiBzdGF0aWMg
Y29uc3QgQ0ZTdHJpbmdSZWYgV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gQ0ZTVFIoIldl
YktpdExvY2FsQ2FjaGUiKTsKKyNlbmRpZgogc3RhdGljIEhNT0RVTEUgYWNjZXNzaWJpbGl0eUxp
YjsKIAogc3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+JiBwZW5kaW5nRGVsZXRlQmFja2luZ1N0b3Jl
U2V0KCkKQEAgLTg3MiwxMyArODc4LDYgQEAgYm9vbCBXZWJWaWV3OjplbnN1cmVCYWNraW5nU3Rv
cmUoKQogICAgICAgICAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotCi0gICAgICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JC
cnVzaD4gYnJ1c2g7Ci0gICAgICAgIG1fcmVuZGVyVGFyZ2V0LT5DcmVhdGVTb2xpZENvbG9yQnJ1
c2goRDJEMTo6Q29sb3JGKEQyRDE6OkNvbG9yRjo6Qmx1ZVZpb2xldCksICZicnVzaCk7Ci0KLSAg
ICAgICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOwotICAgICAgICBtX3JlbmRlclRhcmdl
dC0+RmlsbFJvdW5kZWRSZWN0YW5nbGUoRDJEMTo6Um91bmRlZFJlY3QoRDJEMTo6UmVjdEYoMTAw
LjBmLCAxMDAuMGYsIDMwMC4wZiwgMjAwLjBmKSwgMjAuMGYsIDIwLjBmKSwgYnJ1c2guZ2V0KCkp
OwotICAgICAgICBtX3JlbmRlclRhcmdldC0+RW5kRHJhdygpOwogI2VuZGlmCiAgICAgICAgIG1f
YmFja2luZ1N0b3JlU2l6ZS5jeCA9IHdpZHRoOwogICAgICAgICBtX2JhY2tpbmdTdG9yZVNpemUu
Y3kgPSBoZWlnaHQ7CkBAIC04OTYsMTIgKzg5NSw2IEBAIGJvb2wgV2ViVmlldzo6ZW5zdXJlQmFj
a2luZ1N0b3JlKCkKIAogICAgICAgICBociA9IG1fYmFja2luZ1N0b3JlUmVuZGVyVGFyZ2V0LT5R
dWVyeUludGVyZmFjZShfX3V1aWRvZihJRDJEMUdkaUludGVyb3BSZW5kZXJUYXJnZXQpLCAodm9p
ZCoqKSZtX2JhY2tpbmdTdG9yZUdkaUludGVyb3ApOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChT
VUNDRUVERUQoaHIpKTsKLQotICAgICAgICBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IGJy
dXNoMjsKLSAgICAgICAgbV9iYWNraW5nU3RvcmVSZW5kZXJUYXJnZXQtPkNyZWF0ZVNvbGlkQ29s
b3JCcnVzaChEMkQxOjpDb2xvckYoRDJEMTo6Q29sb3JGOjpTZWFHcmVlbiksICZicnVzaDIpOwot
ICAgICAgICBtX2JhY2tpbmdTdG9yZVJlbmRlclRhcmdldC0+QmVnaW5EcmF3KCk7Ci0gICAgICAg
IG1fcmVuZGVyVGFyZ2V0LT5GaWxsUm91bmRlZFJlY3RhbmdsZShEMkQxOjpSb3VuZGVkUmVjdChE
MkQxOjpSZWN0RigxMDAuMGYsIDEwMC4wZiwgMzAwLjBmLCAyMDAuMGYpLCAyMC4wZiwgMjAuMGYp
LCBicnVzaDIuZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclRhcmdldC0+RW5kRHJhdygpOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyNTIsNyArMTI0NSw4IEBAIHZv
aWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgIH0KIAogICAgIFJFQ1QgY2xpZW50
UmVjdCA9IHt9OwotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhtX3JlbmRlclRhcmdldC5nZXQoKSk7
CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0KG1fcmVuZGVyVGFy
Z2V0LmdldCgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ2MoJnBsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAog
ICAgIHsKICAgICAgICAgbV9yZW5kZXJUYXJnZXQtPlNldFRhZ3MoV0VCS0lUX0RSQVdJTkcsIF9f
TElORV9fKTsKQEAgLTUzNDEsNiArNTMzNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgICAgICByZXR1
cm4gaHI7CiAKKyNpZiBVU0UoQ0YpCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdG9TdHJp
bmcoc3RyKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAKICAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIHBhc3NlZCBpbiBzdHJpbmcgaXMgYSBwYXRoIGFuZCBjb252ZXJ0IGl0IHRvIGEgVVJM
LgpAQCAtNTM1OCw2ICs1MzUzLDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZQogICAgICAgICB9CiAKICAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbih1cmwuZ2V0KCkpOworI2Vsc2UKKyAgICAgICAgQVNTRVJUKDApOworI2VuZGlmCiAg
ICAgICAgIHN0ci5jbGVhcigpOwogICAgIH0gZWxzZQogICAgICAgICBzZXR0aW5ncy5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKFVSTCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmgJKHJldmlzaW9uIDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCwgMjAxMSBBcHBjZWxlcmF0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBCcmVudCBGdWxnaGFtLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDI0ODQwMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDggKzM1OSwxNCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQCiB7CiAgICAgV2ViVmlldyog
d2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9h
ZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXct
PmZyYW1lTG9hZERlbGVnYXRlKCZmcmFtZUxvYWREZWxlZ2F0ZSkpKQotICAgICAgICBmcmFtZUxv
YWREZWxlZ2F0ZS0+d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMKHdlYlZpZXcsIEJTdHJp
bmcodXJsLnN0cmluZygpKSwgZGVsYXksIE1hcnNoYWxsaW5nSGVscGVyczo6Q0ZBYnNvbHV0ZVRp
bWVUb0RBVEUoZmlyZURhdGUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpLCBtX3dlYkZy
YW1lKTsKKyAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPmZyYW1lTG9hZERlbGVnYXRlKCZmcmFt
ZUxvYWREZWxlZ2F0ZSkpKSB7CisjaWYgVVNFKENGKQorICAgICAgICBEQVRFIGRhdGUgPSBNYXJz
aGFsbGluZ0hlbHBlcnM6OkNGQWJzb2x1dGVUaW1lVG9EQVRFKGZpcmVEYXRlLnNlY29uZHNTaW5j
ZUVwb2NoKCkuc2Vjb25kcygpKTsKKyNlbHNlCisgICAgICAgIERBVEUgZGF0ZSA9IE1hcnNoYWxs
aW5nSGVscGVyczo6YWJzb2x1dGVUaW1lVG9EQVRFKGZpcmVEYXRlLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpKTsKKyNlbmRpZgorICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMKHdlYlZpZXcsIEJTdHJpbmcodXJsLnN0cmluZygpKSwg
ZGVsYXksIGRhdGUsIG1fd2ViRnJhbWUpOworICAgIH0KIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQpAQCAtMTA2NCw2
ICsxMDcwLDcgQEAgT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OgogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNv
bnN0IFBsdWdpblZpZXcmIHBsdWdpblZpZXcpIGNvbnN0CiB7CisjaWYgVVNFKENGKQogICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAKICAgICBDT01QdHI8SVdl
YlJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZTsKQEAgLTExMTgsNiAr
MTEyNSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmEKICAgICBD
T01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNl
KHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgpKSk7CiAgICAgIAogICAgIHJlc291cmNl
TG9hZERlbGVnYXRlLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3Iod2ViVmlldywgZXJyb3IuZ2V0KCks
IGdldFdlYkRhdGFTb3VyY2UoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKTsKKyNl
bHNlCisgICAgQVNTRVJUKDApOworI2VuZGlmCiB9CiAKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRN
TFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKSW5kZXg6IFNvdXJjZS9jbWFr
ZS9PcHRpb25zRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRX
LmNtYWtlCShyZXZpc2lvbiAyNDg0MDEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQCBzZXQoQ01BS0VfUFJFRklYX1BBVEgg
JHtXRUJLSVRfTElCUkFSSUVTCiBzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIEZJTkRfTElC
UkFSWV9VU0VfTElCMzJfUEFUSFMgT0ZGKQogc2V0X3Byb3BlcnR5KEdMT0JBTCBQUk9QRVJUWSBG
SU5EX0xJQlJBUllfVVNFX0xJQjY0X1BBVEhTIE9OKQogCitzZXQoV0VCS0lUX0xJQlJBUklFU19M
SU5LX0RJUiAiJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vbGliNjQiKQorIyBGSVhNRTogUmVtb3Zl
ICR7V0VCS0lUX0xJQlJBUklFU19MSU5LX0RJUn0gd2hlbiBmaW5kX2xpYnJhcnkgaXMgdXNlZCBm
b3IgZXZlcnl0aGluZworbGlua19kaXJlY3RvcmllcygiJHtDTUFLRV9CSU5BUllfRElSfS9saWI2
NCIgIiR7V0VCS0lUX0xJQlJBUklFU19MSU5LX0RJUn0iKQogc2V0KENNQUtFX0FSQ0hJVkVfT1VU
UFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYjY0KQogc2V0KENNQUtFX0xJQlJB
UllfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYjY0KQogc2V0KENNQUtF
X1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2JpbjY0KQpAQCAt
NTMsNyArNTYsNyBAQCBXRUJLSVRfT1BUSU9OX0JFR0lOKCkKIAogIyBGZWF0dXJlcyBpbiB0aGUg
c2FtZSBzdGF0ZSBvbiBXaW5DYWlybyBhbmQgQXBwbGVXaW4KIAotV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX09WRVJGTE9XX1NDUk9MTElOR19UT1VDSCBQUklWQVRFIE9G
RikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8zRF9UUkFOU0ZPUk1T
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVRU
QUNITUVOVF9FTEVNRU5UIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgUFJJVkFURSBPTikK
QEAgLTczLDIzICs3NiwyNCBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMVEVSU19MRVZF
TF8yIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
RlRMX0pJVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9GVFBESVIgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT04pCi1X
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSUNPTkRBVEFCQVNFIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFIFBSSVZBVEUgT04p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfS0VZQk9BUkRfS0VZX0FU
VFJJQlVURSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VS
IFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVH
QUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUyBQUklWQVRFIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NQVRITUwgUFJJVkFURSBP
TikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NRVRFUl9FTEVNRU5UIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUhUTUwgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUlOSUJST1dTRVIgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUgUFJJVkFURSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X09SSUVOVEFUSU9OX0VWRU5UUyBQUklWQVRFIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUVVP
VEEgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
UkVTSVpFX09CU0VSVkVSIFBSSVZBVEUgT04pCkBAIC0xMDEsMjQgKzEwNSwyNSBAQCBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX1NMSURFUiBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VTklGSUVEX0JVSUxEUyBQUklW
QVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIFBS
SVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU9f
VFJBQ0sgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9XRUJBU1NFTUJMWSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9XRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJIFBSSVZBVEUgT0ZGKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1BST0NFU1NfU0FOREJPWCBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfWFNMVCBQUklWQVRFIE9OKQogCiAjIE1lZGlhIHRoaW5ncyB0aGF0
IHNob3VsZCBiZSBvbgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FW
Rl9DQVBUSU9OUyBQUklWQVRFIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XRUJfQVVESU8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIFBSSVZBVEUg
T0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX0NPTlRS
T0xTX1NDUklQVCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX1NFU1NJT04gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU09VUkNFIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgUFJJVkFURSBPRkYp
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU1RSRUFNIFBS
SVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVP
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFIFBSSVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1VTRVNfRUxFTUVOVF9GVUxMU0NSRUVO
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dF
Ql9SVEMgUFJJVkFURSBPRkYpCiAKQEAgLTEyOSwxMiArMTM0LDEwIEBAIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9QQVlNRU5UX1JFUVVFU1QgUFJJVkFURSBPRkYpCiAKICMgV2ViR0wKLVdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTDIgUFJJVkFURSBPRkYp
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR1BVIFBSSVZBVEUg
T0ZGKQogCiAjIE9mZiBmb3Igbm93LCBidXQgc2hvdWxkIGJlIG9uCi1XRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfM0RfVFJBTlNGT1JNUyBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBJ
X1RFU1RTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0FQUExJQ0FUSU9OX01BTklGRVNUIFBSSVZBVEUgT0ZGKQpAQCAtMTYxLDcgKzE2NCw2IEBA
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9PVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0ggUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUERGS0lUX1BM
VUdJTiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9QT0lOVEVSX0xPQ0sgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MgUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVTT1VSQ0Vf
VVNBR0UgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfUlVCQkVSX0JBTkRJTkcgUFJJVkFURSBPRkYpCkBAIC0xNzgsMTUgKzE4MCwxNiBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZBUklBVElPTl9GT05UUyBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJE
UklWRVIgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCX0FVRElPIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1dFQl9BVVRITiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBSSVZBVEUgT0ZGKQogCiAjV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoVVNFX1ZFUlNJT05fU1RBTVBFUiBQUklWQVRFIE9OKQogCiAj
IEV4cGVyaW1lbnRhbCBmZWF0dXJlcwotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVB
VFVSRVN9KQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFU09VUkNF
X1VTQUdFIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKKyNXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklWQVRF
ICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklWQVRFIE9GRikKKyNXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVTT1VSQ0VfVVNBR0UgUFJJVkFURSAk
e0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1JFU09VUkNFX1VTQUdFIFBSSVZBVEUgT0ZGKQogCiAjIEZlYXR1cmVz
IHRvIGludmVzdGlnYXRlCiAjCkBAIC0yMjQsMjQgKzIyNywzOSBAQCBlbmRpZiAoKQogU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfRElSRUNUMkQgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfRVhQT1JUX01BQ1JP
UyBPTikKLVNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VUX1NFUlZF
UiAke0VOQUJMRV9SRU1PVEVfSU5TUEVDVE9SfSkKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9URVhUVVJFX01BUFBFUiBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJF
X01BUFBFUl9HTCBPTikKKyNTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSU5TUEVDVE9SX1NP
Q0tFVF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUn0pCitTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgT0ZGKQorCitzZXQoRU5BQkxFX0dS
QVBISUNTX0NPTlRFWFRfM0QgT04pCitzZXQoVVNFX0FOR0xFX0VHTCBPTikKIAogc2V0KFdURl9M
SUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTSEFS
RUQpCiAKIHNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKIHNldChFTkFCTEVfV0VCQ09SRSBPTikK
LXNldChFTkFCTEVfV0VCS0lUIE9GRikKLXNldChFTkFCTEVfV0VCS0lUX0xFR0FDWSBPRkYpCitz
ZXQoRU5BQkxFX1dFQktJVCBPTikKK3NldChFTkFCTEVfV0VCS0lUX0xFR0FDWSBPTikKIAogIyBP
dmVycmlkZSBoZWFkZXJzIGRpcmVjdG9yaWVzCitzZXQoQU5HTEVfRlJBTUVXT1JLX0hFQURFUlNf
RElSICR7Q01BS0VfQklOQVJZX0RJUn0vQU5HTEUvSGVhZGVycykKIHNldChXVEZfRlJBTUVXT1JL
X0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vV1RGL0hlYWRlcnMpCiBzZXQoSmF2YVNj
cmlwdENvcmVfRlJBTUVXT1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNj
cmlwdENvcmUvSGVhZGVycykKIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlL1ByaXZhdGVIZWFk
ZXJzKQorc2V0KFBBTF9GUkFNRVdPUktfSEVBREVSU19ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9Q
QUwvSGVhZGVycykKK3NldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlNfRElSICR7
Q01BS0VfQklOQVJZX0RJUn0vV2ViQ29yZS9Qcml2YXRlSGVhZGVycykKK3NldChXZWJLaXRMZWdh
Y3lfRlJBTUVXT1JLX0hFQURFUlNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0TGVnYWN5
L0hlYWRlcnMpCitzZXQoV2ViS2l0X0ZSQU1FV09SS19IRUFERVJTX0RJUiAke0NNQUtFX0JJTkFS
WV9ESVJ9L1dlYktpdC9IZWFkZXJzKQorc2V0KFdlYktpdF9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdC9Qcml2YXRlSGVhZGVycykKIAogIyBP
dmVycmlkZSBkZXJpdmVkIHNvdXJjZXMgZGlyZWN0b3JpZXMKIHNldChXVEZfREVSSVZFRF9TT1VS
Q0VTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dURi9EZXJpdmVkU291cmNlcykKIHNldChKYXZh
U2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMpCitzZXQoV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
ICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViQ29yZS9EZXJpdmVkU291cmNlcykKK3NldChXZWJLaXRM
ZWdhY3lfREVSSVZFRF9TT1VSQ0VTX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdExlZ2Fj
eS9EZXJpdmVkU291cmNlcykKK3NldChXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdC9EZXJpdmVkU291cmNlcykKIAogIyBPdmVycmlkZSBzY3JpcHRz
IGRpcmVjdG9yaWVzCiBzZXQoV1RGX1NDUklQVFNfRElSICR7Q01BS0VfQklOQVJZX0RJUn0vV1RG
L1NjcmlwdHMpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg0MjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbRlRXXSBHZXQgV2ViS2l0LCBXZWJLaXQyLCBhbmQgTWlu
aUJyb3dzZXIgYnVpbGRpbmcgYW5kIGV4ZWN1dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NDA4MjU1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAg
ICogUGxhdGZvcm1GVFcuY21ha2U6IEFkZGVkLgorCiAyMDE5LTA4LTA4ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgYWxsb3cgbmF2aWdhdGlvbnMg
b2YgZnJhbWVzIGFib3V0IHRvIGdldCByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGV2YWx1YXRp
bmcgamF2YXNjcmlwdDogVVJMcwpJbmRleDogVG9vbHMvUGxhdGZvcm1GVFcuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvUGxhdGZvcm1GVFcuY21ha2UJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
UGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorI2FkZF9z
dWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQorCitpZiAoRU5BQkxFX1dFQktJVF9MRUdBQ1kpCisgICAg
I2FkZF9zdWJkaXJlY3RvcnkoRHVtcFJlbmRlclRyZWUpCisgICAgYWRkX3N1YmRpcmVjdG9yeShN
aW5pQnJvd3Nlci93aW4pCitlbmRpZiAoKQorCisjaWYgKEVOQUJMRV9XRUJLSVQpCisjICAgIGFk
ZF9zdWJkaXJlY3RvcnkoV2ViS2l0VGVzdFJ1bm5lcikKKyNlbmRpZiAoKQpJbmRleDogVG9vbHMv
TWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAko
cmV2aXNpb24gMjQ4NDAxKQorKysgVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJy
b3dzZXJXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsNiArNjcyLDcgQEAgc3RhdGlj
IHZvaWQgc2V0V2luZG93VGV4dChIV05EIGRpYWxvZywgVQogICAgIHNldFdpbmRvd1RleHQoZGlh
bG9nLCBmaWVsZCwgX2JzdHJfdCh2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKSk7CiB9CiAKKyNpZiBV
U0UoQ0YpCiBzdGF0aWMgdm9pZCBzZXRXaW5kb3dUZXh0KEhXTkQgZGlhbG9nLCBVSU5UIGZpZWxk
LCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgQ0ZTdHJpbmdSZWYga2V5LCBVSU5UJiB0b3Rh
bCkKIHsKICAgICBDRk51bWJlclJlZiBjb3VudE51bSA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXkpKTsKQEAgLTY4NCw2ICs2ODUs
NyBAQCBzdGF0aWMgdm9pZCBzZXRXaW5kb3dUZXh0KEhXTkQgZGlhbG9nLCBVCiAgICAgc2V0V2lu
ZG93VGV4dChkaWFsb2csIGZpZWxkLCBzdGF0aWNfY2FzdDxVSU5UPihjb3VudCkpOwogICAgIHRv
dGFsICs9IGNvdW50OwogfQorI2VuZGlmCiAKIHZvaWQgV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRv
dzo6dXBkYXRlU3RhdGlzdGljcyhIV05EIGRpYWxvZykKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>