<?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>135899</bug_id>
          
          <creation_ts>2014-08-13 13:32:09 -0700</creation_ts>
          <short_desc>Rename HighFidelityTypeProfiling variables for more clarity</short_desc>
          <delta_ts>2014-08-20 18:03:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bunhere</cc>
    
    <cc>burg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1028881</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-13 13:32:09 -0700</bug_when>
    <thetext>Some variables are named using HighFidelity__, but it would be more readable and understandable for these variables to be named TypeProfiler__.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030170</commentid>
    <comment_count>1</comment_count>
      <attachid>236840</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-19 17:59:46 -0700</bug_when>
    <thetext>Created attachment 236840
patch

Massive renaming job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030171</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-19 18:02:44 -0700</bug_when>
    <thetext>Attachment 236840 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/TypeProfilerLog.h:92:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/TypeProfilerLog.cpp:58:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/runtime/TypeProfilerLog.cpp:94:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 3 in 41 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>1030172</commentid>
    <comment_count>3</comment_count>
      <attachid>236841</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-19 18:05:45 -0700</bug_when>
    <thetext>Created attachment 236841
patch

Fix above style bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030382</commentid>
    <comment_count>4</comment_count>
      <attachid>236841</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-20 13:48:03 -0700</bug_when>
    <thetext>Comment on attachment 236841
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030390</commentid>
    <comment_count>5</comment_count>
      <attachid>236841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 14:03:53 -0700</bug_when>
    <thetext>Comment on attachment 236841
patch

Rejecting attachment 236841 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 236841, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
g file Source/JavaScriptCore/runtime/TypeProfilerLog.cpp
patching file Source/JavaScriptCore/runtime/TypeProfilerLog.h
patching file Source/JavaScriptCore/runtime/VM.cpp
patching file Source/JavaScriptCore/runtime/VM.h
patching file Source/WebInspectorUI/ChangeLog
patching file Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Geoffrey Garen&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/6029360024780800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030421</commentid>
    <comment_count>6</comment_count>
      <attachid>236903</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-20 17:23:07 -0700</bug_when>
    <thetext>Created attachment 236903
patch

Fixed conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030422</commentid>
    <comment_count>7</comment_count>
      <attachid>236903</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-20 17:25:17 -0700</bug_when>
    <thetext>Comment on attachment 236903
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030429</commentid>
    <comment_count>8</comment_count>
      <attachid>236903</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 18:03:36 -0700</bug_when>
    <thetext>Comment on attachment 236903
patch

Clearing flags on attachment: 236903

Committed r172820: &lt;http://trac.webkit.org/changeset/172820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030430</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 18:03:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236840</attachid>
            <date>2014-08-19 17:59:46 -0700</date>
            <delta_ts>2014-08-19 18:05:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>156964</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyNzkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBA
QAorMjAxNC0wOC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyB2YXJpYWJsZXMgZm9yIG1vcmUgY2xh
cml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFu
eSBuYW1lcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0eXBlIHByb2ZpbGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICBwcmVmaXggdGhlbXNlbHZlcyB3aXRoICJIaWdoRmlkZWxpdHkiIG9yIGluY2x1
ZGUgdGhlIHdvcmRzICJoaWdoIgorICAgICAgICBhbmQvb3IgImZpZGVsaXR5IiBpbiBzb21lIHdh
eS4gQnV0IHRoZSB3b3JkcyAiaGlnaCIgYW5kICJmaWRlbGl0eSIgZG9uJ3QgCisgICAgICAgIGFk
ZCBhbnl0aGluZyBkZXNjcmlwdGl2ZSB0byB0aGUgbmFtZXMgc3Vycm91bmRpbmcgdHlwZSBwcm9m
aWxpbmcuIAorICAgICAgICBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgYWxsIHVzZXMgb2YgIkhpZ2hG
aWRlbGl0eSIgYW5kIGl0cyB2YXJpYW50cy4KKworICAgICAgICBNb3N0IHJlbmFtaW5ncyBjaGFu
Z2UgIkhpZ2hGaWRlbGl0eSoiIHRvICJUeXBlUHJvZmlsZXIqIiBvciBzaW1wbHkgCisgICAgICAg
IGRyb3AgdGhlIHByZWZpeCAiSGlnaEZpZGVsaXR5IiBhbGwgdG9nZXRoZXIuIE5vdywgYWxtb3N0
IGFsbCBuYW1lcyAKKyAgICAgICAgaW4gcmVsYXRpb24gdG8gdHlwZSBwcm9maWxpbmcgY29udGFp
biBpbiB0aGVtICJUeXBlUHJvZmlsZXIiIG9yIAorICAgICAgICAiVHlwZVByb2ZpbGluZyIgb3Ig
c29tZSBjb21iaW5hdGlvbiBvZiB0aGUgd29yZHMgInR5cGUiIGFuZCAicHJvZmlsZSIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IHdlIGNoZWNrIGlmIHR5cGUgcHJvZmls
aW5nIGlzIGVuYWJsZWQ6CisgICAgICAgIFdlIG5vIGxvbmdlciBjYWxsIHZtOjppc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eS4gV2Ugbm93IGp1c3QgCisgICAgICAgIGNoZWNrIHRoYXQg
dm06OnR5cGVQcm9maWxlciBpcyBub3QgbnVsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
Y2hhbmdlcyBhbGwgY2FsbHMgdG8gVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcwor
ICAgICAgICB0byB1c2UgQVNDSUlMaXRlcmFsIHRvIGZvcm0gV1RGU3RyaW5ncyBpbnN0ZWFkIG9m
IHZhbmlsbGEgQyBzdHJpbmcgbGl0ZXJhbHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6dHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRUeXBlUHJvZmlsZXJF
eHByZXNzaW9uSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVFeHByZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE1vdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQ
b3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6UHJlZml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2Rl
OjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2ln
bkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVt
aXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6RW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9m
ZnNldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5
cGVQcm9maWxpbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGVUeXBlUHJvZmlsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFR5cGVQcm9maWxlckVuYWJs
ZWRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5h
YmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnNldEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2Zp
bGVfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdFbmRPZmZzZXQpOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hG
aWRlbGl0eUxvZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlM
b2cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBh
cmVGb3JUeXBlUHJvZmlsaW5nKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlE
Rm9yVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlcjo6bG9nVHlwZXNGb3JUeXBlTG9jYXRpb24pOgorICAgICAgICAoSlND
OjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VHlwZVBy
b2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IpOgorICAgICAg
ICAoSlNDOjpkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OlR5
cGVQcm9maWxlcjo6ZmluZExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UXVlcnlLZXk6OlF1ZXJ5S2V5KToKKyAgICAgICAg
KEpTQzo6UXVlcnlLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
UXVlcnlLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6aGFzaCk6Cisg
ICAgICAgIChKU0M6OlF1ZXJ5S2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlF1ZXJ5S2V5
SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6OmZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUxvY2F0aW9uQ2Fj
aGUpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6CisgICAgICAgIChKU0M6
OlR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQ
cm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OkxvZ0Vu
dHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6
TG9nRW50cnk6OnZhbHVlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpM
b2dFbnRyeTo6bG9jYXRpb25PZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6
OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cmVjb3Jk
VHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJM
b2c6OmxvZ0VuZFB0cik6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6bG9nU3RhcnRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmN1cnJlbnRMb2dFbnRyeU9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpW
TTo6ZGlzYWJsZVR5cGVQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpkdW1wVHlwZVByb2Zp
bGVyRGF0YSk6CisgICAgICAgIChKU0M6OlZNOjplbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmR1bXBIaWdoRmlkZWxpdHlQ
cm9maWxpbmdUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAg
ICAoSlNDOjpWTTo6dHlwZVByb2ZpbGVyTG9nKToKKyAgICAgICAgKEpTQzo6Vk06OnR5cGVQcm9m
aWxlcik6CisgICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKTogRGVsZXRlZC4K
KwogMjAxNC0wOC0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBPZmZsaW5lIEFzc2VtYmxlciBidWlsZCBwaGFzZSBmYWlscyB3aGVuICRCVUlMVF9Q
Uk9EVUNUU19ESVIgY29udGFpbnMgc3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw4ICs0MTQsNiBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNw
cAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCi0gICAgcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCi0gICAgcnVudGltZS9I
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAog
ICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKQEAgLTUyMyw2ICs1MjEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMu
Y3BwCiAgICAgcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKKyAgICBydW50aW1lL1R5cGVQ
cm9maWxlci5jcHAKKyAgICBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKICAgICBydW50aW1l
L1R5cGVTZXQuY3BwCiAgICAgcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5jcHAKICAgICBy
dW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlz
aW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSGFzCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlw
ZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGV4ZWMtPnZtKCkuZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCk7CisgICAgZXhlYy0+dm0oKS5kdW1wVHlwZVBy
b2ZpbGVyRGF0YSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjg5LDggKzY4OSw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2V0dGVyU2V0dGVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SGlnaEZpZGVsaXR5TG9nLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEluZGV4aW5nVHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgpAQCAtNzk5LDYgKzc5Nyw4
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZWRBcnJh
eVR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlTG9j
YXRpb25DYWNoZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5
cGVQcm9maWxlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5
cGVQcm9maWxlckxvZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFR5cGVTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5j
cHAiIC8+CkBAIC0xNDI1LDggKzE0MjUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSGlnaEZpZGVsaXR5TG9nLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nSGVhZGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nSGVhZGVySW5saW5lcy5o
IiAvPgpAQCAtMTU4NCw2ICsxNTgyLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcVHlwZWRBcnJheUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVHlwZWRBcnJheVR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVHlwZUxvY2F0aW9uQ2FjaGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVHlwZVByb2ZpbGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFR5cGVQcm9maWxlckxvZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxUeXBlU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFR5cGVkQXJyYXlzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFVpbnQxNkFycmF5LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTYxMiwxMiArNjEyLDYgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSGlnaEZpZGVsaXR5TG9nLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC04NTUsNiArODQ5LDEyIEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFR5cGVMb2NhdGlvbkNhY2hlLmNwcCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVHlwZVByb2ZpbGVyLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcVHlwZVByb2ZpbGVyTG9nLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
VHlwZVNldC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0yNTU4LDEyICsyNTU4LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEhp
Z2hGaWRlbGl0eUxvZy5oIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmll
ci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtMjgzNCw2ICsyODI4LDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFR5cGVMb2NhdGlvbkNhY2hlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVQ
cm9maWxlci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlUHJvZmlsZXJMb2cu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZVNldC5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjgsMTAgKzIyOCw4IEBACiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1Ro
aXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07CiAJ
CTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU2MTk4MzJEQUMwMDdENEIx
OSAvKiBUb1RoaXNTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQTE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNzE5
ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYyRDRERUIxOTgzMkRDNDAwN0Q0QjE5IC8qIEhp
Z2hGaWRlbGl0eUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAq
LzsgfTsKLQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTAxOTgz
MkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMkQ0REVEMTk4MzJEQzQwMDdENEIxOSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTExOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHAgKi87IH07Ci0JCTBGMkQ0REVFMTk4MzJEQzQwMDdENEIxOSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkQ0REUyMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjJENERFQjE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERGMTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovOyB9OworCQkwRjJENERFQzE5
ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFMDE5ODMyRDkxMDA3RDRCMTkgLyogVHlw
ZVByb2ZpbGVyTG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYyRDRERUYxOTgzMkREMzAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTMxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovOyB9OwogCQkwRjJENERGMDE5ODMyREQ2MDA3RDRCMTkg
LyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRG
RDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU5ODdGMkYxNjgyOEE3RTAwM0MyRjhEIC8qIFVudXNlZFBvaW50ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODY3LDYg
Kzg2NSw4IEBACiAJCTUyQjMxMEZEMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJCMzEwRkMxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHAgKi87IH07CiAJCTUyQjMxMEZGMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIz
MTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1
MkIzMTEwMTE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMTAwMTk3NUI0NjcwMDgw
ODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUyQzk1MkI3MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJv
ZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Qzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIz
ODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3Bw
ICovOyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFGM0UgLyogSlNDYWxsYmFja0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4
RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTU1MkVB
NzBDMTkwODcwNDgwMEE2NkYyRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJGMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNTU0MDc1NzIxOERBNThB
RDAwRUZGN0YyIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi87IH07
CkBAIC0yMTMxLDEwICsyMTMxLDggQEAKIAkJMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4OTEwIC8qIERG
R1ZhcmlhYmxlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHVmFyaWFibGVFdmVudC5jcHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBE
ZWJ1Z2dlclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
YnVnZ2VyU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGMkQ0RERGMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGlnaEZpZGVsaXR5TG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMEYyRDRERTExOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERFMjE5ODMyRDkxMDA3RDRCMTkgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENERERjE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQ
cm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkQ0REUwMTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVBy
b2ZpbGVyTG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0REUzMTk4MzJE
OTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkg
LyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9UaGlzU3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NDAsNiArMjczOCw4IEBACiAJCTUyQjMx
MEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBU
eXBlUHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmls
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50
aW1lVG9MTFZNSVIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29t
cGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTU0MDdBQzgxOERBNThBRDAwRUZGN0YyIC8qIGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIu
YSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2
ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1J
Ui5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDUzNzI2RDBFMUM1
NDZCMDAyMUU1NDkgLyogVHJhY2luZy5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRyYWNpbmcu
ZDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzOTksNiArNDM5OSw3IEBACiAJCQkJ
QkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQlBNzA0
NDdFQjE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovLAogCQkJCUE3MDQ0N0VD
MTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJCTJBRDJFREZBMTk3OTlF
MzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBFMUIwMENC
MDA3NjkxOEEgLyogRXJyb3IuY3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oICovLAogCQkJCUJDMDJFOTA0MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0
cnVjdG9yLmNwcCAqLywKQEAgLTQ0MjEsMTggKzQ0MjIsMTQgQEAKIAkJCQlCQzI2ODBDMTBFMTZE
NEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjRCNTIxMTZC
NjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywKIAkJCQkwRkI0
QjUyMjE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oICovLAotCQkJ
CTUyQjMxMEZBMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAq
LywKIAkJCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlLmNwcCAqLywKKwkJCQk1MkIzMTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlLmggKi8sCiAJCQkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8q
IEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1
MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3
NjkxOEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCi0JCQkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi8sCi0JCQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovLAotCQkJCTBGMkQ0REUxMTk4MzJEOTEwMDdENEIxOSAv
KiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovLAotCQkJCTBGMkQ0REUyMTk4MzJEOTEw
MDdENEIxOSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLywKIAkJCQk5MzNBMzQ5RDAz
OEFFODBGMDA4NjM1Q0UgLyogSWRlbnRpZmllci5jcHAgKi8sCiAJCQkJOTMzQTM0OUEwMzhBRTdD
NjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLywKIAkJCQk4NjA2RERFOTE4REE0NEFCMDBBMzgz
RDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLywKQEAgLTQ0NDIsOSArNDQzOSw5IEBACiAJCQkJ
MEZCN0YzOEYxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oICovLAogCQkJCUUxNzg2
MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLywKIAkJCQlF
MTc4NjMzRjBEOUJFQzAwMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oICovLAorCQkJ
CUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYy
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJCUE3QThBRjJEMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFC
MTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLywKIAkJCQlBNzg4NTNGODE3OTcyNjI5MDAxNDQw
RTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYw
MERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTQ1MDMsOSArNDUwMCw5IEBA
CiAJCQkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oICovLAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmggKi8sCisJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
SW50OEFycmF5LmggKi8sCiAJCQkJMEYyQjY2Q0ExN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZB
cnJheS5oICovLAogCQkJCTBGMkI2NkNCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDMyQXJyYXku
aCAqLywKLQkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywK
IAkJCQk2NUVBNEM5OTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAqLywKIAkJCQk2NUVB
NEM5QTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi8sCiAJCQkJQTcwMDg3M0YxN0NCRThF
QjAwQzNFNjQzIC8qIEpTTWFwLmNwcCAqLywKQEAgLTQ1MzIsNiArNDUyOSw4IEBACiAJCQkJN0Mx
ODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovLAogCQkJCTdD
MDA4Q0RDMTg3MTI1OEQwMDk1NUMyNCAvKiBKU1Byb21pc2VSZWFjdGlvbi5jcHAgKi8sCiAJCQkJ
N0MwMDhDREQxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJvbWlzZVJlYWN0aW9uLmggKi8sCisJCQkJ
MkEwNUFCRDMxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAg
Ki8sCisJCQkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAq
LywKIAkJCQk4NjI1NTNDRjE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5oICovLAogCQkJCTE0
ODc0QUUxMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCAqLywKQEAgLTQ1NTcsMTAgKzQ1
NTYsMTAgQEAKIAkJCQkwRjJCNjZEMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5j
cHAgKi8sCiAJCQkJMEYyQjY2RDExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuaCAq
LywKIAkJCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovLAotCQkJ
CTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCi0JCQkJMEYy
QjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZE
MjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5LmggKi8sCiAJCQkJMEYyQjY2RDMxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJCQkwRjJCNjZENDE3
QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oICovLAorCQkJCTBGMkI2NkQ1MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8sCiAJCQkJQkMyMkEzOUEwRTE2RTE0ODAw
QUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovLAogCQkJCTE0RjI1MjU2MEQwOEREOEQw
MDRFQ0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8sCiAJCQkJQTdDQTNBRTExN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8sCkBAIC00NzAyLDE1ICs0NzAxLDE5IEBACiAJCQkJ
MEYyQjY2REIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggKi8sCiAJCQkJMEYyQjY2
REMxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCAqLywKIAkJCQkwRjJCNjZE
RDE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCAqLywKLQkJCQk1MkIzMTEwMDE5
NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLywKIAkJCQk1MkIzMTBGRTE5
NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3BwICovLAorCQkJCTUyQjMxMTAw
MTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovLAorCQkJCTUyQzk1MkI4
MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovLAorCQkJCTUyQzk1MkI2MTlB
Mjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCAqLywKKwkJCQkwRjJENERERjE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLywKKwkJCQkwRjJENERFMDE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggKi8sCiAJCQkJMEYyRDRERTMxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovLAogCQkJCTBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAv
KiBUeXBlU2V0LmggKi8sCisJCQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJy
YXkuaCAqLywKKwkJCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJy
YXkuaCAqLywKIAkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAq
LywKIAkJCQk4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmgg
Ki8sCiAJCQkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8sCi0J
CQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLywKLQkJCQlBN0E4
QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQlFMThF
M0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovLAogCQkJCUUxOEUzQTU2MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5oICovLAogCQkJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuY3BwICovLApAQCAtNDcyOCw5ICs0NzMxLDYgQEAKIAkJCQkxNDIwQkU3QTEwQUE2
RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkx
MTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEg
LyogV3JpdGVCYXJyaWVySW5saW5lcy5oICovLAotCQkJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1
MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovLAotCQkJCTJBMDVBQkQ0MTk2MURG
MjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCAqLywKLQkJCQkyQUQyRURG
QTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjA3NSw3ICs2MDc1
LDcgQEAKIAkJCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyRDRERUMxOTgzMkRD
NDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
MzYxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQy
RTMxMzgxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNjExNiw3ICs2MTE2LDYgQEAKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUzMjQzOEExODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyRDRERUUxOTgzMkRDNDAwN0Q0QjE5IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRERUExOERB
NDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjM5MSw2ICs2MzkwLDcgQEAKIAkJCQk1MkIz
MTEwMTE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTkwQ0FEMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9m
aWxlckpldHRpc29uUmVhc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkM5NTJCNzE5QTI4OTg1
MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2
NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTcxMDQsOSArNzEwNCw5IEBACiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKLQkJCQk1MkIzMTBGRjE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUVBNUM3QTIxOTBGMDg4NzAwNTA4RUJFIC8qIEluaXRpYWxp
emVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVC
RSAvKiBCdW5kbGVQYXRoLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTJCMzEwRkYxOTc1QjQyNDAw
ODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFNzI5
NDA4MTkwRjAyMUUwMDFBOTFCNSAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXplVGhyZWFkaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkE1NDk3MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRE
T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzE4NSw3ICs3MTg1LDYgQEAKIAkJCQkwRjQ4
NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEYyRDRERUQxOTgzMkRDNDAwN0Q0QjE5IC8qIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q5QTI5NDE3QTBCQzc0
MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzMwOCw3ICs3MzA3LDcgQEAKIAkJ
CQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFs
bG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBG
MkQ0REVCMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyRDRERUIxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMDE4QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJ
VFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8q
IEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIy
QyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjQyLDYgKzc2NDEs
NyBAQAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJy
YXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3
QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkM5NTJCOTE5
QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywK
IAkJCQkwRkY0Mjc0MzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X2lucHV0LmMgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5n
dGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0
aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSIsICJsZW5ndGgiIDogNiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfcHJvZmlsZV90eXBlIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2hhc19pbmRleGVkX3Byb3BlcnR5IiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5IiwgImxlbmd0
aCIgOiA1IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbjoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAgIGNhc2Ug
b3BfcHJvZmlsZV9kaWRfY2FsbDoKLSAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5OgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOgogICAgIGNhc2Ugb3BfdGhyb3c6
CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CiAg
ICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6Ci0gICAgY2FzZSBvcF9wcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNl
IG9wX3RvdWNoX2VudHJ5OgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxl
bmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJ
T04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw2IEBACiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKLSNpbmNsdWRlICJIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCkBAIC00OSw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50LmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTYwLDYgKzU4LDggQEAKICNpbmNsdWRl
ICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKKyNp
bmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Db21t
YVByaW50ZXIuaD4KQEAgLTgzOSwxMSArODM5LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogeworICAg
ICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytpdDsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5Iik7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGUiKTsKICAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3MTQsOSArMTcxNCw5IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBib29sIGRpZENsb25lU3ltYm9s
VGFibGUgPSBmYWxzZTsKICAgICAKICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0g
dW5saW5rZWRDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkpIHsKLSAgICAgICAgaWYgKG1fdm0tPmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgaWYgKG1fdm0tPnR5
cGVQcm9maWxlcigpKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9y
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgc3ltYm9sVGFibGUtPmNhcHR1cmVD
b3VudCgpKSB7CkBAIC0xNzI5LDggKzE3MjksOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICBzZXROdW1QYXJhbWV0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCi0gICAgaWYgKHZtKCkt
PmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgIHZtKCktPmhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcigpLT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+cmVtb3Zl
VW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBtX293bmVyRXhl
Y3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIG1fb3duZXJF
eGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgIGlm
ICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyKCktPmZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5yZW1vdmVVbmV4ZWN1dGVkUmFuZ2UobV9vd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCksIG1fb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKSwgbV9vd25lckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7
CiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRS
ZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0
KCkpCkBAIC0xNzM4LDggKzE3MzgsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvCiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1
bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKLSAgICAgICAg
aWYgKHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAg
ICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwgdW5saW5rZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zm
c2V0KCkpOworICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAgICB2
bSgpLT50eXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVu
ZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVj
dXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1
bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExp
bmUgPSBvd25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJz
dExpbmVPZmZzZXQoKTsKICAgICAgICAgYm9vbCBzdGFydENvbHVtbklzT25Pd25lclN0YXJ0TGlu
ZSA9ICF1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpOwpAQCAtMTc1Niw4ICsx
NzU2LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIG1f
ZnVuY3Rpb25FeHBycy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7Ci0gICAgICAgIGlmICh2bSgpLT5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhl
Y3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVy
KCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2UobV9v
d25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9m
ZnNldCgpKTsKICAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxl
LT5saW5lQ291bnQoKTsKICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gb3duZXJFeGVjdXRh
YmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7CiAg
ICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUgPSAhdW5saW5rZWRFeGVj
dXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKQEAgLTE5OTIsMjMgKzE5OTIsMjMgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVs
aXR5OiB7Ci0gICAgICAgICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoaXMgaW5zdHJ1Y3Rpb24gaXM6
IG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IHJlZ1RvUHJvZmlsZSwgVHlwZUxv
Y2F0aW9uKiwgZmxhZywgaWRlbnRpZmllcj8sIHJlc29sdmVUeXBlPworICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZTogeworICAgICAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3Ry
dWN0aW9uIGlzOiBvcF9wcm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBm
bGFnLCBpZGVudGlmaWVyPywgcmVzb2x2ZVR5cGU/CiAgICAgICAgICAgICBzaXplX3QgaW5zdHJ1
Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOwogICAgICAgICAgICAgdW5zaWduZWQgZGl2
b3RTdGFydCwgZGl2b3RFbmQ7CiAgICAgICAgICAgICBHbG9iYWxWYXJpYWJsZUlEIGdsb2JhbFZh
cmlhYmxlSUQ7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlwZVNldDsKLSAg
ICAgICAgICAgIGJvb2wgc2hvdWxkQW5hbHl6ZSA9IG1fdW5saW5rZWRDb2RlLT5oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25P
ZmZzZXQsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQW5h
bHl6ZSA9IG1fdW5saW5rZWRDb2RlLT50eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVj
b2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvZmlsZVJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7
Ci0gICAgICAgICAgICBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIGZs
YWcgPSBzdGF0aWNfY2FzdDxQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFn
PihwY1szXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcg
ZmxhZyA9IHN0YXRpY19jYXN0PFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnPihwY1szXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbnVsbHB0cjsKIAog
ICAgICAgICAgICAgc3dpdGNoIChmbGFnKSB7Ci0gICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBl
c0J5dGVjb2RlUHV0VG9TY29wZToKLSAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVHZXRGcm9tU2NvcGU6IHsKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVCeXRlY29kZVB1
dFRvU2NvcGU6CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVHZXRGcm9tU2Nv
cGU6IHsKICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIocGNbNF0udS5vcGVyYW5kKTsKICAgICAgICAgICAgICAgICBSZXNvbHZlVHlwZSB0eXBlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KHBjWzVdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICAg
ICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBpZGVudCwgKGZsYWcgPT0gUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVHZXRGcm9tU2NvcGUgPyBHZXQgOiBQdXQpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBSZXNv
bHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgc2NvcGUsIGlkZW50LCAoZmxhZyA9PSBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJv
bVNjb3BlID8gR2V0IDogUHV0KSwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
aGFuZGxlIG90aGVyIHZhbHVlcyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3
aGF0IHRvIGRvIHdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElE
CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNTE4NApAQCAtMjAyMCwyOSArMjAyMCwyOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
LT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdh
cyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUg
cHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCi0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5wcmVwYXJlRm9ySGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2Vy
KTsKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51
bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZv
clZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxp
dHlOb0dsb2JhbElERXhpc3RzOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlE
ID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUhh
c0dsb2JhbElEOiB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVIYXNHbG9i
YWxJRDogewogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJsZS5nZXQo
KTsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCBwcm9maWxlUmVnaXN0ZXIub2Zmc2V0KCks
ICp2bSgpKTsKICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmds
b2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHByb2ZpbGVSZWdpc3Rlci5vZmZzZXQoKSwg
KnZtKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQ6IAotICAgICAg
ICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uQXJndW1lbnQ6IHsKLSAgICAg
ICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0
czsKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQ6IAorICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVu
dDogeworICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0ds
b2JhbElERXhpc3RzOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
OiB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0
YXRlbWVudDogewogICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSByZXR1cm5TdGF0ZW1l
bnRUeXBlU2V0KCk7Ci0gICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRl
bGl0eVJldHVyblN0YXRlbWVudDsKKyAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0g
VHlwZVByb2ZpbGVyUmV0dXJuU3RhdGVtZW50OwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxk
QW5hbHl6ZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHNvbWUgcmV0dXJuIHN0
YXRlbWVudHMgYXJlIGFkZGVkIGltcGxpY2l0bHkgKHRvIHJldHVybiB1bmRlZmluZWQgYXQgdGhl
IGVuZCBvZiBhIGZ1bmN0aW9uKSwgYW5kIHRoZXNlIG5vZGVzIGRvbid0IGVtaXQgZXhwcmVzc2lv
biByYW5nZXMsIGdpdmUgdGhlbSBzb21lIHJhbmdlLgogICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHksIHRoaXMgZGl2b3QgaXMgb24gdGhlIG9wZW4gYnJhY2Ugb2YgdGhlIGZ1bmN0aW9u
LiAKQEAgLTIwNTMsMTYgKzIwNTMsMTYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBz
dGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gbG9jYXRpb25QYWlyID0gdm0oKS0+aGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKCktPnR5cGVMb2NhdGlvbkNhY2hlKCktPmdldFR5cGVMb2NhdGlv
bihnbG9iYWxWYXJpYWJsZUlELAorICAgICAgICAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbios
IGJvb2w+IGxvY2F0aW9uUGFpciA9IHZtKCktPnR5cGVQcm9maWxlcigpLT50eXBlTG9jYXRpb25D
YWNoZSgpLT5nZXRUeXBlTG9jYXRpb24oZ2xvYmFsVmFyaWFibGVJRCwKICAgICAgICAgICAgICAg
ICBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGds
b2JhbFR5cGVTZXQsIHZtKCkpOwogICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9
IGxvY2F0aW9uUGFpci5maXJzdDsKICAgICAgICAgICAgIGJvb2wgaXNOZXdMb2NhdGlvbiA9IGxv
Y2F0aW9uUGFpci5zZWNvbmQ7CiAKLSAgICAgICAgICAgIGlmIChQcm9maWxlVHlwZXNCeXRlY29k
ZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KQorICAgICAgICAgICAgaWYgKFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCkKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+
bV9kaXZvdEZvckZ1bmN0aW9uT2Zmc2V0SWZSZXR1cm5TdGF0ZW1lbnQgPSBtX3NvdXJjZU9mZnNl
dDsKIAogICAgICAgICAgICAgaWYgKHNob3VsZEFuYWx5emUgJiYgaXNOZXdMb2NhdGlvbikKLSAg
ICAgICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3
TG9jYXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5pbnNlcnROZXdMb2NhdGlvbihsb2NhdGlvbik7CiAKICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgMl0udS5sb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCShyZXZp
c2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBIaWdoRmlkZWxpdHlHbG9iYWxJREZsYWdzIHsKLSAgICBIaWdoRmlkZWxpdHlO
ZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAotICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURF
eGlzdHMgPSAtMiwKLSAgICBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPSAtMworZW51bSBU
eXBlUHJvZmlsZXJHbG9iYWxJREZsYWdzIHsKKyAgICBUeXBlUHJvZmlsZXJOZWVkc1VuaXF1ZUlE
R2VuZXJhdGlvbiA9IC0xLAorICAgIFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHMgPSAtMiwK
KyAgICBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0ZW1lbnQgPSAtMwogfTsKIAogdHlwZWRlZiBpbnRw
dHJfdCBHbG9iYWxWYXJpYWJsZUlEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzI3OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uKG1fbGluZUNvdW50
ID8gbm9kZS0+ZW5kQ29sdW1uKCkgOiBub2RlLT5lbmRDb2x1bW4oKSAtIG5vZGUtPnN0YXJ0Q29s
dW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkg
LSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAsIG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJj
ZSgpLmxlbmd0aCgpKQotICAgICwgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQobm9kZS0+ZnVuY3Rpb25OYW1lU3RhcnQoKSkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2Uo
KS5sZW5ndGgoKSAtIDEpCisgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5m
dW5jdGlvbk5hbWVTdGFydCgpKQorICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUt
PnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAs
IG1fZmVhdHVyZXMobm9kZS0+ZmVhdHVyZXMoKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUt
PmZ1bmN0aW9uTW9kZSgpKQogewpAQCAtNDAyLDExICs0MDIsMTEgQEAgdm9pZCBVbmxpbmtlZENv
ZGVCbG9jazo6YWRkRXhwcmVzc2lvbkluZgogICAgIG1fZXhwcmVzc2lvbkluZm8uYXBwZW5kKGlu
Zm8pOwogfQogCi1ib29sIFVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpCitib29sIFVubGlua2Vk
Q29kZUJsb2NrOjp0eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCYgc3RhcnREaXZvdCwgdW5zaWduZWQmIGVu
ZERpdm90KQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLSAgICBh
dXRvIGl0ZXIgPSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01hcC5maW5kKGJ5dGVjb2Rl
T2Zmc2V0KTsKLSAgICBpZiAoaXRlciA9PSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01h
cC5lbmQoKSkgeworICAgIGF1dG8gaXRlciA9IG1fdHlwZVByb2ZpbGVySW5mb01hcC5maW5kKGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICBpZiAoaXRlciA9PSBtX3R5cGVQcm9maWxlckluZm9NYXAuZW5k
KCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nRigiRG9uJ3Qg
aGF2ZSBhc3NpZ25tZW50IGluZm8gZm9yIG9mZnNldDoldVxuIiwgYnl0ZWNvZGVPZmZzZXQpOwog
ICAgICAgICBzdGFydERpdm90ID0gVUlOVF9NQVg7CkBAIC00MTQsMTggKzQxNCwxOCBAQCBib29s
IFVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCi0gICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFu
Z2UmIHJhbmdlID0gaXRlci0+dmFsdWU7CisgICAgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdl
JiByYW5nZSA9IGl0ZXItPnZhbHVlOwogICAgIHN0YXJ0RGl2b3QgPSByYW5nZS5tX3N0YXJ0RGl2
b3Q7CiAgICAgZW5kRGl2b3QgPSByYW5nZS5tX2VuZERpdm90OwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrOjphZGRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4
cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERp
dm90LCB1bnNpZ25lZCBlbmREaXZvdCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZFR5cGVQ
cm9maWxlckV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25l
ZCBzdGFydERpdm90LCB1bnNpZ25lZCBlbmREaXZvdCkKIHsKLSAgICBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZUV4cHJlc3Npb25SYW5nZSByYW5nZTsKKyAgICBUeXBlUHJvZmlsZXJFeHByZXNzaW9u
UmFuZ2UgcmFuZ2U7CiAgICAgcmFuZ2UubV9zdGFydERpdm90ID0gc3RhcnREaXZvdDsKICAgICBy
YW5nZS5tX2VuZERpdm90ID0gZW5kRGl2b3Q7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZUluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKKyAgICBtX3R5cGVQcm9m
aWxlckluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKIH0KIAogdm9pZCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlF
bmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keUVuZENvbHVtbjsgfQogICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQog
ICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCgpIHsgcmV0dXJuIG1fc291cmNlTGVuZ3RoOyB9Ci0g
ICAgdW5zaWduZWQgaGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7IH0KLSAgICB1
bnNpZ25lZCBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0OyB9CisgICAgdW5zaWduZWQg
dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OyB9CiAKICAgICBTdHJpbmcgcGFy
YW1TdHJpbmcoKSBjb25zdDsKIApAQCAtMTg3LDggKzE4Nyw4IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV91bmxpbmtlZEJvZHlFbmRDb2x1bW47CiAgICAgdW5zaWduZWQgbV9zdGFydE9mZnNl
dDsKICAgICB1bnNpZ25lZCBtX3NvdXJjZUxlbmd0aDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CisgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQ7CisgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogCiAgICAg
Q29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50
IGRpdm90LAogICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVk
IGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKLSAgICB2b2lkIGFkZEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIHVuc2lnbmVk
IHN0YXJ0RGl2b3QsIHVuc2lnbmVkIGVuZERpdm90KTsKKyAgICB2b2lkIGFkZFR5cGVQcm9maWxl
ckV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFy
dERpdm90LCB1bnNpZ25lZCBlbmREaXZvdCk7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZv
KCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5mby5zaXplKCk7IH0KIApAQCAtNDcwLDcgKzQ3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAogICAgICAgICBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwog
Ci0gICAgYm9vbCBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1
bnNpZ25lZCYgZW5kRGl2b3QpOworICAgIGJvb2wgdHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9G
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0
RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CiAKICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7CkBA
IC01ODMsMTEgKzU4MywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE93blB0cjxSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9leHByZXNz
aW9uSW5mbzsKLSAgICBzdHJ1Y3QgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFu
Z2UgeworICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAgICAgICB1
bnNpZ25lZCBtX3N0YXJ0RGl2b3Q7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAgICAg
fTsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Np
b25SYW5nZT4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXA7CisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9N
YXA7CiAKIHByb3RlY3RlZDoKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3Mjc5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFyc2VyRXJyb3IgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0
KCk7CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkgJiYgIW1fY29kZUJsb2Nr
LT52bSgpLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgIGlmIChtX2Nv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKSAmJiAhbV9jb2RlQmxvY2stPnZtKCktPnR5cGVQcm9maWxl
cigpKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0U3ltYm9sVGFibGUobV9jb2RlQmxvY2stPnN5
bWJvbFRhYmxlKCktPmNsb25lQ2FwdHVyZWROYW1lcygqbV9jb2RlQmxvY2stPnZtKCkpKTsKIAog
ICAgIGlmIChtX2V4cHJlc3Npb25Ub29EZWVwKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgIG1fc3ltYm9sVGFibGUtPnNl
dENhcHR1cmVFbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bVZhcnMp
Lm9mZnNldCgpKTsKIAotICAgIGJvb2wgY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zID0gIWZ1bmN0
aW9uQm9keS0+bmVlZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSAmJiAhbV9zaG91
bGRFbWl0RGVidWdIb29rcyAmJiAhaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKTsK
KyAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHktPm5lZWRz
QWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgJiYgIW1fdm0tPnR5cGVQcm9maWxlcigpOwogICAgIG1fZmlyc3RMYXp5RnVuY3Rpb24gPSBj
b2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
U3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24g
PSBmdW5jdGlvblN0YWNrW2ldOwpAQCAtMTAwNiw4ICsxMDA2LDggQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1
cmVkKQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0
LT5pbmRleCgpKSk7CiAKLSAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBlbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShkc3QsIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIp
OworICAgIGlmICghZHN0LT5pc1RlbXBvcmFyeSgpICYmIHZtKCktPnR5cGVQcm9maWxlcigpKQor
ICAgICAgICBlbWl0UHJvZmlsZVR5cGUoZHN0LCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFs
SUQsIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTExMTgsMjEgKzExMTgsMjEg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbAogICAgIHJldHVybiBk
c3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRXhwcmVzc2lvbkluZm8oY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlbmREaXZvdCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnRE
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZERpdm90KQogewogICAgIHVuc2lnbmVkIHN0
YXJ0ID0gc3RhcnREaXZvdC5vZmZzZXQ7IC8vIFJhbmdlcyBhcmUgaW5jbHVzaXZlIG9mIHRoZWly
IGVuZHBvaW50cywgQU5EIDAgaW5kZXhlZC4KICAgICB1bnNpZ25lZCBlbmQgPSBlbmREaXZvdC5v
ZmZzZXQgLSAxOyAvLyBFbmQgUmFuZ2VzIGFscmVhZHkgZ28gb25lIHBhc3QgdGhlIGluY2x1c2l2
ZSByYW5nZSwgc28gc3VidHJhY3QgMS4KICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9
IGluc3RydWN0aW9ucygpLnNpemUoKSAtIDE7Ci0gICAgbV9jb2RlQmxvY2stPmFkZEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIHN0YXJ0LCBl
bmQpOworICAgIG1fY29kZUJsb2NrLT5hZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhpbnN0
cnVjdGlvbk9mZnNldCwgc3RhcnQsIGVuZCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIHJlZ2lzdGVyVG9Q
cm9maWxlLCBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIGZsYWcsIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0ZXJUb1Byb2ZpbGUsIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGbGFnIGZsYWcsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYg
KGZsYWcgPT0gUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUgfHwgZmxhZyA9PSBQcm9m
aWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUpCisgICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVC
eXRlY29kZUdldEZyb21TY29wZSB8fCBmbGFnID09IFByb2ZpbGVUeXBlQnl0ZWNvZGVQdXRUb1Nj
b3BlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChpZGVudGlmaWVyKTsKIAotICAgIC8vIFRoZSBm
b3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpczogb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hf
ZmlkZWxpdHkgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVyPywg
cmVzb2x2ZVR5cGU/Ci0gICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eSk7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBvcF9w
cm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVy
PywgcmVzb2x2ZVR5cGU/CisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGUpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChyZWdpc3RlclRvUHJvZmlsZS0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmbGFnKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIzLDEzICsyMjMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURhdGEqIHRyeURh
dGE7CiAgICAgfTsKIAotICAgIGVudW0gUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVj
b2RlRmxhZyB7Ci0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlUHV0VG9TY29wZSwKLSAgICAg
ICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsCi0gICAgICAgIFByb2ZpbGVUeXBl
c0J5dGVjb2RlSGFzR2xvYmFsSUQsCi0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCwKLSAgICAgICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3Vt
ZW50LAotICAgICAgICBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
CisgICAgZW51bSBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZyB7CisgICAgICAgIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVQdXRUb1Njb3BlLAorICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbVNj
b3BlLAorICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsCisgICAgICAgIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELAorICAgICAgICBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudCwKKyAgICAgICAgUHJvZmlsZVR5cGVCeXRlY29kZUZ1
bmN0aW9uUmV0dXJuU3RhdGVtZW50CiAgICAgfTsKIAogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJh
dG9yIHsKQEAgLTQxMCw4ICs0MTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBlbWl0Tm9kZShuKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZW1pdEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3Rh
cnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZERpdm90KTsKLSAgICAgICAgdm9pZCBl
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJv
ZmlsZSwgUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZywgY29uc3QgSWRl
bnRpZmllciopOworICAgICAgICB2b2lkIGVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVu
ZERpdm90KTsKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0
ZXJUb1Byb2ZpbGUsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLCBjb25zdCBJZGVudGlmaWVyKik7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUpOwpA
QCAtNzU4LDggKzc1OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZNKiBtX3ZtOwog
Ci0gICAgICAgIGJvb2wgaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSB7IHJldHVy
biB2bSgpLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpOyB9Ci0KICAgICAgICAg
T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQ7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBzaXplX3Qg
bV9sYXN0T3Bjb2RlUG9zaXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzI3OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMCArMTM5LDEwIEBAIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWdpc3RlcklEKiByZXN1
bHQgPSBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50
eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQsIG51bGxwdHIpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGhpc0xlbmd0aCA9
IDQ7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJl
c3Npb25JbmZvKHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNl
dCArIHRoaXNMZW5ndGgsIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVy
RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0aW9uKCku
b2Zmc2V0ICsgdGhpc0xlbmd0aCwgLTEpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTE1OSw5ICsxNTksOSBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5CiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAg
ICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eShsb2NhbC5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVIYXNHbG9iYWxJ
RCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9w
b3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKGxvY2FsLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQs
IG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNz
aW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQg
KyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsLmdldCgpKTsKICAgICB9
CkBAIC0xNzEsOSArMTcxLDkgQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbV9pZGVudCk7CiAgICAgUmVn
aXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAg
ICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmaW5hbERl
c3QsIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0LCBQcm9maWxl
VHlwZXNCeXRlY29kZUdldEZyb21TY29wZSwgJm1faWRlbnQpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBK
U1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAt
MSkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVH
ZXRGcm9tU2NvcGUsICZtX2lkZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmls
ZXJFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlv
bi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMzkzLDkgKzM5Myw5IEBAIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5v
ZGU6OmVtaXRCeXQKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwotICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0
LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5m
byhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlw
ZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERl
c3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQpAQCAtNDE5LDkgKzQx
OSw5IEBAIG5vbkFyZ3VtZW50c1BhdGg6CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZp
bmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVnaXN0ZXJJ
RCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZSwgbV9pZGVudCk7
Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmaW5h
bERlc3QsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgp
LT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZp
bmFsRGVzdCwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC01MDMs
OSArNTAzLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgp
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTUyNCw5ICs1MjQs
OSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIC8v
IFRoaXMgcGFzc2VzIE5vRXhwZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlm
IHRoZSBmdW5jdGlvbiBpcyBpbiBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0
J3Mgbm90IG9uZSBvZiBvdXIgYnVpbHQtaW4gY29uc3RydWN0b3JzLgogICAgICAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVj
b2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigp
KSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldDsKICAg
ICB9CkBAIC01NDAsOSArNTQwLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGU6OmVtaQogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1
bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQsIFRocm93SWZO
b3RGb3VuZCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3Iu
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2Zp
bGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTU1OSw5ICs1
NTksOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBl
c0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkg
eworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTU3Nyw5ICs1NzcsOSBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0
YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1
bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAg
ICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVz
Qnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQpAQCAtNjUxLDkgKzY1MSw5IEBA
IFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICAgICAgfQogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCks
IFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZh
bHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdl
dCgpOwogfQpAQCAtNzY1LDkgKzc2NSw5IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQpAQCAtODAyLDcgKzgw
Miw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAg
aWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5p
c0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCk7CiAgICAgICAgICAgICBBU1NFUlQoZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwpAQCAtODEwLDggKzgxMCw4IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVz
b2x2ZShCeXQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0U3JjLmdldCgp
LCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0
U3JjLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShs
b2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRlbXBEc3QuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtaXRQb3N0SW5jT3JE
ZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZywg
bV9vcGVyYXRvcik7CkBAIC04MjIsOSArODIyLDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6
OmVtaXRSZXNvbHZlKEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IGlkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1
ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRU
b1Njb3BlKHNjb3BlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7
Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1
ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVQdXRUb1Njb3BlLCAmaWRlbnQpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQo
KSwgUHJvZmlsZVR5cGVCeXRlY29kZVB1dFRvU2NvcGUsICZpZGVudCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gb2xkVmFsdWUuZ2V0KCk7CkBAIC04NDgsOSArODQ4
LDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAogICAgIFJlZ2lz
dGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgp
LCB2YWx1ZS5nZXQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUds
b2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBp
ZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2
ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJF
eHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9
CkBAIC04NzIsOSArODcyLDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0
ZWNvZAogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
aWRlbnQsIHZhbHVlLmdldCgpKTsKLSAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RI
YXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNO
b3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG9sZFZhbHVl
KTsKIH0KQEAgLTk5MiwxMyArOTkyLDEzIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRS
ZXNvbHZlKEJ5dGUKICAgICAgICAgaWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAg
ICBsb2NhbFJlZyA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGxvY2FsUmVnKTsKLSAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkg
fHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLnZtKCktPnR5cGVQ
cm9maWxlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZSh0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMo
Z2VuZXJhdG9yLCB0ZW1wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbklu
Zm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
dm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBl
UHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVt
cERzdC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
bG9jYWxSZWcsIG1fb3BlcmF0b3IpOwpAQCAtMTAxMCw5ICsxMDEwLDkgQEAgUmVnaXN0ZXJJRCog
UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIGlkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGVtaXRJbmNPckRlYyhn
ZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5k
KTsKLSAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
IHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZpZGVudCk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9TY29wZSwgJmlkZW50KTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZO
ZWVkZWQoZHN0LCB2YWx1ZS5nZXQoKSk7CiB9CkBAIC0xMDMzLDkgKzEwMzMsOSBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgZW1pdEluY09yRGVjKGdlbmVy
YXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7Ci0gICAgaWYgKGdl
bmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgUHJvZmlsZVR5
cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigp
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTEwNTUsOSArMTA1NSw5IEBAIFJlZ2lzdGVySUQq
IFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGUKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9y
LCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9l
c05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2Zp
bGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5n
ZXQoKSk7CiB9CkBAIC0xNTA2LDE1ICsxNTA2LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlS
ZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxvY2Fs
LmlzQ2FwdHVyZWQoKQotICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJv
ZmlsZXIoKQogICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmxlZnRIYW5kU2lkZU5lZWRzQ29weSht
X3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShyZXN1bHQuZ2V0KCksIGxvY2Fs
LmdldCgpKTsKICAgICAgICAgICAgIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3Is
IHJlc3VsdC5nZXQoKSwgcmVzdWx0LmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHJlc3Vs
dC5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuaW52YWxpZGF0ZUZvckluQ29udGV4dEZv
ckxvY2FsKGxvY2FsLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25J
bmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMTUyOCw5ICsxNTI4LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlm
eVJlc29sdmVOb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
c3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9v
cGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSksIHRoaXMpOwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0
LmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdU
eXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHkocmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1
dFRvU2NvcGUsICZtX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9T
Y29wZSwgJm1faWRlbnQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiBy
ZXR1cm5SZXN1bHQ7CiB9CkBAIC0xNTQ0LDEzICsxNTQ0LDEzIEBAIFJlZ2lzdGVySUQqIEFzc2ln
blJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1
cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsK
KyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKHRlbXBEc3QuZ2V0KCksIG1fcmlnaHQpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5p
bnZhbGlkYXRlRm9ySW5Db250ZXh0Rm9yTG9jYWwobG9jYWwuZ2V0KCkpOwotICAgICAgICAgICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLnZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3Qs
IHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9yaWdodCk7CkBAIC0xNTY2LDkgKzE1
NjYsOSBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQp
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIG1faWRlbnQsIHJlc3VsdC5nZXQoKSwgZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHko
cmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZtX2lkZW50KTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lv
bkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCkt
PnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVz
dWx0LmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9TY29wZSwgJm1faWRlbnQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgfSAKICAgICByZXR1cm4gcmV0dXJuUmVzdWx0OwogfQpAQCAt
MTU4Myw5ICsxNTgzLDkgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdCA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0KSwgcmVzdWx0
KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2Fy
ZFJlc3VsdCk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eShmb3J3YXJkUmVzdWx0LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQsIG51bGxwdHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChn
ZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVH
bG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhw
cmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7
CiB9CkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6
ZW1pdEJ5dGVjCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYg
KGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUs
IFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRW
YWx1ZSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xNjI4LDkg
KzE2MjgsOSBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndh
cmRSZXN1bHQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoZm9yd2FyZFJlc3VsdCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2Jh
bElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAo
Z2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZl
R2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQp
OwogfQpAQCAtMTY0OCw5ICsxNjQ4LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXRO
b2RlOjplbWl0QgogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUsIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgUHJv
ZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZTsKQEAgLTE2NzYsNyAr
MTY3Niw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICAg
ICAgICAgIHJldHVybiBsb2NhbC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogTWF5YmUgY2Fs
bCBlbWl0RXhwcmVzc2lvbkluZm8gaGVyZS4KLSAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQo
KSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAg
ICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERz
dC5nZXQoKSwgbV9pbml0KTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUo
bG9jYWwuZ2V0KCksIHRlbXBEc3QuZ2V0KCkpOwpAQCAtMTc4NiwxOCArMTc4NiwxOCBAQCB2b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlCiAKIFJlZ2lzdGVySUQqIEVtcHR5
VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewotICAgIGlmICghZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KCkpCisgICAgaWYgKCFnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJh
dG9yLmxvY2FsKG1faWRlbnQpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dp
dGhIaWdoRmlkZWxpdHkobG9jYWwuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFs
SUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOwogICAgIGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBEb05vdFRocm93SWZOb3RG
b3VuZCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsICZtX2lkZW50
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmls
ZVR5cGVCeXRlY29kZUdldEZyb21TY29wZSwgJm1faWRlbnQpOwogICAgIH0KIAotICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3Ro
KCksIC0xKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhw
b3NpdGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50
Lmxlbmd0aCgpLCAtMSkpOwogCiAgICAgLy8gSXQncyBzYWZlIHRvIHJldHVybiBudWxsIGhlcmUg
YmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdheXMgYmUgYSBjaGlsZCBub2RlIG9mIFZhclN0YXRl
bWVudE5vZGUgd2hpY2ggaWdub3JlcyBvdXIgcmV0dXJuIHZhbHVlLgogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjI3Niw5ICsyMjc2LDkgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZQogICAgICAgICBkc3QgPSAwOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUp
IDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKGdlbmVy
YXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5SZWdpc3Rlci5nZXQo
KSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgbnVsbHB0cik7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgp
LT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJl
dHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIGlmIChnZW5l
cmF0b3Iuc2NvcGVEZXB0aCgpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OwpAQCAtMjYwNywxNSArMjYwNywxNSBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lCiAKIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGlmIChnZW5lcmF0b3Iu
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgIGlmIChnZW5lcmF0b3Iu
dm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IERlc3RydWN0dXJpbmcgYXNzaWdubWVudHMgaW50byBhcmd1bWVudHMuCiAgICAgICAgICAgICBp
ZiAoIW1fcGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIEJpbmRpbmdOb2RlKiBwYXJhbWV0ZXIgPSBzdGF0aWNf
Y2FzdDxCaW5kaW5nTm9kZSo+KG1fcGFyYW1ldGVycy0+YXQoaSkpOwogICAgICAgICAgICAgUmVn
aXN0ZXJJRCByZWcoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKSk7Ci0gICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoJnJlZywgUHJvZmlsZVR5
cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50LCBudWxscHRyKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBhcmFtZXRl
ci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZSgmcmVnLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25B
cmd1bWVudCwgbnVsbHB0cik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxl
ckV4cHJlc3Npb25JbmZvKHBhcmFtZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90
RW5kKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNjM1LDggKzI2MzUsOCBAQCB2b2lkIEZ1
bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJu
Tm9kZSkgewogICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9y
KCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eShyMCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCwgbnVsbHB0cik7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAg
ICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVy
blN0YXRlbWVudCwgbnVsbHB0cik7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3Ig
dGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4K
ICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4ocjApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRp
c3RpY3MuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGlu
ZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSAiVHJhY2luZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXZWFrU2V0
SW5saW5lcy5oIgpAQCAtOTc5LDkgKzk3OSw5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3Bl
cmF0aW9uIGNvbGxlY3QKICAgICAKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
R2FyYmFnZSBDb2xsZWN0aW9uIik7CiAgICAgCi0gICAgaWYgKHZtKCktPmlzUHJvZmlsaW5nVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsK
ICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMpOwotICAgICAgICB2bSgpLT5o
aWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0MiKTsKKyAgICAgICAg
dm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgi
R0MiKSk7CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCShyZXZpc2lvbiAxNzI3OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRl
ICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVk
ZSAiSGlnaEZpZGVsaXR5TG9nLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKQEAgLTQ1LDYgKzQzLDgg
QEAKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgor
I2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVu
dGltZVR5CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIFZNJiB2
bSA9IGdsb2JhbFZNKCk7CiAgICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlw
dGlvbj46OmNyZWF0ZSgpOwotICAgIGlmICghdm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgeworICAgIGlmICghdm0udHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgKmVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJUaGUgVk0gZG9lcyBub3QgY3VycmVudGx5IGhhdmUgVHlw
ZSBJbmZvcm1hdGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRvdWJsZSBz
dGFydCA9IGN1cnJlbnRUaW1lTVMoKTsKLSAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vz
c0hpZ2hGaWRlbGl0eUxvZygiVXNlciBRdWVyeSIpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygp
LT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlVzZXIgUXVlcnkiKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxvY2F0aW9ucy0+bGVuZ3RoKCk7IGkrKykgewogICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBsb2NhdGlvbnMtPmdl
dChpKTsKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
UnVudGltZVR5CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlR5cGVEZXNjcmlwdGlvbj4gdHlwZURlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYm9vbCBv
a2F5OwotICAgICAgICB2bS5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3I+KGRlc2NyaXB0b3IpLCBkaXZvdCwgc291cmNlSURBc1N0cmluZy50b0ludFB0
clN0cmljdCgmb2theSksIHR5cGVEZXNjcmlwdGlvbik7CisgICAgICAgIHZtLnR5cGVQcm9maWxl
cigpLT5nZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3Ioc3RhdGljX2Nhc3Q8
VHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvcj4oZGVzY3JpcHRvciksIGRpdm90LCBzb3VyY2VJ
REFzU3RyaW5nLnRvSW50UHRyU3RyaWN0KCZva2F5KSwgdHlwZURlc2NyaXB0aW9uKTsKICAgICAg
ICAgdHlwZURlc2NyaXB0aW9ucy0+YWRkSXRlbSh0eXBlRGVzY3JpcHRpb24pOwogICAgIH0KIApA
QCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9y
VHkKIHsKICAgICB2bS53YWl0Rm9yQ29tcGlsYXRpb25zVG9Db21wbGV0ZSgpOwogCi0gICAgYm9v
bCBuZWVkc1RvUmVjb21waWxlID0gKHNob3VsZEVuYWJsZVR5cGVQcm9maWxpbmcgPyB2bS5lbmFi
bGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkgOiB2bS5kaXNhYmxlSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZygpKTsKKyAgICBib29sIG5lZWRzVG9SZWNvbXBpbGUgPSAoc2hvdWxkRW5hYmxl
VHlwZVByb2ZpbGluZyA/IHZtLmVuYWJsZVR5cGVQcm9maWxlcigpIDogdm0uZGlzYWJsZVR5cGVQ
cm9maWxlcigpKTsKICAgICBpZiAobmVlZHNUb1JlY29tcGlsZSkgewogICAgICAgICBUeXBlUmVj
b21waWxlciByZWNvbXBpbGVyOwogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9u
U2NvcGUodm0uaGVhcCk7CkBAIC0yNjQsMjAgKzI2NCwyMCBAQCBzdGF0aWMgdm9pZCByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9uc0ZvclR5CiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
CiB7CiAgICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0
ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkKQotICAgICAgICBz
ZXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5hYmxlZFN0YXRlKGZhbHNlKTsKKyAgICAgICAg
c2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoRXJyb3JTdHJpbmcq
KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZVR5cGVQcm9maWxlcihFcnJvclN0
cmluZyopCiB7Ci0gICAgc2V0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRTdGF0ZSh0
cnVlKTsKKyAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUodHJ1ZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhF
cnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZVR5cGVQcm9m
aWxlcihFcnJvclN0cmluZyopCiB7Ci0gICAgc2V0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0Vu
YWJsZWRTdGF0ZShmYWxzZSk7CisgICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFbmFibGVkU3RhdGUoYm9vbCBzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShib29s
IHNob3VsZEVuYWJsZVR5cGVQcm9maWxpbmcpCiB7CiAgICAgaWYgKG1faXNUeXBlUHJvZmlsaW5n
RW5hYmxlZCA9PSBzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhF
cnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZyhFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERl
YnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQog
CkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29u
c29sZSgpID0gMDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFbmFibGVkU3RhdGUoYm9vbCk7CisgICAgdm9pZCBzZXRUeXBlUHJvZmlsZXJFbmFibGVk
U3RhdGUoYm9vbCk7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogICAgIFNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpz
b24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24JKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEs
MTIgKzI0MSwxMiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgZGV0YWls
ZWQgaW5mb3JtdGF0aW9uIG9uIGdpdmVuIGZ1bmN0aW9uLiIKICAgICAgICAgfSwKICAgICAgICAg
ewotICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyIs
Ci0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBoaWdoIGZpZGVsaXR5IHR5cGUg
cHJvZmlsaW5nIG9uIHRoZSBWTS4iCisgICAgICAgICAgICAibmFtZSI6ICJlbmFibGVUeXBlUHJv
ZmlsZXIiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgdHlwZSBwcm9maWxp
bmcgb24gdGhlIFZNLiIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUi
OiAiZGlzYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmciLAotICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2FibGVzIGhpZ2ggZmlkZWxpdHkgdHlwZSBwcm9maWxpbmcgb24gdGhlIFZN
LiIKKyAgICAgICAgICAgICJuYW1lIjogImRpc2FibGVUeXBlUHJvZmlsZXIiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHR5cGUgcHJvZmlsaW5nIG9uIHRoZSBWTS4iCiAg
ICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6U1NFMkNoZWNrUwogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgpAQCAtNTMsNiArNTIsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hl
Y2tTCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgi
CiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cu
aCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9pbmMpCiAgICAgICAgIERFRklO
RV9PUChvcF9wcm9maWxlX2RpZF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93
aWxsX2NhbGwpCi0gICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfdHlwZSkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfbmFtZV9zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfd2l0
aF9zY29wZSkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC01MDEs
OSArNTAxLDkgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRo
ZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlwZWNo
ZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5
LgotICAgIGlmIChtX3ZtLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAg
ICAgICBtX3ZtLT5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhBU0NJ
SUxpdGVyYWwoIlByZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKKyAgICAvLyBUaGlz
IGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlv
biB3aGVuIHBlcmZvcm1pbmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVf
dHlwZS4KKyAgICBpZiAobV92bS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgIG1fdm0tPnR5cGVQ
cm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBm
b3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fz
c2VtYmx5KCkgfHwgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fz
c2VtYmxlciA9IGFkb3B0UHRyKG5ldyBKSVREaXNhc3NlbWJsZXIobV9jb2RlQmxvY2spKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDcgKzUyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2RpZF9jYWxsKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXNoX3dpdGhfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTcyNzkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzA2LDkgKzEzMDYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRl
eF9zdHJpbmcoSW5zdHJ1CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHJvZmlsZV90eXBlKTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAt
NDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJUeXBlUHJv
ZmlsZXJMb2cuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRleF9zdHJp
bmcoSW5zdHJ1CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIFR5cGVMb2NhdGlvbiogY2FjaGVkVHlwZUxvY2F0
aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUubG9jYXRpb247CiAgICAgaW50IHZhbHVlVG9Q
cm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTEzNjksMzEgKzEz
NjksMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZwogICAgIH0K
IAogICAgIC8vIExvYWQgdGhlIHR5cGUgcHJvZmlsaW5nIGxvZyBpbnRvIFQyLgotICAgIEhpZ2hG
aWRlbGl0eUxvZyogY2FjaGVkSGlnaEZpZGVsaXR5TG9nID0gbV92bS0+aGlnaEZpZGVsaXR5TG9n
KCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGNhY2hlZEhpZ2hGaWRlbGl0eUxvZyksIHJlZ1Qy
KTsKKyAgICBUeXBlUHJvZmlsZXJMb2cqIGNhY2hlZFR5cGVQcm9maWxlckxvZyA9IG1fdm0tPnR5
cGVQcm9maWxlckxvZygpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBlUHJvZmls
ZXJMb2cpLCByZWdUMik7CiAgICAgLy8gTG9hZCB0aGUgbmV4dCBsb2cgZW50cnkgaW50byBUMS4K
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEhpZ2hGaWRlbGl0eUxvZzo6Y3VycmVudExvZ0Vu
dHJ5T2Zmc2V0KCkpLCByZWdUMSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBUeXBlUHJv
ZmlsZXJMb2c6OmN1cnJlbnRMb2dFbnRyeU9mZnNldCgpKSwgcmVnVDEpOwogCiAgICAgLy8gU3Rv
cmUgdGhlIEpTVmFsdWUgb250byB0aGUgbG9nIGVudHJ5LgotICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIEhpZ2hGaWRlbGl0eUxvZzo6TG9nRW50cnk6OnZhbHVlT2Zmc2V0KCkpKTsK
KyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0Vu
dHJ5Ojp2YWx1ZU9mZnNldCgpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0dXJlSUQgb2Yg
dGhlIGNlbGwgaWYgVDAgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24gdGhlIGxvZyBl
bnRyeS4KICAgICBKdW1wIG5vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDApOwotICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEsIEhpZ2hGaWRlbGl0eUxvZzo6
TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRy
ZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CiAgICAgSnVtcCBza2lwSXNDZWxsID0ganVtcCgpOwogICAgIG5vdENlbGwubGluayh0aGlz
KTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgSGlnaEZpZGVs
aXR5TG9nOjpMb2dFbnRyeTo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5Ojpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgc2tpcElzQ2VsbC5saW5rKHRoaXMpOwogCiAgICAg
Ly8gU3RvcmUgdGhlIHR5cGVMb2NhdGlvbiBvbiB0aGUgbG9nIGVudHJ5LgogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihjYWNoZWRUeXBlTG9jYXRpb24pLCByZWdUMCk7Ci0gICAgc3RvcmU2NChyZWdU
MCwgQWRkcmVzcyhyZWdUMSwgSGlnaEZpZGVsaXR5TG9nOjpMb2dFbnRyeTo6bG9jYXRpb25PZmZz
ZXQoKSkpOworICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIFR5cGVQcm9maWxlckxv
Zzo6TG9nRW50cnk6OmxvY2F0aW9uT2Zmc2V0KCkpKTsKIAogICAgIC8vIEluY3JlbWVudCB0aGUg
Y3VycmVudCBsb2cgZW50cnkuCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSGlnaEZp
ZGVsaXR5TG9nOjpMb2dFbnRyeSkpLCByZWdUMSk7Ci0gICAgc3RvcmU2NChyZWdUMSwgQWRkcmVz
cyhyZWdUMiwgSGlnaEZpZGVsaXR5TG9nOjpjdXJyZW50TG9nRW50cnlPZmZzZXQoKSkpOwotICAg
IEp1bXAgc2tpcENsZWFyTG9nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bVB0cihjYWNoZWRIaWdoRmlkZWxpdHlMb2ctPmxvZ0VuZFB0cigpKSk7CisgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihzaXplb2YoVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeSkpLCByZWdUMSk7Cisg
ICAgc3RvcmU2NChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgVHlwZVByb2ZpbGVyTG9nOjpjdXJyZW50
TG9nRW50cnlPZmZzZXQoKSkpOworICAgIEp1bXAgc2tpcENsZWFyTG9nID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBlUHJvZmlsZXJMb2ctPmxvZ0Vu
ZFB0cigpKSk7CiAgICAgLy8gQ2xlYXIgdGhlIGxvZyBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRo
ZSBsb2cuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9n
KTsKICAgICBza2lwQ2xlYXJMb2cubGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJI
aWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoLmgiCiAjaW5jbHVkZSAi
UmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgorI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9JbmRleFN0CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlw
ZVByb2ZpbGVyTG9nKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBleGVjLT52bSgpLmhpZ2hGaWRl
bGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGws
IGNhbGxlZCBmcm9tIGluc2lkZSBiYXNlbGluZSBKSVQiKSk7CisgICAgZXhlYy0+dm0oKS50eXBl
UHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwg
Y2FsbGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCIpKTsKIH0KIAogfSAvLyBleHRlcm4gIkMi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SG9zdENhbGxSZXR1cm5WYWx1ZS5oIgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUyLDYgKzEzNTIsNiBAQCBlbmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6
CiAgICAgZGlzcGF0Y2goNSkKIAotX2xsaW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5OgotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9o
aWdoX2ZpZGVsaXR5KQorX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKKyAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGUpCiAgICAgZGlzcGF0Y2goNikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24gMTcyNzkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksNyArNzksNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6
Z2V0R2xvCiB7CiAgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwg
U3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0
cmljdG5lc3MpOwogICAgIENvZGVDYWNoZU1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc291
cmNlQ29kZS5hZGQoa2V5LCBTb3VyY2VDb2RlVmFsdWUoKSk7Ci0gICAgYm9vbCBjYW5DYWNoZSA9
IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJP
ZmYgJiYgIXZtLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7CisgICAgYm9vbCBj
YW5DYWNoZSA9IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0g
UHJvZmlsZXJPZmYgJiYgIXZtLnR5cGVQcm9maWxlcigpOwogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkgJiYgY2FuQ2FjaGUpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1
bmxpbmtlZENvZGVCbG9jayA9IGpzQ2FzdDxVbmxpbmtlZENvZGVCbG9ja1R5cGUqPihhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmNlbGwuZ2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExp
bmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkgKyB1bmxpbmtlZENvZGVCbG9jay0+Zmlyc3RMaW5lKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9n
LmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAj
aW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC02MzcsMTIgKzYzNywxMiBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nCiAgICAgUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgT1AoMikuanNWYWx1ZSgpLmFzVUludDMyKCkpLnN0cmluZygp
KSk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGln
aF9maWRlbGl0eSkKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGUpCiB7CiAg
ICAgQkVHSU4oKTsKICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gcGNbMl0udS5sb2NhdGlv
bjsKICAgICBKU1ZhbHVlIHZhbCA9IE9QX0MoMSkuanNWYWx1ZSgpOwotICAgIHZtLmhpZ2hGaWRl
bGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2YWwsIGxvY2F0aW9u
KTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9j
YXRpb24odmFsLCBsb2NhdGlvbik7CiAgICAgRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNzI3
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X3N0cnUKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2dl
bmVyaWNfcHJvcGVydHlfZW51bWVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25leHRfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3RvX2luZGV4X3N0cmluZyk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHJvZmlsZV90eXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAx
NzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIK
LSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpA
QCAtMTA0LDggKzEwNCw4IEBAIFNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3Ry
dWMKICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKFVJTlRfTUFYKQog
ICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCi0gICAgLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdTdGFydE9mZnNldChVSU5UX01BWCkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGluZ0VuZE9mZnNldChVSU5UX01BWCkKKyAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
KFVJTlRfTUFYKQorICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KFVJTlRfTUFYKQogewog
fQogCkBAIC0zNzYsMTAgKzM3NiwxMCBAQCBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFi
bGU6OnNfaW5mCiBQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgOiBTY3JpcHRFeGVjdXRhYmxl
KGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCks
IHNvdXJjZSwgZmFsc2UpCiB7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQgPSAwOwotICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNv
dXJjZS5sZW5ndGgoKSAtIDE7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuaXNQcm9maWxpbmdUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgZXhlYy0+dm0oKS5oaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5n
ZShzb3VyY2VJRCgpLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV9o
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKKyAgICBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxl
bmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAg
ZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmlu
c2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKIH0KIAogdm9pZCBQcm9ncmFtRXhlY3V0YWJs
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC00MDMsOCArNDAzLDggQEAgRnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVgogICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlO
VF9NQVgpOwogICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICBtX2VuZENvbHVt
biA9IGVuZENvbHVtbjsKLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCA9IHVubGlua2VkRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCk7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gdW5saW5r
ZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCk7CisgICAg
bV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9m
aWxpbmdTdGFydE9mZnNldCgpOworICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpOwogfQogCiB2b2lkIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC01MDEsMTAgKzUwMSwxMCBA
QCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IGZ1bmN0
aW9uRGVjbGFyYXRpb25zW2ldLnNlY29uZC5nZXQoKTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmso
dm0sIG1fc291cmNlLCBsaW5lTm8oKSksIHNjb3BlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5h
ZGRGdW5jdGlvbihjYWxsRnJhbWUsIGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLmZpcnN0LCB2YWx1
ZSk7Ci0gICAgICAgIGlmICh2bS5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgICAgICB2bS5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCAKLSAgICAg
ICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIAotICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAg
ICBpZiAodm0udHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgICAgIHZtLnR5cGVQcm9maWxlcigp
LT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJj
ZUlEKCksIAorICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBl
UHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgCisgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJl
dmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw4IEBAIHB1YmxpYzoKICAgICBpbnQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQg
ZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KLSAgICB1bnNpZ25lZCBo
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldDsgfQotICAgIHVuc2lnbmVkIGhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsg
fQorICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZTsgfQpAQCAt
NDM3LDggKzQzNyw4IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB1bnNp
Z25lZCBtX3N0YXJ0Q29sdW1uOwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwotICAgIHVuc2ln
bmVkIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwotICAgIHVuc2lnbmVk
IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7CiB9OwogCiBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5TG9nLmNwcAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKLQotI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotdm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxp
emVIaWdoRmlkZWxpdHlMb2coKQotewotICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAg
bV9oaWdoRmlkZWxpdHlMb2dTaXplID0gNTAwMDA7Ci0gICAgbV9sb2dTdGFydFB0ciA9IG5ldyBM
b2dFbnRyeVttX2hpZ2hGaWRlbGl0eUxvZ1NpemVdOwotICAgIG1fY3VycmVudExvZ0VudHJ5UHRy
ID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3RhcnRQdHIgKyBtX2hp
Z2hGaWRlbGl0eUxvZ1NpemU7Ci19Ci0KLUhpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRlbGl0eUxv
ZygpCi17Ci0gICAgZGVsZXRlW10gbV9sb2dTdGFydFB0cjsKLX0KLQotdm9pZCBIaWdoRmlkZWxp
dHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coU3RyaW5nIHJlYXNvbikKLXsKLSAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwiJyIp
OwotCi0gICAgZG91YmxlIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSAgICBMb2dFbnRyeSog
ZW50cnkgPSBtX2xvZ1N0YXJ0UHRyOwotICAgIEhhc2hNYXA8U3RydWN0dXJlSUQsIFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4+IHNlZW5TaGFwZXM7Ci0gICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVu
dExvZ0VudHJ5UHRyKSB7Ci0gICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVy
ZUlEOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKLSAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGVudHJ5LT52YWx1ZTsKLSAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBzZWVuU2hhcGVzLmZpbmQoaWQpOwotICAgICAgICAgICAgaWYgKGl0ZXIg
PT0gc2VlblNoYXBlcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIHNoYXBlID0gSGVhcDo6aGVh
cCh2YWx1ZS5hc0NlbGwoKSktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoZW50cnktPnN0cnVjdHVy
ZUlEKS0+dG9TdHJ1Y3R1cmVTaGFwZSh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc2VlblNoYXBl
cy5zZXQoaWQsIHNoYXBlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNo
YXBlID0gaXRlci0+dmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBSdW50aW1lVHlwZSB0eXBl
ID0gVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIFR5cGVM
b2NhdGlvbiogbG9jYXRpb24gPSBlbnRyeS0+bG9jYXRpb247Ci0gICAgICAgIGxvY2F0aW9uLT5t
X2xhc3RTZWVuVHlwZSA9IHR5cGU7Ci0gICAgICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0KQotICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlwZUluZm9y
bWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7Ci0gICAgICAgIGxvY2F0aW9uLT5tX2luc3RydWN0aW9u
VHlwZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7Ci0KLSAgICAgICAg
ZW50cnkrKzsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQ
dHI7Ci0KLSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50
VGltZU1TKCk7Ci0gICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICcl
ZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKLSAgICB9Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlM
b2cuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGlnaEZpZGVsaXR5TG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhpZ2hGaWRl
bGl0eUxvZ19oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0eUxvZ19oCi0KLSNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCi0jaW5jbHVkZSAi
U3RydWN0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVTcGluTG9jay5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotY2xhc3MgVHlwZUxvY2F0aW9uOwotCi1jbGFzcyBIaWdoRmlkZWxpdHlMb2cgewot
Ci1wdWJsaWM6Ci0gICAgc3RydWN0IExvZ0VudHJ5IHsKLSAgICAgICAgcHVibGljOgotICAgICAg
ICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAKLSAgICAg
ICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBz
dHJ1Y3R1cmVJRE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgc3Ry
dWN0dXJlSUQpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgdmFsdWVPZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTG9nRW50cnksIHZhbHVlKTsgfQotICAgICAgICBzdGF0aWMg
cHRyZGlmZl90IGxvY2F0aW9uT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKExvZ0Vu
dHJ5LCBsb2NhdGlvbik7IH0KLSAgICB9OwotCi0KLSAgICBIaWdoRmlkZWxpdHlMb2coKQotICAg
ICAgICA6IG1fbG9nU3RhcnRQdHIoMCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVIaWdoRmlk
ZWxpdHlMb2coKTsKLSAgICB9Ci0KLSAgICB+SGlnaEZpZGVsaXR5TG9nKCk7Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2
YWx1ZSwgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xv
Z1N0YXJ0UHRyKTsKLQotICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ci0+bG9jYXRpb24gPSBs
b2NhdGlvbjsKLSAgICAgICAgbV9jdXJyZW50TG9nRW50cnlQdHItPnZhbHVlID0gdmFsdWU7Ci0g
ICAgICAgIG1fY3VycmVudExvZ0VudHJ5UHRyLT5zdHJ1Y3R1cmVJRCA9ICh2YWx1ZS5pc0NlbGwo
KSA/IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpIDogMCk7Ci0gICAgCi0gICAgICAgIG1f
Y3VycmVudExvZ0VudHJ5UHRyICs9IDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRM
b2dFbnRyeVB0ciA9PSBtX2xvZ0VuZFB0cikpCi0gICAgICAgICAgICBwcm9jZXNzSGlnaEZpZGVs
aXR5TG9nKCJMb2cgRnVsbCIpOwotICAgIH0KLQotICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0
eUxvZyhTdHJpbmcpOwotICAgIExvZ0VudHJ5KiBsb2dFbmRQdHIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0VuZFB0cjsgfQotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBsb2dTdGFydE9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihIaWdoRmlkZWxpdHlMb2csIG1fbG9nU3RhcnRQdHIpOyB9
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBjdXJyZW50TG9nRW50cnlPZmZzZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSGlnaEZpZGVsaXR5TG9nLCBtX2N1cnJlbnRMb2dFbnRyeVB0cik7IH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKLQotICAg
IHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKLSAgICBMb2dFbnRyeSogbV9sb2dTdGFy
dFB0cjsKLSAgICBMb2dFbnRyeSogbV9jdXJyZW50TG9nRW50cnlQdHI7Ci0gICAgTG9nRW50cnkq
IG1fbG9nRW5kUHRyOwotfTsKLQotfSAvL25hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vSGlnaEZp
ZGVsaXR5TG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAkocmV2aXNpb24gMTcyNzkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0KLXZvaWQgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uKQotewotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVt
ZW50ID8gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuIDogVHlwZVBy
b2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbDsKLQotICAgIGRhdGFMb2dGKCJbU3RhcnQsIEVu
ZF06OlsldSwgJXVdXG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZv
dEVuZCk7Ci0KLSAgICBpZiAoZmluZExvY2F0aW9uKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxv
Y2F0aW9uLT5tX3NvdXJjZUlELCBkZXNjcmlwdG9yKSkKLSAgICAgICAgZGF0YUxvZygiXHRcdFtF
bnRyeSBJUyBpbiBTeXN0ZW1dXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGFMb2coIlx0XHRb
RW50cnkgSVMgTk9UIGluIHN5c3RlbV1cbiIpOwotCi0gICAgZGF0YUxvZygiXHRcdCIsIGxvY2F0
aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50ID8g
IltSZXR1cm4gU3RhdGVtZW50XSIgOiAiW05vcm1hbCBTdGF0ZW1lbnRdIiwgIlxuIik7Ci0KLSAg
ICBkYXRhTG9nKCJcdFx0I0xvY2FsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlw
ZVNldC0+c2VlblR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwotICAgIGlm
IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICBkYXRhTG9nKCJcdFx0I0dsb2Jh
bCNcblx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNl
KCJcbiIsICJcblx0XHQiKSwgIlxuIik7Ci19Ci0KLXZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQotewotICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBkaXZv
dFN0YXJ0OiV1LCBkaXZvdEVuZDoldVxuIiwgbG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRp
b24tPm1fZGl2b3RFbmQpOwotCi0gICAgaWYgKCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlv
bi0+bV9zb3VyY2VJRCkpIHsKLSAgICAgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+IGJ1Y2tldDsK
LSAgICAgICAgbV9idWNrZXRNYXAuc2V0KGxvY2F0aW9uLT5tX3NvdXJjZUlELCBidWNrZXQpOwot
ICAgIH0KLQotICAgIFZlY3RvcjxUeXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9idWNrZXRNYXAu
ZmluZChsb2NhdGlvbi0+bV9zb3VyY2VJRCktPnZhbHVlOwotICAgIGJ1Y2tldC5hcHBlbmQobG9j
YXRpb24pOwotfQotCi12b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3Ig
ZGVzY3JpcHRvciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPiYgZGVzY3JpcHRp
b24pCi17Ci0gICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwg
c291cmNlSUQsIGRlc2NyaXB0b3IpOwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2ds
b2JhbFZhcmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0cykgewotICAgICAg
ICBkZXNjcmlwdGlvbi0+c2V0RGlzcGxheVR5cGVOYW1lKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQtPmRpc3BsYXlOYW1lKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0R2xvYmFsUHJpbWl0
aXZlVHlwZU5hbWVzKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFsbFByaW1pdGl2ZVR5cGVO
YW1lcygpKTsKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldEdsb2JhbFN0cnVjdHVyZXMobG9jYXRp
b24tPm1fZ2xvYmFsVHlwZVNldC0+YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkpOwotICAg
IH0gZWxzZQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0RGlzcGxheVR5cGVOYW1lKGxvY2F0aW9u
LT5tX2luc3RydWN0aW9uVHlwZVNldC0+ZGlzcGxheU5hbWUoKSk7Ci0KLSAgICBkZXNjcmlwdGlv
bi0+c2V0TG9jYWxQcmltaXRpdmVUeXBlTmFtZXMobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBl
U2V0LT5hbGxQcmltaXRpdmVUeXBlTmFtZXMoKSk7Ci0gICAgZGVzY3JpcHRpb24tPnNldExvY2Fs
U3RydWN0dXJlcyhsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFN0cnVjdHVyZVJl
cHJlc2VudGF0aW9ucygpKTsKLX0KLQotc3RhdGljIGJvb2wgZGVzY3JpcHRvck1hdGNoZXNUeXBl
TG9jYXRpb24oVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCBUeXBlTG9j
YXRpb24qIGxvY2F0aW9uKQotewotICAgIGlmIChkZXNjcmlwdG9yID09IFR5cGVQcm9maWxlclNl
YXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJs
ZUlEID09IEhpZ2hGaWRlbGl0eVJldHVyblN0YXRlbWVudCkgIAotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGlmIChkZXNjcmlwdG9yID09IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JO
b3JtYWwgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlSZXR1
cm5TdGF0ZW1lbnQpICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVR5cGVMb2NhdGlvbiogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpCi17Ci0gICAgUXVlcnlLZXkgcXVlcnlLZXkoc291cmNlSUQs
IGRpdm90KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3F1ZXJ5Q2FjaGUuZmluZChxdWVyeUtleSk7Ci0g
ICAgaWYgKGl0ZXIgIT0gbV9xdWVyeUNhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7Ci0KLSAgICBpZiAoIW1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmhhc0V4ZWN1dGVk
QXRPZmZzZXQoc291cmNlSUQsIGRpdm90KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBBU1NFUlQobV9idWNrZXRNYXAuY29udGFpbnMoc291cmNlSUQpKTsKLQotICAgIFZlY3RvcjxU
eXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9idWNrZXRNYXAuZmluZChzb3VyY2VJRCktPnZhbHVl
OwotICAgIFR5cGVMb2NhdGlvbiogYmVzdE1hdGNoID0gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBk
aXN0YW5jZSA9IFVJTlRfTUFYOyAvLyBCZWNhdXNlIGFzc2lnbm1lbnRzIG1heSBiZSBuZXN0ZWQs
IG1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBjbG9zZXN0IGVuY2xvc2luZyBhc3NpZ25tZW50IHRvIHRo
aXMgY2hhcmFjdGVyIG9mZnNldC4KLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGJ1Y2tl
dC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlv
biA9IGJ1Y2tldC5hdChpKTsKLSAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuICYmIGRlc2NyaXB0b3JNYXRjaGVzVHlwZUxv
Y2F0aW9uKGRlc2NyaXB0b3IsIGxvY2F0aW9uKSAmJiBsb2NhdGlvbi0+bV9kaXZvdEZvckZ1bmN0
aW9uT2Zmc2V0SWZSZXR1cm5TdGF0ZW1lbnQgPT0gZGl2b3QpCi0gICAgICAgICAgICByZXR1cm4g
bG9jYXRpb247Ci0KLSAgICAgICAgaWYgKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0gZGl2b3Qg
JiYgZGl2b3QgPD0gbG9jYXRpb24tPm1fZGl2b3RFbmQgJiYgbG9jYXRpb24tPm1fZGl2b3RFbmQg
LSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0IDw9IGRpc3RhbmNlICYmIGRlc2NyaXB0b3JNYXRjaGVz
VHlwZUxvY2F0aW9uKGRlc2NyaXB0b3IsIGxvY2F0aW9uKSkgewotICAgICAgICAgICAgZGlzdGFu
Y2UgPSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQ7Ci0gICAg
ICAgICAgICBiZXN0TWF0Y2ggPSBsb2NhdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChiZXN0TWF0Y2gpCi0gICAgICAgIG1fcXVlcnlDYWNoZS5zZXQocXVlcnlLZXksIGJlc3RNYXRj
aCk7Ci0gICAgLy8gRklYTUU6IEJlc3RNYXRjaCBzaG91bGQgbmV2ZXIgYmUgbnVsbCBwYXN0IHRo
aXMgcG9pbnQuIFRoaXMgZG9lc24ndCBob2xkIGN1cnJlbnRseSBiZWNhdXNlIHdlIGlnbm9yZSB2
YXIgYXNzaWdubWVudHMgd2hlbiBjb2RlIGNvbnRhaW5zIGV2YWwvV2l0aCAoVmFySW5qZWN0aW9u
KS4gCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE4
NAotICAgIHJldHVybiBiZXN0TWF0Y2g7Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcl9oCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNpbmNsdWRlICJUeXBlTG9jYXRpb25DYWNoZS5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNw
YWNlIFR5cGVCdWlsZGVyICB7IG5hbWVzcGFjZSBSdW50aW1lIHsKLWNsYXNzIFR5cGVEZXNjcmlw
dGlvbjsKLX19fQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVHlwZUxvY2F0aW9uOwotCi1z
dHJ1Y3QgUXVlcnlLZXkgewotICAgIFF1ZXJ5S2V5KCkKLSAgICAgICAgOiBtX3NvdXJjZUlEKDAp
Ci0gICAgICAgICwgbV9kaXZvdCgwKQotICAgIHsgfQotCi0gICAgUXVlcnlLZXkoaW50cHRyX3Qg
c291cmNlSUQsIHVuc2lnbmVkIGRpdm90KQotICAgICAgICA6IG1fc291cmNlSUQoc291cmNlSUQp
Ci0gICAgICAgICwgbV9kaXZvdChkaXZvdCkKLSAgICB7IH0KLQotICAgIFF1ZXJ5S2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUlEKElOVFBUUl9N
QVgpCi0gICAgICAgICwgbV9kaXZvdChVSU5UX01BWCkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEID09IElOVFBU
Ul9NQVggJiYgbV9kaXZvdCA9PSBVSU5UX01BWDsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBRdWVyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgPT0gb3RoZXIubV9z
b3VyY2VJRCAmJiBtX2Rpdm90ID09IG90aGVyLm1fZGl2b3Q7IH0KLSAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCArIG1fZGl2b3Q7IH0KLQotICAgIGludHB0cl90
IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9kaXZvdDsKLX07Ci0KLXN0cnVjdCBRdWVyeUtl
eUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1ZXJ5S2V5JiBrZXkpIHsg
cmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBRdWVyeUtl
eSYgYSwgY29uc3QgUXVlcnlLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLX0g
Ly9uYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6
OlF1ZXJ5S2V5PiB7Ci0gICAgdHlwZWRlZiBKU0M6OlF1ZXJ5S2V5SGFzaCBIYXNoOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPEpTQzo6UXVlcnlLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6
UXVlcnlLZXk+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1lbnVtIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgewotICAgIFR5cGVQcm9maWxlclNl
YXJjaERlc2NyaXB0b3JOb3JtYWwgPSAxLAotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JGdW5jdGlvblJldHVybiA9IDIKLX07Ci0KLWNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRp
b24qKTsKLSAgICB2b2lkIGdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBp
bnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj4mKTsKLSAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2Nh
dGlvbiopOwotICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlKCkgeyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9Ci0gICAgVHlw
ZUxvY2F0aW9uQ2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0
aW9uQ2FjaGU7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgVmVj
dG9yPFR5cGVMb2NhdGlvbio+PiBTb3VyY2VJRFRvTG9jYXRpb25CdWNrZXRNYXA7Ci0gICAgU291
cmNlSURUb0xvY2F0aW9uQnVja2V0TWFwIG1fYnVja2V0TWFwOwotICAgIEZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSBtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25D
YWNoZSBtX3R5cGVMb2NhdGlvbkNhY2hlOwotICAgIHR5cGVkZWYgSGFzaE1hcDxRdWVyeUtleSwg
VHlwZUxvY2F0aW9uKj4gVHlwZUxvY2F0aW9uUXVlcnlDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25R
dWVyeUNhY2hlIG1fcXVlcnlDYWNoZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5k
aWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyArMjc0LDcg
QEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgZ2NN
YXhIZWFwU2l6ZSwgMCkgXAogICAgIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkg
XAogICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCi0gICAgdihi
b29sLCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCBmYWxzZSkgXAorICAgIHYoYm9vbCwg
ZW5hYmxlVHlwZVByb2ZpbGVyLCBmYWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUV4
Y2VwdGlvbkZ1enosIGZhbHNlKSBcCiAgICAgdih1bnNpZ25lZCwgZmlyZUV4Y2VwdGlvbkZ1enpB
dCwgMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN5bWJv
bFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVDYXB0dXJlZE4KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIFN5bWJvbFRhYmxlOjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5VHlwZVByb2ZpbGlu
Zyhjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikKK3ZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVG
b3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKQogewogICAgIGlmICht
X3R5cGVQcm9maWxpbmdSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVGb3JIaWdoRmlkZWxpdHkKICAgICBtX3R5cGVQ
cm9maWxpbmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGluZ1JhcmVEYXRh
PigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBtX3R5cGVQcm9maWxpbmdSYXJl
RGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1
ZUlER2VuZXJhdGlvbik7CisgICAgICAgIG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3VuaXF1
ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
KTsKICAgICAgICAgbV90eXBlUHJvZmlsaW5nUmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxl
TWFwLnNldChpdGVyLT52YWx1ZS5nZXRJbmRleCgpLCBpdGVyLT5rZXkpOwogICAgIH0KIH0KQEAg
LTIwNywxMCArMjA3LDEwIEBAIEdsb2JhbFZhcmlhYmxlSUQgU3ltYm9sVGFibGU6OnVuaXF1ZUlE
Rm8KICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1h
cC5maW5kKGtleSk7CiAgICAgYXV0byBlbmQgPSBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91
bmlxdWVJRE1hcC5lbmQoKTsKICAgICBpZiAoaXRlciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBI
aWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzOworICAgICAgICByZXR1cm4gVHlwZVByb2ZpbGVy
Tm9HbG9iYWxJREV4aXN0czsKIAogICAgIEdsb2JhbFZhcmlhYmxlSUQgaWQgPSBpdGVyLT52YWx1
ZTsKLSAgICBpZiAoaWQgPT0gSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsK
KyAgICBpZiAoaWQgPT0gVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsKICAg
ICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpOwogICAgICAgICBtX3R5cGVQ
cm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoa2V5LCBpZCk7CiAgICAgICAgIG1f
dHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGtleSwgVHlwZVNl
dDo6Y3JlYXRlKCkpOyAvLyBNYWtlIGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGlzIGNvcnJl
c3BvbmRpbmcgSUQuCkBAIC0yMjYsNyArMjI2LDcgQEAgR2xvYmFsVmFyaWFibGVJRCBTeW1ib2xU
YWJsZTo6dW5pcXVlSURGbwogICAgIGF1dG8gaXRlciA9IG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRh
LT5tX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC5maW5kKHJlZ2lzdGVySW5kZXgpOwogICAgIGF1dG8g
ZW5kID0gbV90eXBlUHJvZmlsaW5nUmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLmVu
ZCgpOwogICAgIGlmIChpdGVyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIEhpZ2hGaWRlbGl0eU5v
R2xvYmFsSURFeGlzdHM7CisgICAgICAgIHJldHVybiBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhp
c3RzOwogCiAgICAgcmV0dXJuIHVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1
ZS5nZXQoKSwgdm0pOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAg
cHVibGljOgogICAgIAogICAgIFN5bWJvbFRhYmxlKiBjbG9uZUNhcHR1cmVkTmFtZXMoVk0mKTsK
IAotICAgIHZvaWQgcHJlcGFyZUZvckhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYpOworICAgIHZvaWQgcHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgorCisjaW5j
bHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKKwordm9pZCBUeXBlUHJvZmlsZXI6OmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24pCit7CisgICAgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1
cm5TdGF0ZW1lbnQgPyBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4g
OiBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsOworCisgICAgZGF0YUxvZ0YoIltT
dGFydCwgRW5kXTo6WyV1LCAldV1cbiIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9u
LT5tX2Rpdm90RW5kKTsKKworICAgIGlmIChmaW5kTG9jYXRpb24obG9jYXRpb24tPm1fZGl2b3RT
dGFydCwgbG9jYXRpb24tPm1fc291cmNlSUQsIGRlc2NyaXB0b3IpKQorICAgICAgICBkYXRhTG9n
KCJcdFx0W0VudHJ5IElTIGluIFN5c3RlbV1cbiIpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxv
ZygiXHRcdFtFbnRyeSBJUyBOT1QgaW4gc3lzdGVtXVxuIik7CisKKyAgICBkYXRhTG9nKCJcdFx0
IiwgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0
ZW1lbnQgPyAiW1JldHVybiBTdGF0ZW1lbnRdIiA6ICJbTm9ybWFsIFN0YXRlbWVudF0iLCAiXG4i
KTsKKworICAgIGRhdGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1
Y3Rpb25UeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxuIik7
CisgICAgaWYgKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQpCisgICAgICAgIGRhdGFMb2coIlx0
XHQjR2xvYmFsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnNlZW5UeXBlcygp
LnJlcGxhY2UoIlxuIiwgIlxuXHRcdCIpLCAiXG4iKTsKK30KKwordm9pZCBUeXBlUHJvZmlsZXI6
Omluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGRhdGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3Rh
cnQ6JXUsIGRpdm90RW5kOiV1XG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+
bV9kaXZvdEVuZCk7CisKKyAgICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5t
X3NvdXJjZUlEKSkgeworICAgICAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4gYnVja2V0OworICAg
ICAgICBtX2J1Y2tldE1hcC5zZXQobG9jYXRpb24tPm1fc291cmNlSUQsIGJ1Y2tldCk7CisgICAg
fQorCisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBtX2J1Y2tldE1hcC5maW5k
KGxvY2F0aW9uLT5tX3NvdXJjZUlEKS0+dmFsdWU7CisgICAgYnVja2V0LmFwcGVuZChsb2NhdGlv
bik7Cit9CisKK3ZvaWQgVHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRG
b3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCB1bnNp
Z25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+JiBkZXNjcmlwdGlvbikKK3sKKyAgICBUeXBl
TG9jYXRpb24qIGxvY2F0aW9uID0gZmluZExvY2F0aW9uKGRpdm90LCBzb3VyY2VJRCwgZGVzY3Jp
cHRvcik7CisgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAh
PSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzKSB7CisgICAgICAgIGRlc2NyaXB0aW9uLT5z
ZXREaXNwbGF5VHlwZU5hbWUobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+ZGlzcGxheU5hbWUo
KSk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRHbG9iYWxQcmltaXRpdmVUeXBlTmFtZXMobG9j
YXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkpOworICAgICAg
ICBkZXNjcmlwdGlvbi0+c2V0R2xvYmFsU3RydWN0dXJlcyhsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0LT5hbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGRlc2NyaXB0aW9uLT5zZXREaXNwbGF5VHlwZU5hbWUobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25U
eXBlU2V0LT5kaXNwbGF5TmFtZSgpKTsKKworICAgIGRlc2NyaXB0aW9uLT5zZXRMb2NhbFByaW1p
dGl2ZVR5cGVOYW1lcyhsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFByaW1pdGl2
ZVR5cGVOYW1lcygpKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0TG9jYWxTdHJ1Y3R1cmVzKGxvY2F0
aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkp
OworfQorCitzdGF0aWMgYm9vbCBkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbihUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24p
Cit7CisgICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1
bmN0aW9uUmV0dXJuICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gVHlwZVByb2Zp
bGVyUmV0dXJuU3RhdGVtZW50KSAgCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGRl
c2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCAmJiBsb2NhdGlv
bi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9IFR5cGVQcm9maWxlclJldHVyblN0YXRlbWVudCkgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworVHlwZUxvY2F0
aW9uKiBUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbih1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qg
c291cmNlSUQsIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvcikKK3sKKyAg
ICBRdWVyeUtleSBxdWVyeUtleShzb3VyY2VJRCwgZGl2b3QpOworICAgIGF1dG8gaXRlciA9IG1f
cXVlcnlDYWNoZS5maW5kKHF1ZXJ5S2V5KTsKKyAgICBpZiAoaXRlciAhPSBtX3F1ZXJ5Q2FjaGUu
ZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKworICAgIGlmICghbV9mdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuaGFzRXhlY3V0ZWRBdE9mZnNldChzb3VyY2VJRCwgZGl2b3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChtX2J1Y2tldE1hcC5jb250YWlu
cyhzb3VyY2VJRCkpOworCisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBtX2J1
Y2tldE1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7CisgICAgVHlwZUxvY2F0aW9uKiBiZXN0TWF0
Y2ggPSBudWxscHRyOworICAgIHVuc2lnbmVkIGRpc3RhbmNlID0gVUlOVF9NQVg7IC8vIEJlY2F1
c2UgYXNzaWdubWVudHMgbWF5IGJlIG5lc3RlZCwgbWFrZSBzdXJlIHdlIGZpbmQgdGhlIGNsb3Nl
c3QgZW5jbG9zaW5nIGFzc2lnbm1lbnQgdG8gdGhpcyBjaGFyYWN0ZXIgb2Zmc2V0LgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYnVja2V0LnNpemUoKTsgaSA8IHNpemU7IGkrKykgewor
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gYnVja2V0LmF0KGkpOworICAgICAgICBp
ZiAoZGVzY3JpcHRvciA9PSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1
cm4gJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwgbG9jYXRpb24p
ICYmIGxvY2F0aW9uLT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudCA9
PSBkaXZvdCkKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjsKKworICAgICAgICBpZiAobG9j
YXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXZvdCAmJiBkaXZvdCA8PSBsb2NhdGlvbi0+bV9kaXZv
dEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0g
ZGlzdGFuY2UgJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwgbG9j
YXRpb24pKSB7CisgICAgICAgICAgICBkaXN0YW5jZSA9IGxvY2F0aW9uLT5tX2Rpdm90RW5kIC0g
bG9jYXRpb24tPm1fZGl2b3RTdGFydDsKKyAgICAgICAgICAgIGJlc3RNYXRjaCA9IGxvY2F0aW9u
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJlc3RNYXRjaCkKKyAgICAgICAgbV9xdWVy
eUNhY2hlLnNldChxdWVyeUtleSwgYmVzdE1hdGNoKTsKKyAgICAvLyBGSVhNRTogQmVzdE1hdGNo
IHNob3VsZCBuZXZlciBiZSBudWxsIHBhc3QgdGhpcyBwb2ludC4gVGhpcyBkb2Vzbid0IGhvbGQg
Y3VycmVudGx5IGJlY2F1c2Ugd2UgaWdub3JlIHZhciBhc3NpZ25tZW50cyB3aGVuIGNvZGUgY29u
dGFpbnMgZXZhbC9XaXRoIChWYXJJbmplY3Rpb24pLiAKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTg0CisgICAgcmV0dXJuIGJlc3RNYXRjaDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
eXBlUHJvZmlsZXJfaAorI2RlZmluZSBUeXBlUHJvZmlsZXJfaAorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiCisjaW5jbHVkZSAi
VHlwZUxvY2F0aW9uQ2FjaGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBUeXBlQnVpbGRlciAgeyBuYW1lc3BhY2UgUnVudGlt
ZSB7CitjbGFzcyBUeXBlRGVzY3JpcHRpb247Cit9fX0KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIFR5cGVMb2NhdGlvbjsKKworc3RydWN0IFF1ZXJ5S2V5IHsKKyAgICBRdWVyeUtleSgpCisg
ICAgICAgIDogbV9zb3VyY2VJRCgwKQorICAgICAgICAsIG1fZGl2b3QoMCkKKyAgICB7IH0KKwor
ICAgIFF1ZXJ5S2V5KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBkaXZvdCkKKyAgICAgICAg
OiBtX3NvdXJjZUlEKHNvdXJjZUlEKQorICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCisgICAgeyB9
CisKKyAgICBRdWVyeUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9zb3VyY2VJRChJTlRQVFJfTUFYKQorICAgICAgICAsIG1fZGl2b3QoVUlOVF9NQVgpCisg
ICAgeyB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJRCA9PSBJTlRQVFJfTUFYICYmIG1fZGl2b3QgPT0gVUlOVF9NQVg7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUlEID09IG90aGVyLm1fc291cmNlSUQgJiYgbV9kaXZvdCA9PSBvdGhlci5tX2Rpdm90
OyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgKyBtX2Rp
dm90OyB9CisKKyAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOworICAgIHVuc2lnbmVkIG1fZGl2b3Q7
Cit9OworCitzdHJ1Y3QgUXVlcnlLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBRdWVyeUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgUXVlcnlLZXkmIGEsIGNvbnN0IFF1ZXJ5S2V5JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPEpTQzo6UXVlcnlLZXk+IHsKKyAgICB0eXBlZGVmIEpTQzo6UXVl
cnlLZXlIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4gOiBTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4geyB9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ciB7CisgICAgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCA9IDEsCisgICAgVHlw
ZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuID0gMgorfTsKKworY2xhc3Mg
VHlwZVByb2ZpbGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIGxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9u
KFR5cGVMb2NhdGlvbiopOworICAgIHZvaWQgZ2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9y
SW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBp
bnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj4mKTsKKyAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2Nh
dGlvbiopOworICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlKCkgeyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9CisgICAgVHlw
ZUxvY2F0aW9uQ2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0
aW9uQ2FjaGU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yKTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFZlY3RvcjxUeXBlTG9j
YXRpb24qPj4gU291cmNlSURUb0xvY2F0aW9uQnVja2V0TWFwOworICAgIFNvdXJjZUlEVG9Mb2Nh
dGlvbkJ1Y2tldE1hcCBtX2J1Y2tldE1hcDsKKyAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUg
bV9mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU7CisgICAgVHlwZUxvY2F0aW9uQ2FjaGUgbV90eXBl
TG9jYXRpb25DYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UXVlcnlLZXksIFR5cGVMb2NhdGlv
bio+IFR5cGVMb2NhdGlvblF1ZXJ5Q2FjaGU7CisgICAgVHlwZUxvY2F0aW9uUXVlcnlDYWNoZSBt
X3F1ZXJ5Q2FjaGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFR5cGVQ
cm9maWxlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlckxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCit2b2lkIFR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6
ZUxvZygpCit7CisgICAgQVNTRVJUKCFtX2xvZ1N0YXJ0UHRyKTsKKyAgICBtX2xvZ1NpemUgPSA1
MDAwMDsKKyAgICBtX2xvZ1N0YXJ0UHRyID0gbmV3IExvZ0VudHJ5W21fbG9nU2l6ZV07CisgICAg
bV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOworICAgIG1fbG9nRW5kUHRyID0g
bV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZTsKK30KKworVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVBy
b2ZpbGVyTG9nKCkKK3sKKyAgICBkZWxldGVbXSBtX2xvZ1N0YXJ0UHRyOworfQorCit2b2lkIFR5
cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoU3RyaW5nIHJlYXNvbikKK3sKKyAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwi
JyIpOworCisgICAgZG91YmxlIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICBMb2dFbnRy
eSogZW50cnkgPSBtX2xvZ1N0YXJ0UHRyOworICAgIEhhc2hNYXA8U3RydWN0dXJlSUQsIFJlZlB0
cjxTdHJ1Y3R1cmVTaGFwZT4+IHNlZW5TaGFwZXM7CisgICAgd2hpbGUgKGVudHJ5ICE9IG1fY3Vy
cmVudExvZ0VudHJ5UHRyKSB7CisgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVj
dHVyZUlEOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGVudHJ5LT52YWx1ZTsKKyAgICAgICAgaWYgKGlkKSB7CisgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBzZWVuU2hhcGVzLmZpbmQoaWQpOworICAgICAgICAgICAgaWYgKGl0
ZXIgPT0gc2VlblNoYXBlcy5lbmQoKSkgeworICAgICAgICAgICAgICAgIHNoYXBlID0gSGVhcDo6
aGVhcCh2YWx1ZS5hc0NlbGwoKSktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoZW50cnktPnN0cnVj
dHVyZUlEKS0+dG9TdHJ1Y3R1cmVTaGFwZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgc2VlblNo
YXBlcy5zZXQoaWQsIHNoYXBlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHNoYXBlID0gaXRlci0+dmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBSdW50aW1lVHlwZSB0
eXBlID0gVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1ZSh2YWx1ZSk7CisgICAgICAgIFR5
cGVMb2NhdGlvbiogbG9jYXRpb24gPSBlbnRyeS0+bG9jYXRpb247CisgICAgICAgIGxvY2F0aW9u
LT5tX2xhc3RTZWVuVHlwZSA9IHR5cGU7CisgICAgICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxU
eXBlU2V0KQorICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlwZUlu
Zm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7CisgICAgICAgIGxvY2F0aW9uLT5tX2luc3RydWN0
aW9uVHlwZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7CisKKyAgICAg
ICAgZW50cnkrKzsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3Rh
cnRQdHI7CisKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJy
ZW50VGltZU1TKCk7CisgICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6
ICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKKyAgICB9Cit9CisKK30gLy9uYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlckxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUeXBlUHJvZmls
ZXJMb2dfaAorI2RlZmluZSBUeXBlUHJvZmlsZXJMb2dfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgor
I2luY2x1ZGUgPHd0Zi9CeXRlU3BpbkxvY2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFR5cGVMb2NhdGlvbjsKKworY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKKworcHVibGljOgorICAg
IHN0cnVjdCBMb2dFbnRyeSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZTsKKyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsgCisgICAgICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEOworCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTG9nRW50cnksIHN0cnVjdHVyZUlEKTsgfQor
ICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHZhbHVlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKExvZ0VudHJ5LCB2YWx1ZSk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBsb2Nh
dGlvbk9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgbG9jYXRpb24p
OyB9CisgICAgfTsKKworCisgICAgVHlwZVByb2ZpbGVyTG9nKCkKKyAgICAgICAgOiBtX2xvZ1N0
YXJ0UHRyKDApCisgICAgeworICAgICAgICBpbml0aWFsaXplTG9nKCk7CisgICAgfQorCisgICAg
flR5cGVQcm9maWxlckxvZygpOworCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlY29yZFR5cGVJ
bmZvcm1hdGlvbkZvckxvY2F0aW9uKEpTVmFsdWUgdmFsdWUsIFR5cGVMb2NhdGlvbiogbG9jYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlQobV9sb2dTdGFydFB0cik7CisKKyAgICAgICAgbV9j
dXJyZW50TG9nRW50cnlQdHItPmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIG1fY3VycmVu
dExvZ0VudHJ5UHRyLT52YWx1ZSA9IHZhbHVlOworICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0
ci0+c3RydWN0dXJlSUQgPSAodmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlSUQoKSA6IDApOworICAgIAorICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciArPSAxOwor
ICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50TG9nRW50cnlQdHIgPT0gbV9sb2dFbmRQdHIp
KQorICAgICAgICAgICAgcHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCIp
KTsKKyAgICB9CisKKyAgICB2b2lkIHByb2Nlc3NMb2dFbnRyaWVzKFN0cmluZyk7CisgICAgTG9n
RW50cnkqIGxvZ0VuZFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nRW5kUHRyOyB9CisKKyAgICBz
dGF0aWMgcHRyZGlmZl90IGxvZ1N0YXJ0T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFR5cGVQcm9maWxlckxvZywgbV9sb2dTdGFydFB0cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IGN1cnJlbnRMb2dFbnRyeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihUeXBlUHJv
ZmlsZXJMb2csIG1fY3VycmVudExvZ0VudHJ5UHRyKTsgfQorCitwcml2YXRlOgorICAgIHZvaWQg
aW5pdGlhbGl6ZUxvZygpOworCisgICAgdW5zaWduZWQgbV9sb2dTaXplOworICAgIExvZ0VudHJ5
KiBtX2xvZ1N0YXJ0UHRyOworICAgIExvZ0VudHJ5KiBtX2N1cnJlbnRMb2dFbnRyeVB0cjsKKyAg
ICBMb2dFbnRyeSogbV9sb2dFbmRQdHI7Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gVHlwZVByb2ZpbGVyTG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQAogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJI
aWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAt
ODQsNiArODIsOCBAQAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNs
dWRlICJUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMTkzLDcgKzE5Myw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxw
dHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZSgqdGhpcykpCiAgICAgLCBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCi0gICAgLCBtX2hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291bnQoMCkKKyAgICAsIG1fdHlwZVByb2ZpbGVy
RW5hYmxlZENvdW50KDApCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRo
aXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CkBA
IC0yODYsOCArMjg2LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBh
ZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBpZiAoT3B0
aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBlbmFibGVIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsaW5nKCk7CisgICAgaWYgKE9wdGlvbnM6OmVuYWJsZVR5cGVQcm9m
aWxlcigpKQorICAgICAgICBlbmFibGVUeXBlUHJvZmlsZXIoKTsKIH0KIAogVk06On5WTSgpCkBA
IC04OTksMjkgKzg5OSwyOSBAQCBUeXBlTG9jYXRpb24qIFZNOjpuZXh0VHlwZUxvY2F0aW9uKCkg
CiAgICAgcmV0dXJuIG1fdHlwZUxvY2F0aW9uSW5mby0+YWRkKCk7IAogfQogCi1ib29sIFZNOjpl
bmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkKK2Jvb2wgVk06OmVuYWJsZVR5cGVQcm9m
aWxlcigpCiB7CiAgICAgYm9vbCBuZWVkc1RvUmVjb21waWxlID0gZmFsc2U7Ci0gICAgaWYgKCFt
X2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291bnQpIHsKLSAgICAgICAgbV9oaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlcj4oKTsKLSAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhpZ2hGaWRlbGl0eUxvZz4oKTsKKyAgICBpZiAoIW1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50
KSB7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlUHJvZmls
ZXI+KCk7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyTG9nID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBl
UHJvZmlsZXJMb2c+KCk7CiAgICAgICAgIG1fdHlwZUxvY2F0aW9uSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFnPFR5cGVMb2NhdGlvbj4+KCk7CiAgICAgICAgIG5lZWRzVG9SZWNvbXBpbGUgPSB0
cnVlOwogICAgIH0KLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291bnQr
KzsKKyAgICBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCsrOwogCiAgICAgcmV0dXJuIG5lZWRz
VG9SZWNvbXBpbGU7CiB9CiAKLWJvb2wgVk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKCkKK2Jvb2wgVk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogewotICAgIFJFTEVBU0VfQVNT
RVJUKG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3VudCA+IDApOworICAgIFJF
TEVBU0VfQVNTRVJUKG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50ID4gMCk7CiAKICAgICBib29s
IG5lZWRzVG9SZWNvbXBpbGUgPSBmYWxzZTsKLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmdFbmFibGVkQ291bnQtLTsKLSAgICBpZiAoIW1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0Vu
YWJsZWRDb3VudCkgewotICAgICAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5yZXNldChu
dWxscHRyKTsKLSAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cucmVzZXQobnVsbHB0cik7CisgICAg
bV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQtLTsKKyAgICBpZiAoIW1fdHlwZVByb2ZpbGVyRW5h
YmxlZENvdW50KSB7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyLnJlc2V0KG51bGxwdHIpOworICAg
ICAgICBtX3R5cGVQcm9maWxlckxvZy5yZXNldChudWxscHRyKTsKICAgICAgICAgbV90eXBlTG9j
YXRpb25JbmZvLnJlc2V0KG51bGxwdHIpOwogICAgICAgICBuZWVkc1RvUmVjb21waWxlID0gdHJ1
ZTsKICAgICB9CkBAIC05MjksMTMgKzkyOSwxMyBAQCBib29sIFZNOjpkaXNhYmxlSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluCiAgICAgcmV0dXJuIG5lZWRzVG9SZWNvbXBpbGU7CiB9CiAKLXZvaWQg
Vk06OmR1bXBIaWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpCit2b2lkIFZNOjpkdW1wVHlwZVBy
b2ZpbGVyRGF0YSgpCiB7Ci0gICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpKQorICAgIGlmICghdHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhp
Z2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCJWTSBEdW1wIFR5cGVzIik7
Ci0gICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmdldCgpOworICAgIHR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50
cmllcyhBU0NJSUxpdGVyYWwoIlZNIER1bXAgVHlwZXMiKSk7CisgICAgVHlwZVByb2ZpbGVyKiBw
cm9maWxlciA9IG1fdHlwZVByb2ZpbGVyLmdldCgpOwogICAgIGZvciAoQmFnPFR5cGVMb2NhdGlv
bj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3R5cGVMb2NhdGlvbkluZm8tPmJlZ2luKCk7ICEhaXRlcjsg
KytpdGVyKSB7CiAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSAqaXRlcjsKICAgICAg
ICAgcHJvZmlsZXItPmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKGxvY2F0aW9uKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKICAgICBjbGFz
cyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSGFuZGxlU3RhY2s7Ci0gICAgY2xhc3MgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOwotICAgIGNsYXNzIEhpZ2hGaWRlbGl0eUxvZzsKKyAgICBjbGFzcyBU
eXBlUHJvZmlsZXI7CisgICAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nOwogICAgIGNsYXNzIElkZW50
aWZpZXI7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CkBAIC00OTcsMTMgKzQ5NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAg
IEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWls
dGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAotICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsg
fQotICAgICAgICBib29sIGVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKTsKLSAgICAg
ICAgYm9vbCBkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpOwotICAgICAgICBIaWdo
RmlkZWxpdHlMb2cqIGhpZ2hGaWRlbGl0eUxvZygpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5TG9n
LmdldCgpOyB9Ci0gICAgICAgIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciogaGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7
IH0KKyAgICAgICAgYm9vbCBlbmFibGVUeXBlUHJvZmlsZXIoKTsKKyAgICAgICAgYm9vbCBkaXNh
YmxlVHlwZVByb2ZpbGVyKCk7CisgICAgICAgIFR5cGVQcm9maWxlckxvZyogdHlwZVByb2ZpbGVy
TG9nKCkgeyByZXR1cm4gbV90eXBlUHJvZmlsZXJMb2cuZ2V0KCk7IH0KKyAgICAgICAgVHlwZVBy
b2ZpbGVyKiB0eXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX3R5cGVQcm9maWxlci5nZXQoKTsgfQog
ICAgICAgICBUeXBlTG9jYXRpb24qIG5leHRUeXBlTG9jYXRpb24oKTsKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wVHlwZVByb2ZpbGVyRGF0YSgpOwogICAgICAg
ICBHbG9iYWxWYXJpYWJsZUlEIGdldE5leHRVbmlxdWVWYXJpYWJsZUlEKCkgeyByZXR1cm4gbV9u
ZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9CiAKICAgICBwcml2YXRlOgpAQCAtNTU0LDEwICs1NTMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+
IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFt
ZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRj
aHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlcjsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4gbV9oaWdo
RmlkZWxpdHlMb2c7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlUHJvZmlsZXI+IG1fdHlw
ZVByb2ZpbGVyOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZVByb2ZpbGVyTG9nPiBtX3R5
cGVQcm9maWxlckxvZzsKICAgICAgICAgR2xvYmFsVmFyaWFibGVJRCBtX25leHRVbmlxdWVWYXJp
YWJsZUlEOwotICAgICAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFi
bGVkQ291bnQ7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50Owog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFnPFR5cGVMb2NhdGlvbj4+IG1fdHlwZUxvY2F0aW9u
SW5mbzsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3
Mjc5MSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxNC0wOC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyB2YXJpYWJs
ZXMgZm9yIG1vcmUgY2xhcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hhbmdlIGEgcmVmZXJlbmNlIGluIGEgY29tbWVudCB0byBhIEphdmFTY3Jp
cHRDb3JlIGZpbGUgdG8gaXRzIAorICAgICAgICBuZXdseSByZW5hbWVkIHZhcmlhbnQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzOgorCiAyMDE0
LTA4LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEludHJvZHVjZSBhbiBpbnNwZWN0b3IgQWJzdHJhY3QgU3ludGF4IFRyZWUuCklu
ZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3lu
dGF4VHJlZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwkocmV2aXNpb24gMTcyNzkwKQorKysgU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUgPSBmdW5jdGlvbgogICAgIH0KIH07CiAKLS8vIFRoaXMgc2hvdWxkIGJlIGtlcHQg
aW4gc3luYyB3aXRoIGFuIGVudW0gaW4gSmF2YVNjaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5oCisvLyBUaGlzIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBhbiBl
bnVtIGluIEphdmFTY2lwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuaAogV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciA9IHsKICAgICBO
b3JtYWxFeHByZXNzaW9uOiAxLAogICAgIEZ1bmN0aW9uUmV0dXJuOiAyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236841</attachid>
            <date>2014-08-19 18:05:45 -0700</date>
            <delta_ts>2014-08-20 17:23:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>156967</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyNzkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBA
QAorMjAxNC0wOC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyB2YXJpYWJsZXMgZm9yIG1vcmUgY2xh
cml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFu
eSBuYW1lcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0eXBlIHByb2ZpbGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICBwcmVmaXggdGhlbXNlbHZlcyB3aXRoICJIaWdoRmlkZWxpdHkiIG9yIGluY2x1
ZGUgdGhlIHdvcmRzICJoaWdoIgorICAgICAgICBhbmQvb3IgImZpZGVsaXR5IiBpbiBzb21lIHdh
eS4gQnV0IHRoZSB3b3JkcyAiaGlnaCIgYW5kICJmaWRlbGl0eSIgZG9uJ3QgCisgICAgICAgIGFk
ZCBhbnl0aGluZyBkZXNjcmlwdGl2ZSB0byB0aGUgbmFtZXMgc3Vycm91bmRpbmcgdHlwZSBwcm9m
aWxpbmcuIAorICAgICAgICBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgYWxsIHVzZXMgb2YgIkhpZ2hG
aWRlbGl0eSIgYW5kIGl0cyB2YXJpYW50cy4KKworICAgICAgICBNb3N0IHJlbmFtaW5ncyBjaGFu
Z2UgIkhpZ2hGaWRlbGl0eSoiIHRvICJUeXBlUHJvZmlsZXIqIiBvciBzaW1wbHkgCisgICAgICAg
IGRyb3AgdGhlIHByZWZpeCAiSGlnaEZpZGVsaXR5IiBhbGwgdG9nZXRoZXIuIE5vdywgYWxtb3N0
IGFsbCBuYW1lcyAKKyAgICAgICAgaW4gcmVsYXRpb24gdG8gdHlwZSBwcm9maWxpbmcgY29udGFp
biBpbiB0aGVtICJUeXBlUHJvZmlsZXIiIG9yIAorICAgICAgICAiVHlwZVByb2ZpbGluZyIgb3Ig
c29tZSBjb21iaW5hdGlvbiBvZiB0aGUgd29yZHMgInR5cGUiIGFuZCAicHJvZmlsZSIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IHdlIGNoZWNrIGlmIHR5cGUgcHJvZmls
aW5nIGlzIGVuYWJsZWQ6CisgICAgICAgIFdlIG5vIGxvbmdlciBjYWxsIHZtOjppc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eS4gV2Ugbm93IGp1c3QgCisgICAgICAgIGNoZWNrIHRoYXQg
dm06OnR5cGVQcm9maWxlciBpcyBub3QgbnVsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
Y2hhbmdlcyBhbGwgY2FsbHMgdG8gVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcwor
ICAgICAgICB0byB1c2UgQVNDSUlMaXRlcmFsIHRvIGZvcm0gV1RGU3RyaW5ncyBpbnN0ZWFkIG9m
IHZhbmlsbGEgQyBzdHJpbmcgbGl0ZXJhbHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6dHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRUeXBlUHJvZmlsZXJF
eHByZXNzaW9uSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVFeHByZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE1vdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQ
b3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6UHJlZml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2Rl
OjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2ln
bkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVt
aXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6RW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9m
ZnNldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5
cGVQcm9maWxpbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGVUeXBlUHJvZmlsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFR5cGVQcm9maWxlckVuYWJs
ZWRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5h
YmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnNldEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2Zp
bGVfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdFbmRPZmZzZXQpOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hG
aWRlbGl0eUxvZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlM
b2cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBh
cmVGb3JUeXBlUHJvZmlsaW5nKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlE
Rm9yVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlcjo6bG9nVHlwZXNGb3JUeXBlTG9jYXRpb24pOgorICAgICAgICAoSlND
OjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VHlwZVBy
b2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IpOgorICAgICAg
ICAoSlNDOjpkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OlR5
cGVQcm9maWxlcjo6ZmluZExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UXVlcnlLZXk6OlF1ZXJ5S2V5KToKKyAgICAgICAg
KEpTQzo6UXVlcnlLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
UXVlcnlLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6aGFzaCk6Cisg
ICAgICAgIChKU0M6OlF1ZXJ5S2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlF1ZXJ5S2V5
SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6OmZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUxvY2F0aW9uQ2Fj
aGUpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6CisgICAgICAgIChKU0M6
OlR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQ
cm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OkxvZ0Vu
dHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6
TG9nRW50cnk6OnZhbHVlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpM
b2dFbnRyeTo6bG9jYXRpb25PZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6
OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cmVjb3Jk
VHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJM
b2c6OmxvZ0VuZFB0cik6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6bG9nU3RhcnRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmN1cnJlbnRMb2dFbnRyeU9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpW
TTo6ZGlzYWJsZVR5cGVQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpkdW1wVHlwZVByb2Zp
bGVyRGF0YSk6CisgICAgICAgIChKU0M6OlZNOjplbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmR1bXBIaWdoRmlkZWxpdHlQ
cm9maWxpbmdUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAg
ICAoSlNDOjpWTTo6dHlwZVByb2ZpbGVyTG9nKToKKyAgICAgICAgKEpTQzo6Vk06OnR5cGVQcm9m
aWxlcik6CisgICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKTogRGVsZXRlZC4K
KwogMjAxNC0wOC0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBPZmZsaW5lIEFzc2VtYmxlciBidWlsZCBwaGFzZSBmYWlscyB3aGVuICRCVUlMVF9Q
Uk9EVUNUU19ESVIgY29udGFpbnMgc3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw4ICs0MTQsNiBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNw
cAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCi0gICAgcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCi0gICAgcnVudGltZS9I
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAog
ICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKQEAgLTUyMyw2ICs1MjEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMu
Y3BwCiAgICAgcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKKyAgICBydW50aW1lL1R5cGVQ
cm9maWxlci5jcHAKKyAgICBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKICAgICBydW50aW1l
L1R5cGVTZXQuY3BwCiAgICAgcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5jcHAKICAgICBy
dW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlz
aW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSGFzCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlw
ZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGV4ZWMtPnZtKCkuZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCk7CisgICAgZXhlYy0+dm0oKS5kdW1wVHlwZVBy
b2ZpbGVyRGF0YSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjg5LDggKzY4OSw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2V0dGVyU2V0dGVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SGlnaEZpZGVsaXR5TG9nLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEluZGV4aW5nVHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgpAQCAtNzk5LDYgKzc5Nyw4
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZWRBcnJh
eVR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlTG9j
YXRpb25DYWNoZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5
cGVQcm9maWxlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5
cGVQcm9maWxlckxvZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFR5cGVTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5j
cHAiIC8+CkBAIC0xNDI1LDggKzE0MjUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSGlnaEZpZGVsaXR5TG9nLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nSGVhZGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nSGVhZGVySW5saW5lcy5o
IiAvPgpAQCAtMTU4NCw2ICsxNTgyLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcVHlwZWRBcnJheUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVHlwZWRBcnJheVR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVHlwZUxvY2F0aW9uQ2FjaGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVHlwZVByb2ZpbGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFR5cGVQcm9maWxlckxvZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxUeXBlU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFR5cGVkQXJyYXlzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFVpbnQxNkFycmF5LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTYxMiwxMiArNjEyLDYgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSGlnaEZpZGVsaXR5TG9nLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC04NTUsNiArODQ5LDEyIEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFR5cGVMb2NhdGlvbkNhY2hlLmNwcCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVHlwZVByb2ZpbGVyLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcVHlwZVByb2ZpbGVyTG9nLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
VHlwZVNldC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0yNTU4LDEyICsyNTU4LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEhp
Z2hGaWRlbGl0eUxvZy5oIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmll
ci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtMjgzNCw2ICsyODI4LDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFR5cGVMb2NhdGlvbkNhY2hlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVQ
cm9maWxlci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlUHJvZmlsZXJMb2cu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZVNldC5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjgsMTAgKzIyOCw4IEBACiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1Ro
aXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07CiAJ
CTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU2MTk4MzJEQUMwMDdENEIx
OSAvKiBUb1RoaXNTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQTE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNzE5
ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYyRDRERUIxOTgzMkRDNDAwN0Q0QjE5IC8qIEhp
Z2hGaWRlbGl0eUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAq
LzsgfTsKLQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTAxOTgz
MkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMkQ0REVEMTk4MzJEQzQwMDdENEIxOSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTExOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHAgKi87IH07Ci0JCTBGMkQ0REVFMTk4MzJEQzQwMDdENEIxOSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkQ0REUyMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjJENERFQjE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERGMTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovOyB9OworCQkwRjJENERFQzE5
ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFMDE5ODMyRDkxMDA3RDRCMTkgLyogVHlw
ZVByb2ZpbGVyTG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYyRDRERUYxOTgzMkREMzAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTMxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovOyB9OwogCQkwRjJENERGMDE5ODMyREQ2MDA3RDRCMTkg
LyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRG
RDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU5ODdGMkYxNjgyOEE3RTAwM0MyRjhEIC8qIFVudXNlZFBvaW50ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODY3LDYg
Kzg2NSw4IEBACiAJCTUyQjMxMEZEMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJCMzEwRkMxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHAgKi87IH07CiAJCTUyQjMxMEZGMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIz
MTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1
MkIzMTEwMTE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMTAwMTk3NUI0NjcwMDgw
ODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUyQzk1MkI3MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJv
ZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Qzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIz
ODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3Bw
ICovOyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFGM0UgLyogSlNDYWxsYmFja0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4
RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTU1MkVB
NzBDMTkwODcwNDgwMEE2NkYyRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJGMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNTU0MDc1NzIxOERBNThB
RDAwRUZGN0YyIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi87IH07
CkBAIC0yMTMxLDEwICsyMTMxLDggQEAKIAkJMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4OTEwIC8qIERG
R1ZhcmlhYmxlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHVmFyaWFibGVFdmVudC5jcHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBE
ZWJ1Z2dlclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
YnVnZ2VyU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGMkQ0RERGMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGlnaEZpZGVsaXR5TG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMEYyRDRERTExOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERFMjE5ODMyRDkxMDA3RDRCMTkgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENERERjE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQ
cm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkQ0REUwMTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVBy
b2ZpbGVyTG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0REUzMTk4MzJE
OTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkg
LyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9UaGlzU3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NDAsNiArMjczOCw4IEBACiAJCTUyQjMx
MEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBU
eXBlUHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmls
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50
aW1lVG9MTFZNSVIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29t
cGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTU0MDdBQzgxOERBNThBRDAwRUZGN0YyIC8qIGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIu
YSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2
ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1J
Ui5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDUzNzI2RDBFMUM1
NDZCMDAyMUU1NDkgLyogVHJhY2luZy5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRyYWNpbmcu
ZDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzOTksNiArNDM5OSw3IEBACiAJCQkJ
QkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQlBNzA0
NDdFQjE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovLAogCQkJCUE3MDQ0N0VD
MTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJCTJBRDJFREZBMTk3OTlF
MzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBFMUIwMENC
MDA3NjkxOEEgLyogRXJyb3IuY3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oICovLAogCQkJCUJDMDJFOTA0MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0
cnVjdG9yLmNwcCAqLywKQEAgLTQ0MjEsMTggKzQ0MjIsMTQgQEAKIAkJCQlCQzI2ODBDMTBFMTZE
NEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjRCNTIxMTZC
NjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywKIAkJCQkwRkI0
QjUyMjE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oICovLAotCQkJ
CTUyQjMxMEZBMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAq
LywKIAkJCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlLmNwcCAqLywKKwkJCQk1MkIzMTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlLmggKi8sCiAJCQkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8q
IEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1
MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3
NjkxOEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCi0JCQkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi8sCi0JCQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovLAotCQkJCTBGMkQ0REUxMTk4MzJEOTEwMDdENEIxOSAv
KiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovLAotCQkJCTBGMkQ0REUyMTk4MzJEOTEw
MDdENEIxOSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLywKIAkJCQk5MzNBMzQ5RDAz
OEFFODBGMDA4NjM1Q0UgLyogSWRlbnRpZmllci5jcHAgKi8sCiAJCQkJOTMzQTM0OUEwMzhBRTdD
NjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLywKIAkJCQk4NjA2RERFOTE4REE0NEFCMDBBMzgz
RDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLywKQEAgLTQ0NDIsOSArNDQzOSw5IEBACiAJCQkJ
MEZCN0YzOEYxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oICovLAogCQkJCUUxNzg2
MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLywKIAkJCQlF
MTc4NjMzRjBEOUJFQzAwMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oICovLAorCQkJ
CUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYy
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJCUE3QThBRjJEMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFC
MTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLywKIAkJCQlBNzg4NTNGODE3OTcyNjI5MDAxNDQw
RTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYw
MERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTQ1MDMsOSArNDUwMCw5IEBA
CiAJCQkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oICovLAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmggKi8sCisJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
SW50OEFycmF5LmggKi8sCiAJCQkJMEYyQjY2Q0ExN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZB
cnJheS5oICovLAogCQkJCTBGMkI2NkNCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDMyQXJyYXku
aCAqLywKLQkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywK
IAkJCQk2NUVBNEM5OTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAqLywKIAkJCQk2NUVB
NEM5QTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi8sCiAJCQkJQTcwMDg3M0YxN0NCRThF
QjAwQzNFNjQzIC8qIEpTTWFwLmNwcCAqLywKQEAgLTQ1MzIsNiArNDUyOSw4IEBACiAJCQkJN0Mx
ODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovLAogCQkJCTdD
MDA4Q0RDMTg3MTI1OEQwMDk1NUMyNCAvKiBKU1Byb21pc2VSZWFjdGlvbi5jcHAgKi8sCiAJCQkJ
N0MwMDhDREQxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJvbWlzZVJlYWN0aW9uLmggKi8sCisJCQkJ
MkEwNUFCRDMxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAg
Ki8sCisJCQkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAq
LywKIAkJCQk4NjI1NTNDRjE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5oICovLAogCQkJCTE0
ODc0QUUxMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCAqLywKQEAgLTQ1NTcsMTAgKzQ1
NTYsMTAgQEAKIAkJCQkwRjJCNjZEMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5j
cHAgKi8sCiAJCQkJMEYyQjY2RDExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuaCAq
LywKIAkJCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovLAotCQkJ
CTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCi0JCQkJMEYy
QjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZE
MjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5LmggKi8sCiAJCQkJMEYyQjY2RDMxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJCQkwRjJCNjZENDE3
QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oICovLAorCQkJCTBGMkI2NkQ1MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8sCiAJCQkJQkMyMkEzOUEwRTE2RTE0ODAw
QUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovLAogCQkJCTE0RjI1MjU2MEQwOEREOEQw
MDRFQ0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8sCiAJCQkJQTdDQTNBRTExN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8sCkBAIC00NzAyLDE1ICs0NzAxLDE5IEBACiAJCQkJ
MEYyQjY2REIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggKi8sCiAJCQkJMEYyQjY2
REMxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCAqLywKIAkJCQkwRjJCNjZE
RDE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCAqLywKLQkJCQk1MkIzMTEwMDE5
NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLywKIAkJCQk1MkIzMTBGRTE5
NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3BwICovLAorCQkJCTUyQjMxMTAw
MTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovLAorCQkJCTUyQzk1MkI4
MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovLAorCQkJCTUyQzk1MkI2MTlB
Mjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCAqLywKKwkJCQkwRjJENERERjE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLywKKwkJCQkwRjJENERFMDE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggKi8sCiAJCQkJMEYyRDRERTMxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovLAogCQkJCTBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAv
KiBUeXBlU2V0LmggKi8sCisJCQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJy
YXkuaCAqLywKKwkJCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJy
YXkuaCAqLywKIAkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAq
LywKIAkJCQk4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmgg
Ki8sCiAJCQkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8sCi0J
CQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLywKLQkJCQlBN0E4
QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQlFMThF
M0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovLAogCQkJCUUxOEUzQTU2MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5oICovLAogCQkJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuY3BwICovLApAQCAtNDcyOCw5ICs0NzMxLDYgQEAKIAkJCQkxNDIwQkU3QTEwQUE2
RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkx
MTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEg
LyogV3JpdGVCYXJyaWVySW5saW5lcy5oICovLAotCQkJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1
MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovLAotCQkJCTJBMDVBQkQ0MTk2MURG
MjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCAqLywKLQkJCQkyQUQyRURG
QTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjA3NSw3ICs2MDc1
LDcgQEAKIAkJCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5
IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyRDRERUMxOTgzMkRD
NDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
MzYxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQy
RTMxMzgxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNjExNiw3ICs2MTE2LDYgQEAKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUzMjQzOEExODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyRDRERUUxOTgzMkRDNDAwN0Q0QjE5IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRERUExOERB
NDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjM5MSw2ICs2MzkwLDcgQEAKIAkJCQk1MkIz
MTEwMTE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTkwQ0FEMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9m
aWxlckpldHRpc29uUmVhc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkM5NTJCNzE5QTI4OTg1
MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2
NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTcxMDQsOSArNzEwNCw5IEBACiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKLQkJCQk1MkIzMTBGRjE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUVBNUM3QTIxOTBGMDg4NzAwNTA4RUJFIC8qIEluaXRpYWxp
emVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVC
RSAvKiBCdW5kbGVQYXRoLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTJCMzEwRkYxOTc1QjQyNDAw
ODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFNzI5
NDA4MTkwRjAyMUUwMDFBOTFCNSAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXplVGhyZWFkaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkE1NDk3MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRE
T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzE4NSw3ICs3MTg1LDYgQEAKIAkJCQkwRjQ4
NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEYyRDRERUQxOTgzMkRDNDAwN0Q0QjE5IC8qIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q5QTI5NDE3QTBCQzc0
MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzMwOCw3ICs3MzA3LDcgQEAKIAkJ
CQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFs
bG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBG
MkQ0REVCMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyRDRERUIxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMDE4QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJ
VFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8q
IEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIy
QyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjQyLDYgKzc2NDEs
NyBAQAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJy
YXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3
QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkM5NTJCOTE5
QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywK
IAkJCQkwRkY0Mjc0MzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X2lucHV0LmMgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5n
dGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0
aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSIsICJsZW5ndGgiIDogNiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfcHJvZmlsZV90eXBlIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2hhc19pbmRleGVkX3Byb3BlcnR5IiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5IiwgImxlbmd0
aCIgOiA1IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbjoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAgIGNhc2Ug
b3BfcHJvZmlsZV9kaWRfY2FsbDoKLSAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5OgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOgogICAgIGNhc2Ugb3BfdGhyb3c6
CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CiAg
ICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6Ci0gICAgY2FzZSBvcF9wcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNl
IG9wX3RvdWNoX2VudHJ5OgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxl
bmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJ
T04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw2IEBACiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKLSNpbmNsdWRlICJIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCkBAIC00OSw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50LmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTYwLDYgKzU4LDggQEAKICNpbmNsdWRl
ICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKKyNp
bmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Db21t
YVByaW50ZXIuaD4KQEAgLTgzOSwxMSArODM5LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogeworICAg
ICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytpdDsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5Iik7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGUiKTsKICAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3MTQsOSArMTcxNCw5IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBib29sIGRpZENsb25lU3ltYm9s
VGFibGUgPSBmYWxzZTsKICAgICAKICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0g
dW5saW5rZWRDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkpIHsKLSAgICAgICAgaWYgKG1fdm0tPmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgaWYgKG1fdm0tPnR5
cGVQcm9maWxlcigpKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9y
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgc3ltYm9sVGFibGUtPmNhcHR1cmVD
b3VudCgpKSB7CkBAIC0xNzI5LDggKzE3MjksOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICBzZXROdW1QYXJhbWV0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCi0gICAgaWYgKHZtKCkt
PmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgIHZtKCktPmhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcigpLT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+cmVtb3Zl
VW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBtX293bmVyRXhl
Y3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIG1fb3duZXJF
eGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgIGlm
ICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyKCktPmZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5yZW1vdmVVbmV4ZWN1dGVkUmFuZ2UobV9vd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCksIG1fb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKSwgbV9vd25lckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7
CiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRS
ZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0
KCkpCkBAIC0xNzM4LDggKzE3MzgsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvCiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1
bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKLSAgICAgICAg
aWYgKHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAg
ICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwgdW5saW5rZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zm
c2V0KCkpOworICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAgICB2
bSgpLT50eXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVu
ZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVj
dXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1
bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExp
bmUgPSBvd25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJz
dExpbmVPZmZzZXQoKTsKICAgICAgICAgYm9vbCBzdGFydENvbHVtbklzT25Pd25lclN0YXJ0TGlu
ZSA9ICF1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpOwpAQCAtMTc1Niw4ICsx
NzU2LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIG1f
ZnVuY3Rpb25FeHBycy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7Ci0gICAgICAgIGlmICh2bSgpLT5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhl
Y3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVy
KCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2UobV9v
d25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9m
ZnNldCgpKTsKICAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxl
LT5saW5lQ291bnQoKTsKICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gb3duZXJFeGVjdXRh
YmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7CiAg
ICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUgPSAhdW5saW5rZWRFeGVj
dXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKQEAgLTE5OTIsMjMgKzE5OTIsMjMgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVs
aXR5OiB7Ci0gICAgICAgICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoaXMgaW5zdHJ1Y3Rpb24gaXM6
IG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IHJlZ1RvUHJvZmlsZSwgVHlwZUxv
Y2F0aW9uKiwgZmxhZywgaWRlbnRpZmllcj8sIHJlc29sdmVUeXBlPworICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZTogeworICAgICAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3Ry
dWN0aW9uIGlzOiBvcF9wcm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBm
bGFnLCBpZGVudGlmaWVyPywgcmVzb2x2ZVR5cGU/CiAgICAgICAgICAgICBzaXplX3QgaW5zdHJ1
Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOwogICAgICAgICAgICAgdW5zaWduZWQgZGl2
b3RTdGFydCwgZGl2b3RFbmQ7CiAgICAgICAgICAgICBHbG9iYWxWYXJpYWJsZUlEIGdsb2JhbFZh
cmlhYmxlSUQ7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlwZVNldDsKLSAg
ICAgICAgICAgIGJvb2wgc2hvdWxkQW5hbHl6ZSA9IG1fdW5saW5rZWRDb2RlLT5oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25P
ZmZzZXQsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQW5h
bHl6ZSA9IG1fdW5saW5rZWRDb2RlLT50eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVj
b2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvZmlsZVJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7
Ci0gICAgICAgICAgICBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIGZs
YWcgPSBzdGF0aWNfY2FzdDxQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFn
PihwY1szXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcg
ZmxhZyA9IHN0YXRpY19jYXN0PFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnPihwY1szXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbnVsbHB0cjsKIAog
ICAgICAgICAgICAgc3dpdGNoIChmbGFnKSB7Ci0gICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBl
c0J5dGVjb2RlUHV0VG9TY29wZToKLSAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVHZXRGcm9tU2NvcGU6IHsKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVCeXRlY29kZVB1
dFRvU2NvcGU6CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVHZXRGcm9tU2Nv
cGU6IHsKICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIocGNbNF0udS5vcGVyYW5kKTsKICAgICAgICAgICAgICAgICBSZXNvbHZlVHlwZSB0eXBlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KHBjWzVdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICAg
ICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBpZGVudCwgKGZsYWcgPT0gUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVHZXRGcm9tU2NvcGUgPyBHZXQgOiBQdXQpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBSZXNv
bHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgc2NvcGUsIGlkZW50LCAoZmxhZyA9PSBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJv
bVNjb3BlID8gR2V0IDogUHV0KSwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
aGFuZGxlIG90aGVyIHZhbHVlcyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3
aGF0IHRvIGRvIHdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElE
CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNTE4NApAQCAtMjAyMCwyOSArMjAyMCwyOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
LT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdh
cyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUg
cHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCi0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5wcmVwYXJlRm9ySGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2Vy
KTsKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51
bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZv
clZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxp
dHlOb0dsb2JhbElERXhpc3RzOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlE
ID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUhh
c0dsb2JhbElEOiB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVIYXNHbG9i
YWxJRDogewogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJsZS5nZXQo
KTsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCBwcm9maWxlUmVnaXN0ZXIub2Zmc2V0KCks
ICp2bSgpKTsKICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmds
b2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHByb2ZpbGVSZWdpc3Rlci5vZmZzZXQoKSwg
KnZtKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQ6IAotICAgICAg
ICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uQXJndW1lbnQ6IHsKLSAgICAg
ICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0
czsKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQ6IAorICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVu
dDogeworICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0ds
b2JhbElERXhpc3RzOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
OiB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0
YXRlbWVudDogewogICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSByZXR1cm5TdGF0ZW1l
bnRUeXBlU2V0KCk7Ci0gICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRl
bGl0eVJldHVyblN0YXRlbWVudDsKKyAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0g
VHlwZVByb2ZpbGVyUmV0dXJuU3RhdGVtZW50OwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxk
QW5hbHl6ZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHNvbWUgcmV0dXJuIHN0
YXRlbWVudHMgYXJlIGFkZGVkIGltcGxpY2l0bHkgKHRvIHJldHVybiB1bmRlZmluZWQgYXQgdGhl
IGVuZCBvZiBhIGZ1bmN0aW9uKSwgYW5kIHRoZXNlIG5vZGVzIGRvbid0IGVtaXQgZXhwcmVzc2lv
biByYW5nZXMsIGdpdmUgdGhlbSBzb21lIHJhbmdlLgogICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHksIHRoaXMgZGl2b3QgaXMgb24gdGhlIG9wZW4gYnJhY2Ugb2YgdGhlIGZ1bmN0aW9u
LiAKQEAgLTIwNTMsMTYgKzIwNTMsMTYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBz
dGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gbG9jYXRpb25QYWlyID0gdm0oKS0+aGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKCktPnR5cGVMb2NhdGlvbkNhY2hlKCktPmdldFR5cGVMb2NhdGlv
bihnbG9iYWxWYXJpYWJsZUlELAorICAgICAgICAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbios
IGJvb2w+IGxvY2F0aW9uUGFpciA9IHZtKCktPnR5cGVQcm9maWxlcigpLT50eXBlTG9jYXRpb25D
YWNoZSgpLT5nZXRUeXBlTG9jYXRpb24oZ2xvYmFsVmFyaWFibGVJRCwKICAgICAgICAgICAgICAg
ICBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGds
b2JhbFR5cGVTZXQsIHZtKCkpOwogICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9
IGxvY2F0aW9uUGFpci5maXJzdDsKICAgICAgICAgICAgIGJvb2wgaXNOZXdMb2NhdGlvbiA9IGxv
Y2F0aW9uUGFpci5zZWNvbmQ7CiAKLSAgICAgICAgICAgIGlmIChQcm9maWxlVHlwZXNCeXRlY29k
ZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KQorICAgICAgICAgICAgaWYgKFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCkKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+
bV9kaXZvdEZvckZ1bmN0aW9uT2Zmc2V0SWZSZXR1cm5TdGF0ZW1lbnQgPSBtX3NvdXJjZU9mZnNl
dDsKIAogICAgICAgICAgICAgaWYgKHNob3VsZEFuYWx5emUgJiYgaXNOZXdMb2NhdGlvbikKLSAg
ICAgICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3
TG9jYXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5pbnNlcnROZXdMb2NhdGlvbihsb2NhdGlvbik7CiAKICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgMl0udS5sb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCShyZXZp
c2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBIaWdoRmlkZWxpdHlHbG9iYWxJREZsYWdzIHsKLSAgICBIaWdoRmlkZWxpdHlO
ZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAotICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURF
eGlzdHMgPSAtMiwKLSAgICBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPSAtMworZW51bSBU
eXBlUHJvZmlsZXJHbG9iYWxJREZsYWdzIHsKKyAgICBUeXBlUHJvZmlsZXJOZWVkc1VuaXF1ZUlE
R2VuZXJhdGlvbiA9IC0xLAorICAgIFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHMgPSAtMiwK
KyAgICBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0ZW1lbnQgPSAtMwogfTsKIAogdHlwZWRlZiBpbnRw
dHJfdCBHbG9iYWxWYXJpYWJsZUlEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzI3OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uKG1fbGluZUNvdW50
ID8gbm9kZS0+ZW5kQ29sdW1uKCkgOiBub2RlLT5lbmRDb2x1bW4oKSAtIG5vZGUtPnN0YXJ0Q29s
dW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkg
LSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAsIG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJj
ZSgpLmxlbmd0aCgpKQotICAgICwgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQobm9kZS0+ZnVuY3Rpb25OYW1lU3RhcnQoKSkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2Uo
KS5sZW5ndGgoKSAtIDEpCisgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5m
dW5jdGlvbk5hbWVTdGFydCgpKQorICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUt
PnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAs
IG1fZmVhdHVyZXMobm9kZS0+ZmVhdHVyZXMoKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUt
PmZ1bmN0aW9uTW9kZSgpKQogewpAQCAtNDAyLDExICs0MDIsMTEgQEAgdm9pZCBVbmxpbmtlZENv
ZGVCbG9jazo6YWRkRXhwcmVzc2lvbkluZgogICAgIG1fZXhwcmVzc2lvbkluZm8uYXBwZW5kKGlu
Zm8pOwogfQogCi1ib29sIFVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpCitib29sIFVubGlua2Vk
Q29kZUJsb2NrOjp0eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCYgc3RhcnREaXZvdCwgdW5zaWduZWQmIGVu
ZERpdm90KQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLSAgICBh
dXRvIGl0ZXIgPSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01hcC5maW5kKGJ5dGVjb2Rl
T2Zmc2V0KTsKLSAgICBpZiAoaXRlciA9PSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01h
cC5lbmQoKSkgeworICAgIGF1dG8gaXRlciA9IG1fdHlwZVByb2ZpbGVySW5mb01hcC5maW5kKGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICBpZiAoaXRlciA9PSBtX3R5cGVQcm9maWxlckluZm9NYXAuZW5k
KCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nRigiRG9uJ3Qg
aGF2ZSBhc3NpZ25tZW50IGluZm8gZm9yIG9mZnNldDoldVxuIiwgYnl0ZWNvZGVPZmZzZXQpOwog
ICAgICAgICBzdGFydERpdm90ID0gVUlOVF9NQVg7CkBAIC00MTQsMTggKzQxNCwxOCBAQCBib29s
IFVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCi0gICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFu
Z2UmIHJhbmdlID0gaXRlci0+dmFsdWU7CisgICAgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdl
JiByYW5nZSA9IGl0ZXItPnZhbHVlOwogICAgIHN0YXJ0RGl2b3QgPSByYW5nZS5tX3N0YXJ0RGl2
b3Q7CiAgICAgZW5kRGl2b3QgPSByYW5nZS5tX2VuZERpdm90OwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFVubGlua2VkQ29kZUJsb2NrOjphZGRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4
cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERp
dm90LCB1bnNpZ25lZCBlbmREaXZvdCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZFR5cGVQ
cm9maWxlckV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25l
ZCBzdGFydERpdm90LCB1bnNpZ25lZCBlbmREaXZvdCkKIHsKLSAgICBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZUV4cHJlc3Npb25SYW5nZSByYW5nZTsKKyAgICBUeXBlUHJvZmlsZXJFeHByZXNzaW9u
UmFuZ2UgcmFuZ2U7CiAgICAgcmFuZ2UubV9zdGFydERpdm90ID0gc3RhcnREaXZvdDsKICAgICBy
YW5nZS5tX2VuZERpdm90ID0gZW5kRGl2b3Q7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZUluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKKyAgICBtX3R5cGVQcm9m
aWxlckluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKIH0KIAogdm9pZCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlF
bmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keUVuZENvbHVtbjsgfQogICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQog
ICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCgpIHsgcmV0dXJuIG1fc291cmNlTGVuZ3RoOyB9Ci0g
ICAgdW5zaWduZWQgaGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7IH0KLSAgICB1
bnNpZ25lZCBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0OyB9CisgICAgdW5zaWduZWQg
dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OyB9CiAKICAgICBTdHJpbmcgcGFy
YW1TdHJpbmcoKSBjb25zdDsKIApAQCAtMTg3LDggKzE4Nyw4IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV91bmxpbmtlZEJvZHlFbmRDb2x1bW47CiAgICAgdW5zaWduZWQgbV9zdGFydE9mZnNl
dDsKICAgICB1bnNpZ25lZCBtX3NvdXJjZUxlbmd0aDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CisgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQ7CisgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogCiAgICAg
Q29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50
IGRpdm90LAogICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVk
IGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKLSAgICB2b2lkIGFkZEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIHVuc2lnbmVk
IHN0YXJ0RGl2b3QsIHVuc2lnbmVkIGVuZERpdm90KTsKKyAgICB2b2lkIGFkZFR5cGVQcm9maWxl
ckV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFy
dERpdm90LCB1bnNpZ25lZCBlbmREaXZvdCk7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZv
KCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5mby5zaXplKCk7IH0KIApAQCAtNDcwLDcgKzQ3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAogICAgICAgICBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwog
Ci0gICAgYm9vbCBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1
bnNpZ25lZCYgZW5kRGl2b3QpOworICAgIGJvb2wgdHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9G
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0
RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CiAKICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7CkBA
IC01ODMsMTEgKzU4MywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE93blB0cjxSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9leHByZXNz
aW9uSW5mbzsKLSAgICBzdHJ1Y3QgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFu
Z2UgeworICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAgICAgICB1
bnNpZ25lZCBtX3N0YXJ0RGl2b3Q7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAgICAg
fTsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Np
b25SYW5nZT4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXA7CisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9N
YXA7CiAKIHByb3RlY3RlZDoKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3Mjc5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFyc2VyRXJyb3IgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0
KCk7CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkgJiYgIW1fY29kZUJsb2Nr
LT52bSgpLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgIGlmIChtX2Nv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKSAmJiAhbV9jb2RlQmxvY2stPnZtKCktPnR5cGVQcm9maWxl
cigpKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0U3ltYm9sVGFibGUobV9jb2RlQmxvY2stPnN5
bWJvbFRhYmxlKCktPmNsb25lQ2FwdHVyZWROYW1lcygqbV9jb2RlQmxvY2stPnZtKCkpKTsKIAog
ICAgIGlmIChtX2V4cHJlc3Npb25Ub29EZWVwKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgIG1fc3ltYm9sVGFibGUtPnNl
dENhcHR1cmVFbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bVZhcnMp
Lm9mZnNldCgpKTsKIAotICAgIGJvb2wgY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zID0gIWZ1bmN0
aW9uQm9keS0+bmVlZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSAmJiAhbV9zaG91
bGRFbWl0RGVidWdIb29rcyAmJiAhaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKTsK
KyAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHktPm5lZWRz
QWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgJiYgIW1fdm0tPnR5cGVQcm9maWxlcigpOwogICAgIG1fZmlyc3RMYXp5RnVuY3Rpb24gPSBj
b2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
U3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24g
PSBmdW5jdGlvblN0YWNrW2ldOwpAQCAtMTAwNiw4ICsxMDA2LDggQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1
cmVkKQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0
LT5pbmRleCgpKSk7CiAKLSAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBlbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShkc3QsIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIp
OworICAgIGlmICghZHN0LT5pc1RlbXBvcmFyeSgpICYmIHZtKCktPnR5cGVQcm9maWxlcigpKQor
ICAgICAgICBlbWl0UHJvZmlsZVR5cGUoZHN0LCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFs
SUQsIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTExMTgsMjEgKzExMTgsMjEg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbAogICAgIHJldHVybiBk
c3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRXhwcmVzc2lvbkluZm8oY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlbmREaXZvdCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnRE
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZERpdm90KQogewogICAgIHVuc2lnbmVkIHN0
YXJ0ID0gc3RhcnREaXZvdC5vZmZzZXQ7IC8vIFJhbmdlcyBhcmUgaW5jbHVzaXZlIG9mIHRoZWly
IGVuZHBvaW50cywgQU5EIDAgaW5kZXhlZC4KICAgICB1bnNpZ25lZCBlbmQgPSBlbmREaXZvdC5v
ZmZzZXQgLSAxOyAvLyBFbmQgUmFuZ2VzIGFscmVhZHkgZ28gb25lIHBhc3QgdGhlIGluY2x1c2l2
ZSByYW5nZSwgc28gc3VidHJhY3QgMS4KICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9
IGluc3RydWN0aW9ucygpLnNpemUoKSAtIDE7Ci0gICAgbV9jb2RlQmxvY2stPmFkZEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIHN0YXJ0LCBl
bmQpOworICAgIG1fY29kZUJsb2NrLT5hZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhpbnN0
cnVjdGlvbk9mZnNldCwgc3RhcnQsIGVuZCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIHJlZ2lzdGVyVG9Q
cm9maWxlLCBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIGZsYWcsIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0ZXJUb1Byb2ZpbGUsIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGbGFnIGZsYWcsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYg
KGZsYWcgPT0gUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUgfHwgZmxhZyA9PSBQcm9m
aWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUpCisgICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVC
eXRlY29kZUdldEZyb21TY29wZSB8fCBmbGFnID09IFByb2ZpbGVUeXBlQnl0ZWNvZGVQdXRUb1Nj
b3BlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChpZGVudGlmaWVyKTsKIAotICAgIC8vIFRoZSBm
b3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpczogb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hf
ZmlkZWxpdHkgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVyPywg
cmVzb2x2ZVR5cGU/Ci0gICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eSk7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBvcF9w
cm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVy
PywgcmVzb2x2ZVR5cGU/CisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGUpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChyZWdpc3RlclRvUHJvZmlsZS0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmbGFnKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIzLDEzICsyMjMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURhdGEqIHRyeURh
dGE7CiAgICAgfTsKIAotICAgIGVudW0gUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVj
b2RlRmxhZyB7Ci0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlUHV0VG9TY29wZSwKLSAgICAg
ICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsCi0gICAgICAgIFByb2ZpbGVUeXBl
c0J5dGVjb2RlSGFzR2xvYmFsSUQsCi0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCwKLSAgICAgICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3Vt
ZW50LAotICAgICAgICBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
CisgICAgZW51bSBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZyB7CisgICAgICAgIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVQdXRUb1Njb3BlLAorICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbVNj
b3BlLAorICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsCisgICAgICAgIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELAorICAgICAgICBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudCwKKyAgICAgICAgUHJvZmlsZVR5cGVCeXRlY29kZUZ1
bmN0aW9uUmV0dXJuU3RhdGVtZW50CiAgICAgfTsKIAogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJh
dG9yIHsKQEAgLTQxMCw4ICs0MTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBlbWl0Tm9kZShuKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZW1pdEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3Rh
cnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZERpdm90KTsKLSAgICAgICAgdm9pZCBl
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJv
ZmlsZSwgUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZywgY29uc3QgSWRl
bnRpZmllciopOworICAgICAgICB2b2lkIGVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVu
ZERpdm90KTsKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0
ZXJUb1Byb2ZpbGUsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLCBjb25zdCBJZGVudGlmaWVyKik7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUpOwpA
QCAtNzU4LDggKzc1OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZNKiBtX3ZtOwog
Ci0gICAgICAgIGJvb2wgaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSB7IHJldHVy
biB2bSgpLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpOyB9Ci0KICAgICAgICAg
T3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQ7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBzaXplX3Qg
bV9sYXN0T3Bjb2RlUG9zaXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzI3OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMCArMTM5LDEwIEBAIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWdpc3RlcklEKiByZXN1
bHQgPSBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50
eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQsIG51bGxwdHIpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGhpc0xlbmd0aCA9
IDQ7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJl
c3Npb25JbmZvKHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNl
dCArIHRoaXNMZW5ndGgsIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVy
RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0aW9uKCku
b2Zmc2V0ICsgdGhpc0xlbmd0aCwgLTEpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTE1OSw5ICsxNTksOSBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5CiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAg
ICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eShsb2NhbC5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVIYXNHbG9iYWxJ
RCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9w
b3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKGxvY2FsLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQs
IG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNz
aW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQg
KyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsLmdldCgpKTsKICAgICB9
CkBAIC0xNzEsOSArMTcxLDkgQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbV9pZGVudCk7CiAgICAgUmVn
aXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAg
ICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmaW5hbERl
c3QsIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0LCBQcm9maWxl
VHlwZXNCeXRlY29kZUdldEZyb21TY29wZSwgJm1faWRlbnQpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBK
U1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAt
MSkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVH
ZXRGcm9tU2NvcGUsICZtX2lkZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmls
ZXJFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlv
bi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMzkzLDkgKzM5Myw5IEBAIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5v
ZGU6OmVtaXRCeXQKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwotICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0
LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5m
byhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlw
ZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERl
c3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQpAQCAtNDE5LDkgKzQx
OSw5IEBAIG5vbkFyZ3VtZW50c1BhdGg6CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZp
bmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVnaXN0ZXJJ
RCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZSwgbV9pZGVudCk7
Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmaW5h
bERlc3QsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgp
LT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZp
bmFsRGVzdCwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC01MDMs
OSArNTAzLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgp
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTUyNCw5ICs1MjQs
OSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIC8v
IFRoaXMgcGFzc2VzIE5vRXhwZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlm
IHRoZSBmdW5jdGlvbiBpcyBpbiBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0
J3Mgbm90IG9uZSBvZiBvdXIgYnVpbHQtaW4gY29uc3RydWN0b3JzLgogICAgICAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVj
b2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigp
KSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldDsKICAg
ICB9CkBAIC01NDAsOSArNTQwLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGU6OmVtaQogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1
bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQsIFRocm93SWZO
b3RGb3VuZCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3Iu
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2Zp
bGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTU1OSw5ICs1
NTksOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBl
c0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkg
eworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTU3Nyw5ICs1NzcsOSBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0
YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1
bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAg
ICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVz
Qnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQpAQCAtNjUxLDkgKzY1MSw5IEBA
IFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICAgICAgfQogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCks
IFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZh
bHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdl
dCgpOwogfQpAQCAtNzY1LDkgKzc2NSw5IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQpAQCAtODAyLDcgKzgw
Miw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAg
aWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5p
c0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCk7CiAgICAgICAgICAgICBBU1NFUlQoZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwpAQCAtODEwLDggKzgxMCw4IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVz
b2x2ZShCeXQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0U3JjLmdldCgp
LCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0
U3JjLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShs
b2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRlbXBEc3QuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtaXRQb3N0SW5jT3JE
ZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZywg
bV9vcGVyYXRvcik7CkBAIC04MjIsOSArODIyLDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6
OmVtaXRSZXNvbHZlKEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IGlkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1
ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRU
b1Njb3BlKHNjb3BlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7
Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1
ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVQdXRUb1Njb3BlLCAmaWRlbnQpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQo
KSwgUHJvZmlsZVR5cGVCeXRlY29kZVB1dFRvU2NvcGUsICZpZGVudCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gb2xkVmFsdWUuZ2V0KCk7CkBAIC04NDgsOSArODQ4
LDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAogICAgIFJlZ2lz
dGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgp
LCB2YWx1ZS5nZXQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUds
b2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBp
ZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2
ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJF
eHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9
CkBAIC04NzIsOSArODcyLDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0
ZWNvZAogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
aWRlbnQsIHZhbHVlLmdldCgpKTsKLSAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RI
YXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNO
b3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG9sZFZhbHVl
KTsKIH0KQEAgLTk5MiwxMyArOTkyLDEzIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRS
ZXNvbHZlKEJ5dGUKICAgICAgICAgaWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAg
ICBsb2NhbFJlZyA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGxvY2FsUmVnKTsKLSAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkg
fHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLnZtKCktPnR5cGVQ
cm9maWxlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZSh0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMo
Z2VuZXJhdG9yLCB0ZW1wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbklu
Zm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
dm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBl
UHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVt
cERzdC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
bG9jYWxSZWcsIG1fb3BlcmF0b3IpOwpAQCAtMTAxMCw5ICsxMDEwLDkgQEAgUmVnaXN0ZXJJRCog
UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIGlkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGVtaXRJbmNPckRlYyhn
ZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5k
KTsKLSAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
IHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZpZGVudCk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9TY29wZSwgJmlkZW50KTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZO
ZWVkZWQoZHN0LCB2YWx1ZS5nZXQoKSk7CiB9CkBAIC0xMDMzLDkgKzEwMzMsOSBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgZW1pdEluY09yRGVjKGdlbmVy
YXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7Ci0gICAgaWYgKGdl
bmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgUHJvZmlsZVR5
cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigp
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTEwNTUsOSArMTA1NSw5IEBAIFJlZ2lzdGVySUQq
IFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGUKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9y
LCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9l
c05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2Zp
bGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5n
ZXQoKSk7CiB9CkBAIC0xNTA2LDE1ICsxNTA2LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlS
ZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxvY2Fs
LmlzQ2FwdHVyZWQoKQotICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJv
ZmlsZXIoKQogICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmxlZnRIYW5kU2lkZU5lZWRzQ29weSht
X3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShyZXN1bHQuZ2V0KCksIGxvY2Fs
LmdldCgpKTsKICAgICAgICAgICAgIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3Is
IHJlc3VsdC5nZXQoKSwgcmVzdWx0LmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHJlc3Vs
dC5nZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuaW52YWxpZGF0ZUZvckluQ29udGV4dEZv
ckxvY2FsKGxvY2FsLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25J
bmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMTUyOCw5ICsxNTI4LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlm
eVJlc29sdmVOb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
c3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9v
cGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSksIHRoaXMpOwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0
LmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdU
eXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHkocmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1
dFRvU2NvcGUsICZtX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9T
Y29wZSwgJm1faWRlbnQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiBy
ZXR1cm5SZXN1bHQ7CiB9CkBAIC0xNTQ0LDEzICsxNTQ0LDEzIEBAIFJlZ2lzdGVySUQqIEFzc2ln
blJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1
cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsK
KyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKHRlbXBEc3QuZ2V0KCksIG1fcmlnaHQpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5p
bnZhbGlkYXRlRm9ySW5Db250ZXh0Rm9yTG9jYWwobG9jYWwuZ2V0KCkpOwotICAgICAgICAgICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLnZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3Qs
IHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9yaWdodCk7CkBAIC0xNTY2LDkgKzE1
NjYsOSBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQp
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIG1faWRlbnQsIHJlc3VsdC5nZXQoKSwgZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHko
cmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZtX2lkZW50KTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lv
bkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCkt
PnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVz
dWx0LmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9TY29wZSwgJm1faWRlbnQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgfSAKICAgICByZXR1cm4gcmV0dXJuUmVzdWx0OwogfQpAQCAt
MTU4Myw5ICsxNTgzLDkgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdCA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0KSwgcmVzdWx0
KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2Fy
ZFJlc3VsdCk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eShmb3J3YXJkUmVzdWx0LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQsIG51bGxwdHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChn
ZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVH
bG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhw
cmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7
CiB9CkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6
ZW1pdEJ5dGVjCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYg
KGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUs
IFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZv
KGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBl
UHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRW
YWx1ZSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xNjI4LDkg
KzE2MjgsOSBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndh
cmRSZXN1bHQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoZm9yd2FyZFJlc3VsdCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2Jh
bElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAo
Z2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZl
R2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQp
OwogfQpAQCAtMTY0OCw5ICsxNjQ4LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXRO
b2RlOjplbWl0QgogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUsIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIo
KSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgUHJv
ZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZTsKQEAgLTE2NzYsNyAr
MTY3Niw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICAg
ICAgICAgIHJldHVybiBsb2NhbC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogTWF5YmUgY2Fs
bCBlbWl0RXhwcmVzc2lvbkluZm8gaGVyZS4KLSAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQo
KSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAg
ICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERz
dC5nZXQoKSwgbV9pbml0KTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUo
bG9jYWwuZ2V0KCksIHRlbXBEc3QuZ2V0KCkpOwpAQCAtMTc4NiwxOCArMTc4NiwxOCBAQCB2b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlCiAKIFJlZ2lzdGVySUQqIEVtcHR5
VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewotICAgIGlmICghZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KCkpCisgICAgaWYgKCFnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJh
dG9yLmxvY2FsKG1faWRlbnQpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dp
dGhIaWdoRmlkZWxpdHkobG9jYWwuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFs
SUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOwogICAgIGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBEb05vdFRocm93SWZOb3RG
b3VuZCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsICZtX2lkZW50
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmls
ZVR5cGVCeXRlY29kZUdldEZyb21TY29wZSwgJm1faWRlbnQpOwogICAgIH0KIAotICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3Ro
KCksIC0xKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhw
b3NpdGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50
Lmxlbmd0aCgpLCAtMSkpOwogCiAgICAgLy8gSXQncyBzYWZlIHRvIHJldHVybiBudWxsIGhlcmUg
YmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdheXMgYmUgYSBjaGlsZCBub2RlIG9mIFZhclN0YXRl
bWVudE5vZGUgd2hpY2ggaWdub3JlcyBvdXIgcmV0dXJuIHZhbHVlLgogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjI3Niw5ICsyMjc2LDkgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZQogICAgICAgICBkc3QgPSAwOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUp
IDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKGdlbmVy
YXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5SZWdpc3Rlci5nZXQo
KSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgbnVsbHB0cik7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Np
b25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgp
LT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJl
dHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIGlmIChnZW5l
cmF0b3Iuc2NvcGVEZXB0aCgpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OwpAQCAtMjYwNywxNSArMjYwNywxNSBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lCiAKIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGlmIChnZW5lcmF0b3Iu
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgIGlmIChnZW5lcmF0b3Iu
dm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IERlc3RydWN0dXJpbmcgYXNzaWdubWVudHMgaW50byBhcmd1bWVudHMuCiAgICAgICAgICAgICBp
ZiAoIW1fcGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIEJpbmRpbmdOb2RlKiBwYXJhbWV0ZXIgPSBzdGF0aWNf
Y2FzdDxCaW5kaW5nTm9kZSo+KG1fcGFyYW1ldGVycy0+YXQoaSkpOwogICAgICAgICAgICAgUmVn
aXN0ZXJJRCByZWcoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKSk7Ci0gICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoJnJlZywgUHJvZmlsZVR5
cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50LCBudWxscHRyKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBhcmFtZXRl
ci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZSgmcmVnLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25B
cmd1bWVudCwgbnVsbHB0cik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxl
ckV4cHJlc3Npb25JbmZvKHBhcmFtZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90
RW5kKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNjM1LDggKzI2MzUsOCBAQCB2b2lkIEZ1
bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJu
Tm9kZSkgewogICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9y
KCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eShyMCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCwgbnVsbHB0cik7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAg
ICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVy
blN0YXRlbWVudCwgbnVsbHB0cik7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3Ig
dGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4K
ICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4ocjApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRp
c3RpY3MuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGlu
ZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSAiVHJhY2luZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXZWFrU2V0
SW5saW5lcy5oIgpAQCAtOTc5LDkgKzk3OSw5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3Bl
cmF0aW9uIGNvbGxlY3QKICAgICAKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
R2FyYmFnZSBDb2xsZWN0aW9uIik7CiAgICAgCi0gICAgaWYgKHZtKCktPmlzUHJvZmlsaW5nVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsK
ICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMpOwotICAgICAgICB2bSgpLT5o
aWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0MiKTsKKyAgICAgICAg
dm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgi
R0MiKSk7CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCShyZXZpc2lvbiAxNzI3OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRl
ICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVk
ZSAiSGlnaEZpZGVsaXR5TG9nLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKQEAgLTQ1LDYgKzQzLDgg
QEAKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgor
I2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVu
dGltZVR5CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIFZNJiB2
bSA9IGdsb2JhbFZNKCk7CiAgICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlw
dGlvbj46OmNyZWF0ZSgpOwotICAgIGlmICghdm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgeworICAgIGlmICghdm0udHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgKmVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJUaGUgVk0gZG9lcyBub3QgY3VycmVudGx5IGhhdmUgVHlw
ZSBJbmZvcm1hdGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRvdWJsZSBz
dGFydCA9IGN1cnJlbnRUaW1lTVMoKTsKLSAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vz
c0hpZ2hGaWRlbGl0eUxvZygiVXNlciBRdWVyeSIpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygp
LT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlVzZXIgUXVlcnkiKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxvY2F0aW9ucy0+bGVuZ3RoKCk7IGkrKykgewogICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBsb2NhdGlvbnMtPmdl
dChpKTsKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
UnVudGltZVR5CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlR5cGVEZXNjcmlwdGlvbj4gdHlwZURlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYm9vbCBv
a2F5OwotICAgICAgICB2bS5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3I+KGRlc2NyaXB0b3IpLCBkaXZvdCwgc291cmNlSURBc1N0cmluZy50b0ludFB0
clN0cmljdCgmb2theSksIHR5cGVEZXNjcmlwdGlvbik7CisgICAgICAgIHZtLnR5cGVQcm9maWxl
cigpLT5nZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3Ioc3RhdGljX2Nhc3Q8
VHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvcj4oZGVzY3JpcHRvciksIGRpdm90LCBzb3VyY2VJ
REFzU3RyaW5nLnRvSW50UHRyU3RyaWN0KCZva2F5KSwgdHlwZURlc2NyaXB0aW9uKTsKICAgICAg
ICAgdHlwZURlc2NyaXB0aW9ucy0+YWRkSXRlbSh0eXBlRGVzY3JpcHRpb24pOwogICAgIH0KIApA
QCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9y
VHkKIHsKICAgICB2bS53YWl0Rm9yQ29tcGlsYXRpb25zVG9Db21wbGV0ZSgpOwogCi0gICAgYm9v
bCBuZWVkc1RvUmVjb21waWxlID0gKHNob3VsZEVuYWJsZVR5cGVQcm9maWxpbmcgPyB2bS5lbmFi
bGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkgOiB2bS5kaXNhYmxlSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZygpKTsKKyAgICBib29sIG5lZWRzVG9SZWNvbXBpbGUgPSAoc2hvdWxkRW5hYmxl
VHlwZVByb2ZpbGluZyA/IHZtLmVuYWJsZVR5cGVQcm9maWxlcigpIDogdm0uZGlzYWJsZVR5cGVQ
cm9maWxlcigpKTsKICAgICBpZiAobmVlZHNUb1JlY29tcGlsZSkgewogICAgICAgICBUeXBlUmVj
b21waWxlciByZWNvbXBpbGVyOwogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9u
U2NvcGUodm0uaGVhcCk7CkBAIC0yNjQsMjAgKzI2NCwyMCBAQCBzdGF0aWMgdm9pZCByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9uc0ZvclR5CiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
CiB7CiAgICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0
ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkKQotICAgICAgICBz
ZXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5hYmxlZFN0YXRlKGZhbHNlKTsKKyAgICAgICAg
c2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoRXJyb3JTdHJpbmcq
KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZVR5cGVQcm9maWxlcihFcnJvclN0
cmluZyopCiB7Ci0gICAgc2V0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRTdGF0ZSh0
cnVlKTsKKyAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUodHJ1ZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhF
cnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZVR5cGVQcm9m
aWxlcihFcnJvclN0cmluZyopCiB7Ci0gICAgc2V0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0Vu
YWJsZWRTdGF0ZShmYWxzZSk7CisgICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFbmFibGVkU3RhdGUoYm9vbCBzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShib29s
IHNob3VsZEVuYWJsZVR5cGVQcm9maWxpbmcpCiB7CiAgICAgaWYgKG1faXNUeXBlUHJvZmlsaW5n
RW5hYmxlZCA9PSBzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhF
cnJvclN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZyhFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERl
YnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQog
CkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29u
c29sZSgpID0gMDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFbmFibGVkU3RhdGUoYm9vbCk7CisgICAgdm9pZCBzZXRUeXBlUHJvZmlsZXJFbmFibGVk
U3RhdGUoYm9vbCk7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogICAgIFNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpz
b24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24JKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEs
MTIgKzI0MSwxMiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgZGV0YWls
ZWQgaW5mb3JtdGF0aW9uIG9uIGdpdmVuIGZ1bmN0aW9uLiIKICAgICAgICAgfSwKICAgICAgICAg
ewotICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyIs
Ci0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBoaWdoIGZpZGVsaXR5IHR5cGUg
cHJvZmlsaW5nIG9uIHRoZSBWTS4iCisgICAgICAgICAgICAibmFtZSI6ICJlbmFibGVUeXBlUHJv
ZmlsZXIiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgdHlwZSBwcm9maWxp
bmcgb24gdGhlIFZNLiIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUi
OiAiZGlzYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmciLAotICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2FibGVzIGhpZ2ggZmlkZWxpdHkgdHlwZSBwcm9maWxpbmcgb24gdGhlIFZN
LiIKKyAgICAgICAgICAgICJuYW1lIjogImRpc2FibGVUeXBlUHJvZmlsZXIiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHR5cGUgcHJvZmlsaW5nIG9uIHRoZSBWTS4iCiAg
ICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6U1NFMkNoZWNrUwogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJu
VGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgpAQCAtNTMsNiArNTIsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hl
Y2tTCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgi
CiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cu
aCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9pbmMpCiAgICAgICAgIERFRklO
RV9PUChvcF9wcm9maWxlX2RpZF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93
aWxsX2NhbGwpCi0gICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfdHlwZSkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfbmFtZV9zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfd2l0
aF9zY29wZSkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC01MDEs
OSArNTAxLDkgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRo
ZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlwZWNo
ZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5
LgotICAgIGlmIChtX3ZtLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAg
ICAgICBtX3ZtLT5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhBU0NJ
SUxpdGVyYWwoIlByZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKKyAgICAvLyBUaGlz
IGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlv
biB3aGVuIHBlcmZvcm1pbmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVf
dHlwZS4KKyAgICBpZiAobV92bS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgIG1fdm0tPnR5cGVQ
cm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBm
b3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fz
c2VtYmx5KCkgfHwgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fz
c2VtYmxlciA9IGFkb3B0UHRyKG5ldyBKSVREaXNhc3NlbWJsZXIobV9jb2RlQmxvY2spKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDcgKzUyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2RpZF9jYWxsKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXNoX3dpdGhfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTcyNzkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzA2LDkgKzEzMDYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRl
eF9zdHJpbmcoSW5zdHJ1CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHJvZmlsZV90eXBlKTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAt
NDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJUeXBlUHJv
ZmlsZXJMb2cuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRleF9zdHJp
bmcoSW5zdHJ1CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIFR5cGVMb2NhdGlvbiogY2FjaGVkVHlwZUxvY2F0
aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUubG9jYXRpb247CiAgICAgaW50IHZhbHVlVG9Q
cm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTEzNjksMzEgKzEz
NjksMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZwogICAgIH0K
IAogICAgIC8vIExvYWQgdGhlIHR5cGUgcHJvZmlsaW5nIGxvZyBpbnRvIFQyLgotICAgIEhpZ2hG
aWRlbGl0eUxvZyogY2FjaGVkSGlnaEZpZGVsaXR5TG9nID0gbV92bS0+aGlnaEZpZGVsaXR5TG9n
KCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGNhY2hlZEhpZ2hGaWRlbGl0eUxvZyksIHJlZ1Qy
KTsKKyAgICBUeXBlUHJvZmlsZXJMb2cqIGNhY2hlZFR5cGVQcm9maWxlckxvZyA9IG1fdm0tPnR5
cGVQcm9maWxlckxvZygpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBlUHJvZmls
ZXJMb2cpLCByZWdUMik7CiAgICAgLy8gTG9hZCB0aGUgbmV4dCBsb2cgZW50cnkgaW50byBUMS4K
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEhpZ2hGaWRlbGl0eUxvZzo6Y3VycmVudExvZ0Vu
dHJ5T2Zmc2V0KCkpLCByZWdUMSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBUeXBlUHJv
ZmlsZXJMb2c6OmN1cnJlbnRMb2dFbnRyeU9mZnNldCgpKSwgcmVnVDEpOwogCiAgICAgLy8gU3Rv
cmUgdGhlIEpTVmFsdWUgb250byB0aGUgbG9nIGVudHJ5LgotICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIEhpZ2hGaWRlbGl0eUxvZzo6TG9nRW50cnk6OnZhbHVlT2Zmc2V0KCkpKTsK
KyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0Vu
dHJ5Ojp2YWx1ZU9mZnNldCgpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0dXJlSUQgb2Yg
dGhlIGNlbGwgaWYgVDAgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24gdGhlIGxvZyBl
bnRyeS4KICAgICBKdW1wIG5vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDApOwotICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEsIEhpZ2hGaWRlbGl0eUxvZzo6
TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRy
ZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CiAgICAgSnVtcCBza2lwSXNDZWxsID0ganVtcCgpOwogICAgIG5vdENlbGwubGluayh0aGlz
KTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgSGlnaEZpZGVs
aXR5TG9nOjpMb2dFbnRyeTo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5Ojpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgc2tpcElzQ2VsbC5saW5rKHRoaXMpOwogCiAgICAg
Ly8gU3RvcmUgdGhlIHR5cGVMb2NhdGlvbiBvbiB0aGUgbG9nIGVudHJ5LgogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihjYWNoZWRUeXBlTG9jYXRpb24pLCByZWdUMCk7Ci0gICAgc3RvcmU2NChyZWdU
MCwgQWRkcmVzcyhyZWdUMSwgSGlnaEZpZGVsaXR5TG9nOjpMb2dFbnRyeTo6bG9jYXRpb25PZmZz
ZXQoKSkpOworICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIFR5cGVQcm9maWxlckxv
Zzo6TG9nRW50cnk6OmxvY2F0aW9uT2Zmc2V0KCkpKTsKIAogICAgIC8vIEluY3JlbWVudCB0aGUg
Y3VycmVudCBsb2cgZW50cnkuCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSGlnaEZp
ZGVsaXR5TG9nOjpMb2dFbnRyeSkpLCByZWdUMSk7Ci0gICAgc3RvcmU2NChyZWdUMSwgQWRkcmVz
cyhyZWdUMiwgSGlnaEZpZGVsaXR5TG9nOjpjdXJyZW50TG9nRW50cnlPZmZzZXQoKSkpOwotICAg
IEp1bXAgc2tpcENsZWFyTG9nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bVB0cihjYWNoZWRIaWdoRmlkZWxpdHlMb2ctPmxvZ0VuZFB0cigpKSk7CisgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihzaXplb2YoVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeSkpLCByZWdUMSk7Cisg
ICAgc3RvcmU2NChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgVHlwZVByb2ZpbGVyTG9nOjpjdXJyZW50
TG9nRW50cnlPZmZzZXQoKSkpOworICAgIEp1bXAgc2tpcENsZWFyTG9nID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBlUHJvZmlsZXJMb2ctPmxvZ0Vu
ZFB0cigpKSk7CiAgICAgLy8gQ2xlYXIgdGhlIGxvZyBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRo
ZSBsb2cuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9n
KTsKICAgICBza2lwQ2xlYXJMb2cubGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJI
aWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCIKQEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoLmgiCiAjaW5jbHVkZSAi
UmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgorI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9JbmRleFN0CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlw
ZVByb2ZpbGVyTG9nKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBleGVjLT52bSgpLmhpZ2hGaWRl
bGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGws
IGNhbGxlZCBmcm9tIGluc2lkZSBiYXNlbGluZSBKSVQiKSk7CisgICAgZXhlYy0+dm0oKS50eXBl
UHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwg
Y2FsbGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCIpKTsKIH0KIAogfSAvLyBleHRlcm4gIkMi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SG9zdENhbGxSZXR1cm5WYWx1ZS5oIgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUyLDYgKzEzNTIsNiBAQCBlbmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6
CiAgICAgZGlzcGF0Y2goNSkKIAotX2xsaW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5OgotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9o
aWdoX2ZpZGVsaXR5KQorX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKKyAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGUpCiAgICAgZGlzcGF0Y2goNikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24gMTcyNzkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksNyArNzksNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6
Z2V0R2xvCiB7CiAgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwg
U3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0
cmljdG5lc3MpOwogICAgIENvZGVDYWNoZU1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc291
cmNlQ29kZS5hZGQoa2V5LCBTb3VyY2VDb2RlVmFsdWUoKSk7Ci0gICAgYm9vbCBjYW5DYWNoZSA9
IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJP
ZmYgJiYgIXZtLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7CisgICAgYm9vbCBj
YW5DYWNoZSA9IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0g
UHJvZmlsZXJPZmYgJiYgIXZtLnR5cGVQcm9maWxlcigpOwogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkgJiYgY2FuQ2FjaGUpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1
bmxpbmtlZENvZGVCbG9jayA9IGpzQ2FzdDxVbmxpbmtlZENvZGVCbG9ja1R5cGUqPihhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmNlbGwuZ2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExp
bmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkgKyB1bmxpbmtlZENvZGVCbG9jay0+Zmlyc3RMaW5lKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9n
LmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAj
aW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC02MzcsMTIgKzYzNywxMiBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nCiAgICAgUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgT1AoMikuanNWYWx1ZSgpLmFzVUludDMyKCkpLnN0cmluZygp
KSk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGln
aF9maWRlbGl0eSkKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGUpCiB7CiAg
ICAgQkVHSU4oKTsKICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gcGNbMl0udS5sb2NhdGlv
bjsKICAgICBKU1ZhbHVlIHZhbCA9IE9QX0MoMSkuanNWYWx1ZSgpOwotICAgIHZtLmhpZ2hGaWRl
bGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2YWwsIGxvY2F0aW9u
KTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9j
YXRpb24odmFsLCBsb2NhdGlvbik7CiAgICAgRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNzI3
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X3N0cnUKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2dl
bmVyaWNfcHJvcGVydHlfZW51bWVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25leHRfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3RvX2luZGV4X3N0cmluZyk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHJvZmlsZV90eXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAx
NzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIK
LSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpA
QCAtMTA0LDggKzEwNCw4IEBAIFNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3Ry
dWMKICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKFVJTlRfTUFYKQog
ICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCi0gICAgLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdTdGFydE9mZnNldChVSU5UX01BWCkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGluZ0VuZE9mZnNldChVSU5UX01BWCkKKyAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
KFVJTlRfTUFYKQorICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KFVJTlRfTUFYKQogewog
fQogCkBAIC0zNzYsMTAgKzM3NiwxMCBAQCBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFi
bGU6OnNfaW5mCiBQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgOiBTY3JpcHRFeGVjdXRhYmxl
KGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCks
IHNvdXJjZSwgZmFsc2UpCiB7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQgPSAwOwotICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNv
dXJjZS5sZW5ndGgoKSAtIDE7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuaXNQcm9maWxpbmdUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgZXhlYy0+dm0oKS5oaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5n
ZShzb3VyY2VJRCgpLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV9o
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKKyAgICBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxl
bmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAg
ZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmlu
c2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKIH0KIAogdm9pZCBQcm9ncmFtRXhlY3V0YWJs
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC00MDMsOCArNDAzLDggQEAgRnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVgogICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlO
VF9NQVgpOwogICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICBtX2VuZENvbHVt
biA9IGVuZENvbHVtbjsKLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCA9IHVubGlua2VkRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCk7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gdW5saW5r
ZWRFeGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCk7CisgICAg
bV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9m
aWxpbmdTdGFydE9mZnNldCgpOworICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpOwogfQogCiB2b2lkIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC01MDEsMTAgKzUwMSwxMCBA
QCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IGZ1bmN0
aW9uRGVjbGFyYXRpb25zW2ldLnNlY29uZC5nZXQoKTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmso
dm0sIG1fc291cmNlLCBsaW5lTm8oKSksIHNjb3BlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5h
ZGRGdW5jdGlvbihjYWxsRnJhbWUsIGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLmZpcnN0LCB2YWx1
ZSk7Ci0gICAgICAgIGlmICh2bS5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgICAgICB2bS5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCAKLSAgICAg
ICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIAotICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAg
ICBpZiAodm0udHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgICAgIHZtLnR5cGVQcm9maWxlcigp
LT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJj
ZUlEKCksIAorICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBl
UHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgCisgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJl
dmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw4IEBAIHB1YmxpYzoKICAgICBpbnQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQg
ZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KLSAgICB1bnNpZ25lZCBo
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldDsgfQotICAgIHVuc2lnbmVkIGhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsg
fQorICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZTsgfQpAQCAt
NDM3LDggKzQzNyw4IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB1bnNp
Z25lZCBtX3N0YXJ0Q29sdW1uOwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwotICAgIHVuc2ln
bmVkIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwotICAgIHVuc2lnbmVk
IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7CiB9OwogCiBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5TG9nLmNwcAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKLQotI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotdm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxp
emVIaWdoRmlkZWxpdHlMb2coKQotewotICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAg
bV9oaWdoRmlkZWxpdHlMb2dTaXplID0gNTAwMDA7Ci0gICAgbV9sb2dTdGFydFB0ciA9IG5ldyBM
b2dFbnRyeVttX2hpZ2hGaWRlbGl0eUxvZ1NpemVdOwotICAgIG1fY3VycmVudExvZ0VudHJ5UHRy
ID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3RhcnRQdHIgKyBtX2hp
Z2hGaWRlbGl0eUxvZ1NpemU7Ci19Ci0KLUhpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRlbGl0eUxv
ZygpCi17Ci0gICAgZGVsZXRlW10gbV9sb2dTdGFydFB0cjsKLX0KLQotdm9pZCBIaWdoRmlkZWxp
dHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coU3RyaW5nIHJlYXNvbikKLXsKLSAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwiJyIp
OwotCi0gICAgZG91YmxlIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSAgICBMb2dFbnRyeSog
ZW50cnkgPSBtX2xvZ1N0YXJ0UHRyOwotICAgIEhhc2hNYXA8U3RydWN0dXJlSUQsIFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4+IHNlZW5TaGFwZXM7Ci0gICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVu
dExvZ0VudHJ5UHRyKSB7Ci0gICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVy
ZUlEOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKLSAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGVudHJ5LT52YWx1ZTsKLSAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBzZWVuU2hhcGVzLmZpbmQoaWQpOwotICAgICAgICAgICAgaWYgKGl0ZXIg
PT0gc2VlblNoYXBlcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIHNoYXBlID0gSGVhcDo6aGVh
cCh2YWx1ZS5hc0NlbGwoKSktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoZW50cnktPnN0cnVjdHVy
ZUlEKS0+dG9TdHJ1Y3R1cmVTaGFwZSh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc2VlblNoYXBl
cy5zZXQoaWQsIHNoYXBlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNo
YXBlID0gaXRlci0+dmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBSdW50aW1lVHlwZSB0eXBl
ID0gVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIFR5cGVM
b2NhdGlvbiogbG9jYXRpb24gPSBlbnRyeS0+bG9jYXRpb247Ci0gICAgICAgIGxvY2F0aW9uLT5t
X2xhc3RTZWVuVHlwZSA9IHR5cGU7Ci0gICAgICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0KQotICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlwZUluZm9y
bWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7Ci0gICAgICAgIGxvY2F0aW9uLT5tX2luc3RydWN0aW9u
VHlwZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7Ci0KLSAgICAgICAg
ZW50cnkrKzsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQ
dHI7Ci0KLSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50
VGltZU1TKCk7Ci0gICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICcl
ZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKLSAgICB9Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlM
b2cuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGlnaEZpZGVsaXR5TG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhpZ2hGaWRl
bGl0eUxvZ19oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0eUxvZ19oCi0KLSNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCi0jaW5jbHVkZSAi
U3RydWN0dXJlLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVTcGluTG9jay5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotY2xhc3MgVHlwZUxvY2F0aW9uOwotCi1jbGFzcyBIaWdoRmlkZWxpdHlMb2cgewot
Ci1wdWJsaWM6Ci0gICAgc3RydWN0IExvZ0VudHJ5IHsKLSAgICAgICAgcHVibGljOgotICAgICAg
ICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAKLSAgICAg
ICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBz
dHJ1Y3R1cmVJRE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgc3Ry
dWN0dXJlSUQpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgdmFsdWVPZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTG9nRW50cnksIHZhbHVlKTsgfQotICAgICAgICBzdGF0aWMg
cHRyZGlmZl90IGxvY2F0aW9uT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKExvZ0Vu
dHJ5LCBsb2NhdGlvbik7IH0KLSAgICB9OwotCi0KLSAgICBIaWdoRmlkZWxpdHlMb2coKQotICAg
ICAgICA6IG1fbG9nU3RhcnRQdHIoMCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVIaWdoRmlk
ZWxpdHlMb2coKTsKLSAgICB9Ci0KLSAgICB+SGlnaEZpZGVsaXR5TG9nKCk7Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2
YWx1ZSwgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xv
Z1N0YXJ0UHRyKTsKLQotICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ci0+bG9jYXRpb24gPSBs
b2NhdGlvbjsKLSAgICAgICAgbV9jdXJyZW50TG9nRW50cnlQdHItPnZhbHVlID0gdmFsdWU7Ci0g
ICAgICAgIG1fY3VycmVudExvZ0VudHJ5UHRyLT5zdHJ1Y3R1cmVJRCA9ICh2YWx1ZS5pc0NlbGwo
KSA/IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpIDogMCk7Ci0gICAgCi0gICAgICAgIG1f
Y3VycmVudExvZ0VudHJ5UHRyICs9IDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRM
b2dFbnRyeVB0ciA9PSBtX2xvZ0VuZFB0cikpCi0gICAgICAgICAgICBwcm9jZXNzSGlnaEZpZGVs
aXR5TG9nKCJMb2cgRnVsbCIpOwotICAgIH0KLQotICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0
eUxvZyhTdHJpbmcpOwotICAgIExvZ0VudHJ5KiBsb2dFbmRQdHIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0VuZFB0cjsgfQotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBsb2dTdGFydE9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihIaWdoRmlkZWxpdHlMb2csIG1fbG9nU3RhcnRQdHIpOyB9
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBjdXJyZW50TG9nRW50cnlPZmZzZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSGlnaEZpZGVsaXR5TG9nLCBtX2N1cnJlbnRMb2dFbnRyeVB0cik7IH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKLQotICAg
IHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKLSAgICBMb2dFbnRyeSogbV9sb2dTdGFy
dFB0cjsKLSAgICBMb2dFbnRyeSogbV9jdXJyZW50TG9nRW50cnlQdHI7Ci0gICAgTG9nRW50cnkq
IG1fbG9nRW5kUHRyOwotfTsKLQotfSAvL25hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vSGlnaEZp
ZGVsaXR5TG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAkocmV2aXNpb24gMTcyNzkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmgiCi0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0KLXZvaWQgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uKQotewotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVt
ZW50ID8gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuIDogVHlwZVBy
b2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbDsKLQotICAgIGRhdGFMb2dGKCJbU3RhcnQsIEVu
ZF06OlsldSwgJXVdXG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZv
dEVuZCk7Ci0KLSAgICBpZiAoZmluZExvY2F0aW9uKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxv
Y2F0aW9uLT5tX3NvdXJjZUlELCBkZXNjcmlwdG9yKSkKLSAgICAgICAgZGF0YUxvZygiXHRcdFtF
bnRyeSBJUyBpbiBTeXN0ZW1dXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGFMb2coIlx0XHRb
RW50cnkgSVMgTk9UIGluIHN5c3RlbV1cbiIpOwotCi0gICAgZGF0YUxvZygiXHRcdCIsIGxvY2F0
aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50ID8g
IltSZXR1cm4gU3RhdGVtZW50XSIgOiAiW05vcm1hbCBTdGF0ZW1lbnRdIiwgIlxuIik7Ci0KLSAg
ICBkYXRhTG9nKCJcdFx0I0xvY2FsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlw
ZVNldC0+c2VlblR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwotICAgIGlm
IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICBkYXRhTG9nKCJcdFx0I0dsb2Jh
bCNcblx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNl
KCJcbiIsICJcblx0XHQiKSwgIlxuIik7Ci19Ci0KLXZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQotewotICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBkaXZv
dFN0YXJ0OiV1LCBkaXZvdEVuZDoldVxuIiwgbG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRp
b24tPm1fZGl2b3RFbmQpOwotCi0gICAgaWYgKCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlv
bi0+bV9zb3VyY2VJRCkpIHsKLSAgICAgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+IGJ1Y2tldDsK
LSAgICAgICAgbV9idWNrZXRNYXAuc2V0KGxvY2F0aW9uLT5tX3NvdXJjZUlELCBidWNrZXQpOwot
ICAgIH0KLQotICAgIFZlY3RvcjxUeXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9idWNrZXRNYXAu
ZmluZChsb2NhdGlvbi0+bV9zb3VyY2VJRCktPnZhbHVlOwotICAgIGJ1Y2tldC5hcHBlbmQobG9j
YXRpb24pOwotfQotCi12b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3Ig
ZGVzY3JpcHRvciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPiYgZGVzY3JpcHRp
b24pCi17Ci0gICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwg
c291cmNlSUQsIGRlc2NyaXB0b3IpOwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2ds
b2JhbFZhcmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0cykgewotICAgICAg
ICBkZXNjcmlwdGlvbi0+c2V0RGlzcGxheVR5cGVOYW1lKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQtPmRpc3BsYXlOYW1lKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0R2xvYmFsUHJpbWl0
aXZlVHlwZU5hbWVzKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFsbFByaW1pdGl2ZVR5cGVO
YW1lcygpKTsKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldEdsb2JhbFN0cnVjdHVyZXMobG9jYXRp
b24tPm1fZ2xvYmFsVHlwZVNldC0+YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkpOwotICAg
IH0gZWxzZQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0RGlzcGxheVR5cGVOYW1lKGxvY2F0aW9u
LT5tX2luc3RydWN0aW9uVHlwZVNldC0+ZGlzcGxheU5hbWUoKSk7Ci0KLSAgICBkZXNjcmlwdGlv
bi0+c2V0TG9jYWxQcmltaXRpdmVUeXBlTmFtZXMobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBl
U2V0LT5hbGxQcmltaXRpdmVUeXBlTmFtZXMoKSk7Ci0gICAgZGVzY3JpcHRpb24tPnNldExvY2Fs
U3RydWN0dXJlcyhsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFN0cnVjdHVyZVJl
cHJlc2VudGF0aW9ucygpKTsKLX0KLQotc3RhdGljIGJvb2wgZGVzY3JpcHRvck1hdGNoZXNUeXBl
TG9jYXRpb24oVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCBUeXBlTG9j
YXRpb24qIGxvY2F0aW9uKQotewotICAgIGlmIChkZXNjcmlwdG9yID09IFR5cGVQcm9maWxlclNl
YXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJs
ZUlEID09IEhpZ2hGaWRlbGl0eVJldHVyblN0YXRlbWVudCkgIAotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGlmIChkZXNjcmlwdG9yID09IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JO
b3JtYWwgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlSZXR1
cm5TdGF0ZW1lbnQpICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVR5cGVMb2NhdGlvbiogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpCi17Ci0gICAgUXVlcnlLZXkgcXVlcnlLZXkoc291cmNlSUQs
IGRpdm90KTsKLSAgICBhdXRvIGl0ZXIgPSBtX3F1ZXJ5Q2FjaGUuZmluZChxdWVyeUtleSk7Ci0g
ICAgaWYgKGl0ZXIgIT0gbV9xdWVyeUNhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7Ci0KLSAgICBpZiAoIW1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmhhc0V4ZWN1dGVk
QXRPZmZzZXQoc291cmNlSUQsIGRpdm90KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBBU1NFUlQobV9idWNrZXRNYXAuY29udGFpbnMoc291cmNlSUQpKTsKLQotICAgIFZlY3RvcjxU
eXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9idWNrZXRNYXAuZmluZChzb3VyY2VJRCktPnZhbHVl
OwotICAgIFR5cGVMb2NhdGlvbiogYmVzdE1hdGNoID0gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBk
aXN0YW5jZSA9IFVJTlRfTUFYOyAvLyBCZWNhdXNlIGFzc2lnbm1lbnRzIG1heSBiZSBuZXN0ZWQs
IG1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBjbG9zZXN0IGVuY2xvc2luZyBhc3NpZ25tZW50IHRvIHRo
aXMgY2hhcmFjdGVyIG9mZnNldC4KLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGJ1Y2tl
dC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlv
biA9IGJ1Y2tldC5hdChpKTsKLSAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuICYmIGRlc2NyaXB0b3JNYXRjaGVzVHlwZUxv
Y2F0aW9uKGRlc2NyaXB0b3IsIGxvY2F0aW9uKSAmJiBsb2NhdGlvbi0+bV9kaXZvdEZvckZ1bmN0
aW9uT2Zmc2V0SWZSZXR1cm5TdGF0ZW1lbnQgPT0gZGl2b3QpCi0gICAgICAgICAgICByZXR1cm4g
bG9jYXRpb247Ci0KLSAgICAgICAgaWYgKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0gZGl2b3Qg
JiYgZGl2b3QgPD0gbG9jYXRpb24tPm1fZGl2b3RFbmQgJiYgbG9jYXRpb24tPm1fZGl2b3RFbmQg
LSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0IDw9IGRpc3RhbmNlICYmIGRlc2NyaXB0b3JNYXRjaGVz
VHlwZUxvY2F0aW9uKGRlc2NyaXB0b3IsIGxvY2F0aW9uKSkgewotICAgICAgICAgICAgZGlzdGFu
Y2UgPSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQ7Ci0gICAg
ICAgICAgICBiZXN0TWF0Y2ggPSBsb2NhdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChiZXN0TWF0Y2gpCi0gICAgICAgIG1fcXVlcnlDYWNoZS5zZXQocXVlcnlLZXksIGJlc3RNYXRj
aCk7Ci0gICAgLy8gRklYTUU6IEJlc3RNYXRjaCBzaG91bGQgbmV2ZXIgYmUgbnVsbCBwYXN0IHRo
aXMgcG9pbnQuIFRoaXMgZG9lc24ndCBob2xkIGN1cnJlbnRseSBiZWNhdXNlIHdlIGlnbm9yZSB2
YXIgYXNzaWdubWVudHMgd2hlbiBjb2RlIGNvbnRhaW5zIGV2YWwvV2l0aCAoVmFySW5qZWN0aW9u
KS4gCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE4
NAotICAgIHJldHVybiBiZXN0TWF0Y2g7Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcl9oCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKLSNpbmNsdWRlICJUeXBlTG9jYXRpb25DYWNoZS5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNw
YWNlIFR5cGVCdWlsZGVyICB7IG5hbWVzcGFjZSBSdW50aW1lIHsKLWNsYXNzIFR5cGVEZXNjcmlw
dGlvbjsKLX19fQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVHlwZUxvY2F0aW9uOwotCi1z
dHJ1Y3QgUXVlcnlLZXkgewotICAgIFF1ZXJ5S2V5KCkKLSAgICAgICAgOiBtX3NvdXJjZUlEKDAp
Ci0gICAgICAgICwgbV9kaXZvdCgwKQotICAgIHsgfQotCi0gICAgUXVlcnlLZXkoaW50cHRyX3Qg
c291cmNlSUQsIHVuc2lnbmVkIGRpdm90KQotICAgICAgICA6IG1fc291cmNlSUQoc291cmNlSUQp
Ci0gICAgICAgICwgbV9kaXZvdChkaXZvdCkKLSAgICB7IH0KLQotICAgIFF1ZXJ5S2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUlEKElOVFBUUl9N
QVgpCi0gICAgICAgICwgbV9kaXZvdChVSU5UX01BWCkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEID09IElOVFBU
Ul9NQVggJiYgbV9kaXZvdCA9PSBVSU5UX01BWDsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBRdWVyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgPT0gb3RoZXIubV9z
b3VyY2VJRCAmJiBtX2Rpdm90ID09IG90aGVyLm1fZGl2b3Q7IH0KLSAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCArIG1fZGl2b3Q7IH0KLQotICAgIGludHB0cl90
IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9kaXZvdDsKLX07Ci0KLXN0cnVjdCBRdWVyeUtl
eUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1ZXJ5S2V5JiBrZXkpIHsg
cmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBRdWVyeUtl
eSYgYSwgY29uc3QgUXVlcnlLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLX0g
Ly9uYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6
OlF1ZXJ5S2V5PiB7Ci0gICAgdHlwZWRlZiBKU0M6OlF1ZXJ5S2V5SGFzaCBIYXNoOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPEpTQzo6UXVlcnlLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6
UXVlcnlLZXk+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1lbnVtIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgewotICAgIFR5cGVQcm9maWxlclNl
YXJjaERlc2NyaXB0b3JOb3JtYWwgPSAxLAotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JGdW5jdGlvblJldHVybiA9IDIKLX07Ci0KLWNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRp
b24qKTsKLSAgICB2b2lkIGdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBp
bnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj4mKTsKLSAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2Nh
dGlvbiopOwotICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlKCkgeyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9Ci0gICAgVHlw
ZUxvY2F0aW9uQ2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0
aW9uQ2FjaGU7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgVmVj
dG9yPFR5cGVMb2NhdGlvbio+PiBTb3VyY2VJRFRvTG9jYXRpb25CdWNrZXRNYXA7Ci0gICAgU291
cmNlSURUb0xvY2F0aW9uQnVja2V0TWFwIG1fYnVja2V0TWFwOwotICAgIEZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSBtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25D
YWNoZSBtX3R5cGVMb2NhdGlvbkNhY2hlOwotICAgIHR5cGVkZWYgSGFzaE1hcDxRdWVyeUtleSwg
VHlwZUxvY2F0aW9uKj4gVHlwZUxvY2F0aW9uUXVlcnlDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25R
dWVyeUNhY2hlIG1fcXVlcnlDYWNoZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5k
aWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyArMjc0LDcg
QEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgZ2NN
YXhIZWFwU2l6ZSwgMCkgXAogICAgIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkg
XAogICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCi0gICAgdihi
b29sLCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCBmYWxzZSkgXAorICAgIHYoYm9vbCwg
ZW5hYmxlVHlwZVByb2ZpbGVyLCBmYWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUV4
Y2VwdGlvbkZ1enosIGZhbHNlKSBcCiAgICAgdih1bnNpZ25lZCwgZmlyZUV4Y2VwdGlvbkZ1enpB
dCwgMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN5bWJv
bFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVDYXB0dXJlZE4KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIFN5bWJvbFRhYmxlOjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5VHlwZVByb2ZpbGlu
Zyhjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikKK3ZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVG
b3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKQogewogICAgIGlmICht
X3R5cGVQcm9maWxpbmdSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVGb3JIaWdoRmlkZWxpdHkKICAgICBtX3R5cGVQ
cm9maWxpbmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGluZ1JhcmVEYXRh
PigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBtX3R5cGVQcm9maWxpbmdSYXJl
RGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1
ZUlER2VuZXJhdGlvbik7CisgICAgICAgIG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3VuaXF1
ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
KTsKICAgICAgICAgbV90eXBlUHJvZmlsaW5nUmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxl
TWFwLnNldChpdGVyLT52YWx1ZS5nZXRJbmRleCgpLCBpdGVyLT5rZXkpOwogICAgIH0KIH0KQEAg
LTIwNywxMCArMjA3LDEwIEBAIEdsb2JhbFZhcmlhYmxlSUQgU3ltYm9sVGFibGU6OnVuaXF1ZUlE
Rm8KICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1h
cC5maW5kKGtleSk7CiAgICAgYXV0byBlbmQgPSBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91
bmlxdWVJRE1hcC5lbmQoKTsKICAgICBpZiAoaXRlciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBI
aWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzOworICAgICAgICByZXR1cm4gVHlwZVByb2ZpbGVy
Tm9HbG9iYWxJREV4aXN0czsKIAogICAgIEdsb2JhbFZhcmlhYmxlSUQgaWQgPSBpdGVyLT52YWx1
ZTsKLSAgICBpZiAoaWQgPT0gSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsK
KyAgICBpZiAoaWQgPT0gVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsKICAg
ICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpOwogICAgICAgICBtX3R5cGVQ
cm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoa2V5LCBpZCk7CiAgICAgICAgIG1f
dHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGtleSwgVHlwZVNl
dDo6Y3JlYXRlKCkpOyAvLyBNYWtlIGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGlzIGNvcnJl
c3BvbmRpbmcgSUQuCkBAIC0yMjYsNyArMjI2LDcgQEAgR2xvYmFsVmFyaWFibGVJRCBTeW1ib2xU
YWJsZTo6dW5pcXVlSURGbwogICAgIGF1dG8gaXRlciA9IG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRh
LT5tX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC5maW5kKHJlZ2lzdGVySW5kZXgpOwogICAgIGF1dG8g
ZW5kID0gbV90eXBlUHJvZmlsaW5nUmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLmVu
ZCgpOwogICAgIGlmIChpdGVyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIEhpZ2hGaWRlbGl0eU5v
R2xvYmFsSURFeGlzdHM7CisgICAgICAgIHJldHVybiBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhp
c3RzOwogCiAgICAgcmV0dXJuIHVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1
ZS5nZXQoKSwgdm0pOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNzI3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAg
cHVibGljOgogICAgIAogICAgIFN5bWJvbFRhYmxlKiBjbG9uZUNhcHR1cmVkTmFtZXMoVk0mKTsK
IAotICAgIHZvaWQgcHJlcGFyZUZvckhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYpOworICAgIHZvaWQgcHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgorCisjaW5j
bHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKKwordm9pZCBUeXBlUHJvZmlsZXI6OmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24pCit7CisgICAgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1
cm5TdGF0ZW1lbnQgPyBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4g
OiBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsOworCisgICAgZGF0YUxvZ0YoIltT
dGFydCwgRW5kXTo6WyV1LCAldV1cbiIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9u
LT5tX2Rpdm90RW5kKTsKKworICAgIGlmIChmaW5kTG9jYXRpb24obG9jYXRpb24tPm1fZGl2b3RT
dGFydCwgbG9jYXRpb24tPm1fc291cmNlSUQsIGRlc2NyaXB0b3IpKQorICAgICAgICBkYXRhTG9n
KCJcdFx0W0VudHJ5IElTIGluIFN5c3RlbV1cbiIpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxv
ZygiXHRcdFtFbnRyeSBJUyBOT1QgaW4gc3lzdGVtXVxuIik7CisKKyAgICBkYXRhTG9nKCJcdFx0
IiwgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0
ZW1lbnQgPyAiW1JldHVybiBTdGF0ZW1lbnRdIiA6ICJbTm9ybWFsIFN0YXRlbWVudF0iLCAiXG4i
KTsKKworICAgIGRhdGFMb2coIlx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1
Y3Rpb25UeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxuIik7
CisgICAgaWYgKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQpCisgICAgICAgIGRhdGFMb2coIlx0
XHQjR2xvYmFsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnNlZW5UeXBlcygp
LnJlcGxhY2UoIlxuIiwgIlxuXHRcdCIpLCAiXG4iKTsKK30KKwordm9pZCBUeXBlUHJvZmlsZXI6
Omluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGRhdGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3Rh
cnQ6JXUsIGRpdm90RW5kOiV1XG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+
bV9kaXZvdEVuZCk7CisKKyAgICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5t
X3NvdXJjZUlEKSkgeworICAgICAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4gYnVja2V0OworICAg
ICAgICBtX2J1Y2tldE1hcC5zZXQobG9jYXRpb24tPm1fc291cmNlSUQsIGJ1Y2tldCk7CisgICAg
fQorCisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBtX2J1Y2tldE1hcC5maW5k
KGxvY2F0aW9uLT5tX3NvdXJjZUlEKS0+dmFsdWU7CisgICAgYnVja2V0LmFwcGVuZChsb2NhdGlv
bik7Cit9CisKK3ZvaWQgVHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRG
b3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCB1bnNp
Z25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+JiBkZXNjcmlwdGlvbikKK3sKKyAgICBUeXBl
TG9jYXRpb24qIGxvY2F0aW9uID0gZmluZExvY2F0aW9uKGRpdm90LCBzb3VyY2VJRCwgZGVzY3Jp
cHRvcik7CisgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAh
PSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzKSB7CisgICAgICAgIGRlc2NyaXB0aW9uLT5z
ZXREaXNwbGF5VHlwZU5hbWUobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+ZGlzcGxheU5hbWUo
KSk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRHbG9iYWxQcmltaXRpdmVUeXBlTmFtZXMobG9j
YXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkpOworICAgICAg
ICBkZXNjcmlwdGlvbi0+c2V0R2xvYmFsU3RydWN0dXJlcyhsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0LT5hbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGRlc2NyaXB0aW9uLT5zZXREaXNwbGF5VHlwZU5hbWUobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25U
eXBlU2V0LT5kaXNwbGF5TmFtZSgpKTsKKworICAgIGRlc2NyaXB0aW9uLT5zZXRMb2NhbFByaW1p
dGl2ZVR5cGVOYW1lcyhsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFByaW1pdGl2
ZVR5cGVOYW1lcygpKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0TG9jYWxTdHJ1Y3R1cmVzKGxvY2F0
aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkp
OworfQorCitzdGF0aWMgYm9vbCBkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbihUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24p
Cit7CisgICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1
bmN0aW9uUmV0dXJuICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gVHlwZVByb2Zp
bGVyUmV0dXJuU3RhdGVtZW50KSAgCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGRl
c2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCAmJiBsb2NhdGlv
bi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9IFR5cGVQcm9maWxlclJldHVyblN0YXRlbWVudCkgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworVHlwZUxvY2F0
aW9uKiBUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbih1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qg
c291cmNlSUQsIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvcikKK3sKKyAg
ICBRdWVyeUtleSBxdWVyeUtleShzb3VyY2VJRCwgZGl2b3QpOworICAgIGF1dG8gaXRlciA9IG1f
cXVlcnlDYWNoZS5maW5kKHF1ZXJ5S2V5KTsKKyAgICBpZiAoaXRlciAhPSBtX3F1ZXJ5Q2FjaGUu
ZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKworICAgIGlmICghbV9mdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuaGFzRXhlY3V0ZWRBdE9mZnNldChzb3VyY2VJRCwgZGl2b3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChtX2J1Y2tldE1hcC5jb250YWlu
cyhzb3VyY2VJRCkpOworCisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBtX2J1
Y2tldE1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7CisgICAgVHlwZUxvY2F0aW9uKiBiZXN0TWF0
Y2ggPSBudWxscHRyOworICAgIHVuc2lnbmVkIGRpc3RhbmNlID0gVUlOVF9NQVg7IC8vIEJlY2F1
c2UgYXNzaWdubWVudHMgbWF5IGJlIG5lc3RlZCwgbWFrZSBzdXJlIHdlIGZpbmQgdGhlIGNsb3Nl
c3QgZW5jbG9zaW5nIGFzc2lnbm1lbnQgdG8gdGhpcyBjaGFyYWN0ZXIgb2Zmc2V0LgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYnVja2V0LnNpemUoKTsgaSA8IHNpemU7IGkrKykgewor
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gYnVja2V0LmF0KGkpOworICAgICAgICBp
ZiAoZGVzY3JpcHRvciA9PSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1
cm4gJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwgbG9jYXRpb24p
ICYmIGxvY2F0aW9uLT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudCA9
PSBkaXZvdCkKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjsKKworICAgICAgICBpZiAobG9j
YXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXZvdCAmJiBkaXZvdCA8PSBsb2NhdGlvbi0+bV9kaXZv
dEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0g
ZGlzdGFuY2UgJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwgbG9j
YXRpb24pKSB7CisgICAgICAgICAgICBkaXN0YW5jZSA9IGxvY2F0aW9uLT5tX2Rpdm90RW5kIC0g
bG9jYXRpb24tPm1fZGl2b3RTdGFydDsKKyAgICAgICAgICAgIGJlc3RNYXRjaCA9IGxvY2F0aW9u
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJlc3RNYXRjaCkKKyAgICAgICAgbV9xdWVy
eUNhY2hlLnNldChxdWVyeUtleSwgYmVzdE1hdGNoKTsKKyAgICAvLyBGSVhNRTogQmVzdE1hdGNo
IHNob3VsZCBuZXZlciBiZSBudWxsIHBhc3QgdGhpcyBwb2ludC4gVGhpcyBkb2Vzbid0IGhvbGQg
Y3VycmVudGx5IGJlY2F1c2Ugd2UgaWdub3JlIHZhciBhc3NpZ25tZW50cyB3aGVuIGNvZGUgY29u
dGFpbnMgZXZhbC9XaXRoIChWYXJJbmplY3Rpb24pLiAKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTg0CisgICAgcmV0dXJuIGJlc3RNYXRjaDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
eXBlUHJvZmlsZXJfaAorI2RlZmluZSBUeXBlUHJvZmlsZXJfaAorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiCisjaW5jbHVkZSAi
VHlwZUxvY2F0aW9uQ2FjaGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBUeXBlQnVpbGRlciAgeyBuYW1lc3BhY2UgUnVudGlt
ZSB7CitjbGFzcyBUeXBlRGVzY3JpcHRpb247Cit9fX0KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIFR5cGVMb2NhdGlvbjsKKworc3RydWN0IFF1ZXJ5S2V5IHsKKyAgICBRdWVyeUtleSgpCisg
ICAgICAgIDogbV9zb3VyY2VJRCgwKQorICAgICAgICAsIG1fZGl2b3QoMCkKKyAgICB7IH0KKwor
ICAgIFF1ZXJ5S2V5KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBkaXZvdCkKKyAgICAgICAg
OiBtX3NvdXJjZUlEKHNvdXJjZUlEKQorICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCisgICAgeyB9
CisKKyAgICBRdWVyeUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9zb3VyY2VJRChJTlRQVFJfTUFYKQorICAgICAgICAsIG1fZGl2b3QoVUlOVF9NQVgpCisg
ICAgeyB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJRCA9PSBJTlRQVFJfTUFYICYmIG1fZGl2b3QgPT0gVUlOVF9NQVg7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUlEID09IG90aGVyLm1fc291cmNlSUQgJiYgbV9kaXZvdCA9PSBvdGhlci5tX2Rpdm90
OyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgKyBtX2Rp
dm90OyB9CisKKyAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOworICAgIHVuc2lnbmVkIG1fZGl2b3Q7
Cit9OworCitzdHJ1Y3QgUXVlcnlLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBRdWVyeUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgUXVlcnlLZXkmIGEsIGNvbnN0IFF1ZXJ5S2V5JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPEpTQzo6UXVlcnlLZXk+IHsKKyAgICB0eXBlZGVmIEpTQzo6UXVl
cnlLZXlIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4gOiBTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4geyB9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ciB7CisgICAgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCA9IDEsCisgICAgVHlw
ZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuID0gMgorfTsKKworY2xhc3Mg
VHlwZVByb2ZpbGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIGxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9u
KFR5cGVMb2NhdGlvbiopOworICAgIHZvaWQgZ2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9y
SW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBp
bnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj4mKTsKKyAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2Nh
dGlvbiopOworICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlKCkgeyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9CisgICAgVHlw
ZUxvY2F0aW9uQ2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0
aW9uQ2FjaGU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRp
b24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yKTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFZlY3RvcjxUeXBlTG9j
YXRpb24qPj4gU291cmNlSURUb0xvY2F0aW9uQnVja2V0TWFwOworICAgIFNvdXJjZUlEVG9Mb2Nh
dGlvbkJ1Y2tldE1hcCBtX2J1Y2tldE1hcDsKKyAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUg
bV9mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU7CisgICAgVHlwZUxvY2F0aW9uQ2FjaGUgbV90eXBl
TG9jYXRpb25DYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UXVlcnlLZXksIFR5cGVMb2NhdGlv
bio+IFR5cGVMb2NhdGlvblF1ZXJ5Q2FjaGU7CisgICAgVHlwZUxvY2F0aW9uUXVlcnlDYWNoZSBt
X3F1ZXJ5Q2FjaGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFR5cGVQ
cm9maWxlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlckxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCit2b2lkIFR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6
ZUxvZygpCit7CisgICAgQVNTRVJUKCFtX2xvZ1N0YXJ0UHRyKTsKKyAgICBtX2xvZ1NpemUgPSA1
MDAwMDsKKyAgICBtX2xvZ1N0YXJ0UHRyID0gbmV3IExvZ0VudHJ5W21fbG9nU2l6ZV07CisgICAg
bV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOworICAgIG1fbG9nRW5kUHRyID0g
bV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZTsKK30KKworVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVBy
b2ZpbGVyTG9nKCkKK3sKKyAgICBkZWxldGVbXSBtX2xvZ1N0YXJ0UHRyOworfQorCit2b2lkIFR5
cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoU3RyaW5nIHJlYXNvbikKK3sKKyAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwg
IiciKTsKKworICAgIGRvdWJsZSBiZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CisgICAgTG9nRW50
cnkqIGVudHJ5ID0gbV9sb2dTdGFydFB0cjsKKyAgICBIYXNoTWFwPFN0cnVjdHVyZUlELCBSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+PiBzZWVuU2hhcGVzOworICAgIHdoaWxlIChlbnRyeSAhPSBtX2N1
cnJlbnRMb2dFbnRyeVB0cikgeworICAgICAgICBTdHJ1Y3R1cmVJRCBpZCA9IGVudHJ5LT5zdHJ1
Y3R1cmVJRDsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZTsgCisgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBlbnRyeS0+dmFsdWU7CisgICAgICAgIGlmIChpZCkgeworICAgICAg
ICAgICAgYXV0byBpdGVyID0gc2VlblNoYXBlcy5maW5kKGlkKTsKKyAgICAgICAgICAgIGlmIChp
dGVyID09IHNlZW5TaGFwZXMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBzaGFwZSA9IEhlYXA6
OmhlYXAodmFsdWUuYXNDZWxsKCkpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGVudHJ5LT5zdHJ1
Y3R1cmVJRCktPnRvU3RydWN0dXJlU2hhcGUodmFsdWUpOworICAgICAgICAgICAgICAgIHNlZW5T
aGFwZXMuc2V0KGlkLCBzaGFwZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzaGFwZSA9IGl0ZXItPnZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgUnVudGltZVR5cGUg
dHlwZSA9IFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodmFsdWUpOworICAgICAgICBU
eXBlTG9jYXRpb24qIGxvY2F0aW9uID0gZW50cnktPmxvY2F0aW9uOworICAgICAgICBsb2NhdGlv
bi0+bV9sYXN0U2VlblR5cGUgPSB0eXBlOworICAgICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFs
VHlwZVNldCkKKyAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5cGVJ
bmZvcm1hdGlvbih0eXBlLCBzaGFwZSwgaWQpOworICAgICAgICBsb2NhdGlvbi0+bV9pbnN0cnVj
dGlvblR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBzaGFwZSwgaWQpOworCisgICAg
ICAgIGVudHJ5Kys7CisgICAgfQorCisgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0
YXJ0UHRyOworCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZG91YmxlIGFmdGVyID0gY3Vy
cmVudFRpbWVNUygpOworICAgICAgICBkYXRhTG9nRigiIFByb2Nlc3NpbmcgdGhlIGxvZyB0b29r
OiAnJWYnIG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxv
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlckxvZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVQcm9m
aWxlckxvZ19oCisjZGVmaW5lIFR5cGVQcm9maWxlckxvZ19oCisKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgi
CisjaW5jbHVkZSA8d3RmL0J5dGVTcGluTG9jay5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgVHlwZUxvY2F0aW9uOworCitjbGFzcyBUeXBlUHJvZmlsZXJMb2cgeworCitwdWJsaWM6Cisg
ICAgc3RydWN0IExvZ0VudHJ5IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICBKU1ZhbHVlIHZh
bHVlOworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAKKyAgICAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgc3RydWN0dXJlSUQpOyB9
CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgdmFsdWVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoTG9nRW50cnksIHZhbHVlKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGxv
Y2F0aW9uT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKExvZ0VudHJ5LCBsb2NhdGlv
bik7IH0KKyAgICB9OworCisKKyAgICBUeXBlUHJvZmlsZXJMb2coKQorICAgICAgICA6IG1fbG9n
U3RhcnRQdHIoMCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVMb2coKTsKKyAgICB9CisKKyAg
ICB+VHlwZVByb2ZpbGVyTG9nKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVjb3JkVHlw
ZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2YWx1ZSwgVHlwZUxvY2F0aW9uKiBsb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKKworICAgICAgICBt
X2N1cnJlbnRMb2dFbnRyeVB0ci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgbV9jdXJy
ZW50TG9nRW50cnlQdHItPnZhbHVlID0gdmFsdWU7CisgICAgICAgIG1fY3VycmVudExvZ0VudHJ5
UHRyLT5zdHJ1Y3R1cmVJRCA9ICh2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmVJRCgpIDogMCk7CisgICAgCisgICAgICAgIG1fY3VycmVudExvZ0VudHJ5UHRyICs9IDE7
CisgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRMb2dFbnRyeVB0ciA9PSBtX2xvZ0VuZFB0
cikpCisgICAgICAgICAgICBwcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxs
IikpOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0xvZ0VudHJpZXMoU3RyaW5nKTsKKyAgICBM
b2dFbnRyeSogbG9nRW5kUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dFbmRQdHI7IH0KKworICAg
IHN0YXRpYyBwdHJkaWZmX3QgbG9nU3RhcnRPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoVHlwZVByb2ZpbGVyTG9nLCBtX2xvZ1N0YXJ0UHRyKTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3QgY3VycmVudExvZ0VudHJ5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVQ
cm9maWxlckxvZywgbV9jdXJyZW50TG9nRW50cnlQdHIpOyB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0aWFsaXplTG9nKCk7CisKKyAgICB1bnNpZ25lZCBtX2xvZ1NpemU7CisgICAgTG9nRW50
cnkqIG1fbG9nU3RhcnRQdHI7CisgICAgTG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRyOwor
ICAgIExvZ0VudHJ5KiBtX2xvZ0VuZFB0cjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gVHlwZVByb2ZpbGVyTG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHJldmlzaW9uIDE3Mjc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQAogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKLSNpbmNsdWRl
ICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpA
QCAtODQsNiArODIsOCBAQAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNp
bmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNp
bmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMTkzLDcgKzE5Myw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51
bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZSgqdGhpcykpCiAgICAgLCBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCi0gICAgLCBtX2hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291bnQoMCkKKyAgICAsIG1fdHlwZVByb2Zp
bGVyRW5hYmxlZENvdW50KDApCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIo
KnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7
CkBAIC0yODYsOCArMjg2LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIg
PSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBpZiAo
T3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBlbmFibGVI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCk7CisgICAgaWYgKE9wdGlvbnM6OmVuYWJsZVR5cGVQ
cm9maWxlcigpKQorICAgICAgICBlbmFibGVUeXBlUHJvZmlsZXIoKTsKIH0KIAogVk06On5WTSgp
CkBAIC04OTksMjkgKzg5OSwyOSBAQCBUeXBlTG9jYXRpb24qIFZNOjpuZXh0VHlwZUxvY2F0aW9u
KCkgCiAgICAgcmV0dXJuIG1fdHlwZUxvY2F0aW9uSW5mby0+YWRkKCk7IAogfQogCi1ib29sIFZN
OjplbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkKK2Jvb2wgVk06OmVuYWJsZVR5cGVQ
cm9maWxlcigpCiB7CiAgICAgYm9vbCBuZWVkc1RvUmVjb21waWxlID0gZmFsc2U7Ci0gICAgaWYg
KCFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291bnQpIHsKLSAgICAgICAgbV9o
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcj4oKTsKLSAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhpZ2hGaWRlbGl0eUxvZz4oKTsKKyAgICBpZiAoIW1fdHlwZVByb2ZpbGVyRW5hYmxlZENv
dW50KSB7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlUHJv
ZmlsZXI+KCk7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyTG9nID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlUHJvZmlsZXJMb2c+KCk7CiAgICAgICAgIG1fdHlwZUxvY2F0aW9uSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFnPFR5cGVMb2NhdGlvbj4+KCk7CiAgICAgICAgIG5lZWRzVG9SZWNvbXBpbGUg
PSB0cnVlOwogICAgIH0KLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkQ291
bnQrKzsKKyAgICBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCsrOwogCiAgICAgcmV0dXJuIG5l
ZWRzVG9SZWNvbXBpbGU7CiB9CiAKLWJvb2wgVk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nKCkKK2Jvb2wgVk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3VudCA+IDApOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50ID4gMCk7CiAKICAgICBi
b29sIG5lZWRzVG9SZWNvbXBpbGUgPSBmYWxzZTsKLSAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFbmFibGVkQ291bnQtLTsKLSAgICBpZiAoIW1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGlu
Z0VuYWJsZWRDb3VudCkgewotICAgICAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5yZXNl
dChudWxscHRyKTsKLSAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cucmVzZXQobnVsbHB0cik7Cisg
ICAgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQtLTsKKyAgICBpZiAoIW1fdHlwZVByb2ZpbGVy
RW5hYmxlZENvdW50KSB7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyLnJlc2V0KG51bGxwdHIpOwor
ICAgICAgICBtX3R5cGVQcm9maWxlckxvZy5yZXNldChudWxscHRyKTsKICAgICAgICAgbV90eXBl
TG9jYXRpb25JbmZvLnJlc2V0KG51bGxwdHIpOwogICAgICAgICBuZWVkc1RvUmVjb21waWxlID0g
dHJ1ZTsKICAgICB9CkBAIC05MjksMTMgKzkyOSwxMyBAQCBib29sIFZNOjpkaXNhYmxlSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluCiAgICAgcmV0dXJuIG5lZWRzVG9SZWNvbXBpbGU7CiB9CiAKLXZv
aWQgVk06OmR1bXBIaWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpCit2b2lkIFZNOjpkdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpCiB7Ci0gICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKQorICAgIGlmICghdHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCJWTSBEdW1wIFR5cGVz
Iik7Ci0gICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmdldCgpOworICAgIHR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9n
RW50cmllcyhBU0NJSUxpdGVyYWwoIlZNIER1bXAgVHlwZXMiKSk7CisgICAgVHlwZVByb2ZpbGVy
KiBwcm9maWxlciA9IG1fdHlwZVByb2ZpbGVyLmdldCgpOwogICAgIGZvciAoQmFnPFR5cGVMb2Nh
dGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3R5cGVMb2NhdGlvbkluZm8tPmJlZ2luKCk7ICEhaXRl
cjsgKytpdGVyKSB7CiAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSAqaXRlcjsKICAg
ICAgICAgcHJvZmlsZXItPmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKGxvY2F0aW9uKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKICAgICBj
bGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSGFuZGxlU3RhY2s7Ci0gICAgY2xhc3MgSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOwotICAgIGNsYXNzIEhpZ2hGaWRlbGl0eUxvZzsKKyAgICBjbGFz
cyBUeXBlUHJvZmlsZXI7CisgICAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nOwogICAgIGNsYXNzIElk
ZW50aWZpZXI7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CkBAIC00OTcsMTMgKzQ5NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9i
dWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAotICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjsgfQotICAgICAgICBib29sIGVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKTsKLSAg
ICAgICAgYm9vbCBkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpOwotICAgICAgICBI
aWdoRmlkZWxpdHlMb2cqIGhpZ2hGaWRlbGl0eUxvZygpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5
TG9nLmdldCgpOyB9Ci0gICAgICAgIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciogaGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0
KCk7IH0KKyAgICAgICAgYm9vbCBlbmFibGVUeXBlUHJvZmlsZXIoKTsKKyAgICAgICAgYm9vbCBk
aXNhYmxlVHlwZVByb2ZpbGVyKCk7CisgICAgICAgIFR5cGVQcm9maWxlckxvZyogdHlwZVByb2Zp
bGVyTG9nKCkgeyByZXR1cm4gbV90eXBlUHJvZmlsZXJMb2cuZ2V0KCk7IH0KKyAgICAgICAgVHlw
ZVByb2ZpbGVyKiB0eXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX3R5cGVQcm9maWxlci5nZXQoKTsg
fQogICAgICAgICBUeXBlTG9jYXRpb24qIG5leHRUeXBlTG9jYXRpb24oKTsKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMoKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wVHlwZVByb2ZpbGVyRGF0YSgpOwogICAg
ICAgICBHbG9iYWxWYXJpYWJsZUlEIGdldE5leHRVbmlxdWVWYXJpYWJsZUlEKCkgeyByZXR1cm4g
bV9uZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9CiAKICAgICBwcml2YXRlOgpAQCAtNTU0LDEwICs1
NTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJs
ZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tG
cmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
YXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcjsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4gbV9o
aWdoRmlkZWxpdHlMb2c7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlUHJvZmlsZXI+IG1f
dHlwZVByb2ZpbGVyOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZVByb2ZpbGVyTG9nPiBt
X3R5cGVQcm9maWxlckxvZzsKICAgICAgICAgR2xvYmFsVmFyaWFibGVJRCBtX25leHRVbmlxdWVW
YXJpYWJsZUlEOwotICAgICAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdF
bmFibGVkQ291bnQ7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50
OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFnPFR5cGVMb2NhdGlvbj4+IG1fdHlwZUxvY2F0
aW9uSW5mbzsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE3Mjc5MSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wOC0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyB2YXJp
YWJsZXMgZm9yIG1vcmUgY2xhcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlIGEgcmVmZXJlbmNlIGluIGEgY29tbWVudCB0byBhIEphdmFT
Y3JpcHRDb3JlIGZpbGUgdG8gaXRzIAorICAgICAgICBuZXdseSByZW5hbWVkIHZhcmlhbnQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzOgorCiAy
MDE0LTA4LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEludHJvZHVjZSBhbiBpbnNwZWN0b3IgQWJzdHJhY3QgU3ludGF4IFRyZWUu
CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0
U3ludGF4VHJlZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwkocmV2aXNpb24gMTcyNzkwKQorKysg
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRy
ZWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUgPSBmdW5jdGlvbgogICAgIH0KIH07CiAKLS8vIFRoaXMgc2hvdWxkIGJlIGtl
cHQgaW4gc3luYyB3aXRoIGFuIGVudW0gaW4gSmF2YVNjaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oCisvLyBUaGlzIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBh
biBlbnVtIGluIEphdmFTY2lwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuaAogV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciA9IHsKICAg
ICBOb3JtYWxFeHByZXNzaW9uOiAxLAogICAgIEZ1bmN0aW9uUmV0dXJuOiAyCg==
</data>
<flag name="review"
          id="261526"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="261527"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236903</attachid>
            <date>2014-08-20 17:23:07 -0700</date>
            <delta_ts>2014-08-20 18:03:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>167928</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBA
QAorMjAxNC0wOC0yMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyB2YXJpYWJsZXMgZm9yIG1vcmUgY2xh
cml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFu
eSBuYW1lcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0eXBlIHByb2ZpbGluZyBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICBwcmVmaXggdGhlbXNlbHZlcyB3aXRoICJIaWdoRmlkZWxpdHkiIG9yIGluY2x1
ZGUgdGhlIHdvcmRzICJoaWdoIgorICAgICAgICBhbmQvb3IgImZpZGVsaXR5IiBpbiBzb21lIHdh
eS4gQnV0IHRoZSB3b3JkcyAiaGlnaCIgYW5kICJmaWRlbGl0eSIgZG9uJ3QgCisgICAgICAgIGFk
ZCBhbnl0aGluZyBkZXNjcmlwdGl2ZSB0byB0aGUgbmFtZXMgc3Vycm91bmRpbmcgdHlwZSBwcm9m
aWxpbmcuIAorICAgICAgICBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgYWxsIHVzZXMgb2YgIkhpZ2hG
aWRlbGl0eSIgYW5kIGl0cyB2YXJpYW50cy4KKworICAgICAgICBNb3N0IHJlbmFtaW5ncyBjaGFu
Z2UgIkhpZ2hGaWRlbGl0eSoiIHRvICJUeXBlUHJvZmlsZXIqIiBvciBzaW1wbHkgCisgICAgICAg
IGRyb3AgdGhlIHByZWZpeCAiSGlnaEZpZGVsaXR5IiBhbGwgdG9nZXRoZXIuIE5vdywgYWxtb3N0
IGFsbCBuYW1lcyAKKyAgICAgICAgaW4gcmVsYXRpb24gdG8gdHlwZSBwcm9maWxpbmcgY29udGFp
biBpbiB0aGVtICJUeXBlUHJvZmlsZXIiIG9yIAorICAgICAgICAiVHlwZVByb2ZpbGluZyIgb3Ig
c29tZSBjb21iaW5hdGlvbiBvZiB0aGUgd29yZHMgInR5cGUiIGFuZCAicHJvZmlsZSIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IHdlIGNoZWNrIGlmIHR5cGUgcHJvZmls
aW5nIGlzIGVuYWJsZWQ6CisgICAgICAgIFdlIG5vIGxvbmdlciBjYWxsIHZtOjppc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eS4gV2Ugbm93IGp1c3QgCisgICAgICAgIGNoZWNrIHRoYXQg
dm06OnR5cGVQcm9maWxlciBpcyBub3QgbnVsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
Y2hhbmdlcyBhbGwgY2FsbHMgdG8gVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcwor
ICAgICAgICB0byB1c2UgQVNDSUlMaXRlcmFsIHRvIGZvcm0gV1RGU3RyaW5ncyBpbnN0ZWFkIG9m
IHZhbmlsbGEgQyBzdHJpbmcgbGl0ZXJhbHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6dHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRUeXBlUHJvZmlsZXJF
eHByZXNzaW9uSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVFeHByZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE1vdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQ
b3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6UHJlZml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2Rl
OjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2ln
bkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVt
aXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6RW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9m
ZnNldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5
cGVQcm9maWxpbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGVUeXBlUHJvZmlsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFR5cGVQcm9maWxlckVuYWJs
ZWRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5h
YmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnNldEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2Zp
bGVfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdFbmRPZmZzZXQpOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hG
aWRlbGl0eUxvZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlM
b2cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBh
cmVGb3JUeXBlUHJvZmlsaW5nKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlE
Rm9yVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlcjo6bG9nVHlwZXNGb3JUeXBlTG9jYXRpb24pOgorICAgICAgICAoSlND
OjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6VHlwZVBy
b2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IpOgorICAgICAg
ICAoSlNDOjpkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OlR5
cGVQcm9maWxlcjo6ZmluZExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UXVlcnlLZXk6OlF1ZXJ5S2V5KToKKyAgICAgICAg
KEpTQzo6UXVlcnlLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
UXVlcnlLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6aGFzaCk6Cisg
ICAgICAgIChKU0M6OlF1ZXJ5S2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlF1ZXJ5S2V5
SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6OmZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUxvY2F0aW9uQ2Fj
aGUpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6CisgICAgICAgIChKU0M6
OlR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQ
cm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OkxvZ0Vu
dHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6
TG9nRW50cnk6OnZhbHVlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpM
b2dFbnRyeTo6bG9jYXRpb25PZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6
OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cmVjb3Jk
VHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJM
b2c6OmxvZ0VuZFB0cik6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6bG9nU3RhcnRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmN1cnJlbnRMb2dFbnRyeU9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpW
TTo6ZGlzYWJsZVR5cGVQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpkdW1wVHlwZVByb2Zp
bGVyRGF0YSk6CisgICAgICAgIChKU0M6OlZNOjplbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmR1bXBIaWdoRmlkZWxpdHlQ
cm9maWxpbmdUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAg
ICAoSlNDOjpWTTo6dHlwZVByb2ZpbGVyTG9nKToKKyAgICAgICAgKEpTQzo6Vk06OnR5cGVQcm9m
aWxlcik6CisgICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKTogRGVsZXRlZC4K
KwogMjAxNC0wOC0yMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFN0b3AgaW1wbGljaXRseSBza2lwcGluZyBhIGZ1bmN0aW9uJ3Mgb3duIGFjdGl2YXRpb24gd2hl
biB3YWxraW5nIHRoZSBzY29wZSBjaGFpbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MTYsOCArNDE2LDYgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAotICAgIHJ1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAotICAgIHJ1bnRpbWUvSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAg
ICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCkBAIC01MjUsNiArNTIzLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNw
cAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCisgICAgcnVudGltZS9UeXBlUHJv
ZmlsZXIuY3BwCisgICAgcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCiAgICAgcnVudGltZS9U
eXBlU2V0LmNwcAogICAgIHJ1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiAgICAgcnVu
dGltZS9UeXBlZEFycmF5VHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkhhcwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVz
Rm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBleGVjLT52bSgpLmR1bXBI
aWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpOworICAgIGV4ZWMtPnZtKCkuZHVtcFR5cGVQcm9m
aWxlckRhdGEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9u
IDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw4ICs2ODksNiBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlv
blByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
dHRlclNldHRlci5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEhp
Z2hGaWRlbGl0eUxvZy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmNwcCIgLz4KQEAgLTc5OSw2ICs3OTcsOCBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlZEFycmF5Q29udHJvbGxl
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlU
eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBl
UHJvZmlsZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBl
UHJvZmlsZXJMb2cuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxU
eXBlU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5U2NvcGUuY3Bw
IiAvPgpAQCAtMTQyNSw4ICsxNDI1LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEhpZ2hGaWRlbGl0eUxvZy5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmllci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ0hlYWRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ0hlYWRlcklubGluZXMuaCIg
Lz4KQEAgLTE1ODQsNiArMTU4Miw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFR5cGVkQXJyYXlJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFR5cGVkQXJyYXlUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFR5cGVMb2NhdGlvbkNhY2hlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFR5cGVQcm9maWxlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxUeXBlUHJvZmlsZXJMb2cuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVHlwZVNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxUeXBlZEFycmF5cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxV
aW50MTZBcnJheS5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsMTIgKzYxMiw2IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEhpZ2hGaWRlbGl0eUxvZy5jcHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXElkZW50aWZpZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtODU1LDYgKzg0OSwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxUeXBlTG9jYXRpb25DYWNoZS5jcHAiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFR5cGVQcm9maWxlci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFR5cGVQcm9maWxlckxvZy5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5
cGVTZXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgpAQCAtMjU1OCwxMiArMjU1OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEdldHRlclNldHRlci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxIaWdo
RmlkZWxpdHlMb2cuaCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmgiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIu
aCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAg
LTI4MzQsNiArMjgyOCwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxU
eXBlTG9jYXRpb25DYWNoZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlUHJv
ZmlsZXIuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZVByb2ZpbGVyTG9nLmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVTZXQuaCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDEwICsyMjgsOCBAQAogCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlz
U3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovOyB9OwogCQkw
RjJENERFOTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNjE5ODMyREFDMDA3RDRCMTkg
LyogVG9UaGlzU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyRDRERUExOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTcxOTgz
MkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMkQ0REVCMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdo
RmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi87
IH07Ci0JCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REUwMTk4MzJE
OTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjJENERFRDE5ODMyREM0MDA3RDRCMTkgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkQ0REUxMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuY3BwICovOyB9OwotCQkwRjJENERFRTE5ODMyREM0MDA3RDRCMTkgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENERFMjE5ODMyRDkxMDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyRDRERUIxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERERjE5ODMy
RDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLzsgfTsKKwkJMEYyRDRERUMxOTgz
MkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMkQ0REVGMTk4MzJERDMwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REUzMTk4MzJEOTEwMDdE
NEIxOSAvKiBUeXBlU2V0LmNwcCAqLzsgfTsKIAkJMEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5IC8q
IFR5cGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0RkQy
IC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1OTg3RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBVbnVzZWRQb2ludGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg2Nyw2ICs4
NjUsOCBAQAogCQk1MkIzMTBGRDE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
ICovOyB9OwogCQk1MkIzMTBGRjE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMzEw
RkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCAqLzsgfTsKIAkJNTJC
MzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1
N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MkM5NTJCNzE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2Zp
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkM5
NTJCNjE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJDOTUyQjkxOUEyOEExQzAwNjlCMzg2
IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkM5NTJCODE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAq
LzsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYw
QTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTJFQTcw
QzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FF
M0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQw
MEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwpA
QCAtMjEzMSwxMCArMjEzMSw4IEBACiAJCTBGMkJEQzUwMTUyMjhGRkEwMENEODkxMCAvKiBERkdW
YXJpYWJsZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1ZhcmlhYmxlRXZlbnQuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVi
dWdnZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1
Z2dlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREMxOTgz
MkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpZ2hGaWRlbGl0eUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGlnaEZpZGVsaXR5TG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGMkQ0REUxMTk4MzJEOTEwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTIxOTgzMkQ5MTAwN0Q0QjE5IC8qIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRDREREYxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJv
ZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENERFMDE5ODMy
RDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVQcm9m
aWxlckxvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFMzE5ODMyRDkx
MDA3RDRCMTkgLyogVHlwZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8q
IFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzQwLDYgKzI3MzgsOCBAQAogCQk1MkIzMTBG
QzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25D
YWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjMxMTAwMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBl
TG9jYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkM5NTJCNjE5QTI4OTg1MDA2OUIzODYgLyogVHlw
ZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVQcm9maWxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MkM5NTJCODE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1NDA3NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGlt
ZVRvTExWTUlSLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBp
bGVSdW50aW1lVG9MTFZNSVIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1NDA3QUM4MThEQTU4QUQwMEVGRjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFDNTQ2
QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQkJCUJD
RDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJQTcwNDQ3
RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJCQlBNzA0NDdFQzE3
QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQkyQUQyRURGQTE5Nzk5RTM4
MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAw
NzY5MThBIC8qIEVycm9yLmNwcCAqLywKIAkJCQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyog
RXJyb3IuaCAqLywKIAkJCQlCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgKi8sCkBAIC00NDIxLDE4ICs0NDIyLDE0IEBACiAJCQkJQkMyNjgwQzEwRTE2RDRF
OTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQkwRkI0QjUyMTE2QjYy
NzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgKi8sCiAJCQkJMEZCNEI1
MjIxNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCAqLywKLQkJCQk1
MkIzMTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi8s
CiAJCQkJNTJCMzEwRkMxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5jcHAgKi8sCisJCQkJNTJCMzEwRkExOTc0QUU2MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZS5oICovLAogCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0
aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJMEYyQjY2QjIxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVy
aWNUeXBlZEFycmF5Vmlldy5oICovLAogCQkJCTBGMkI2NkIzMTdCNkI1QUIwMEE3QUUzRiAvKiBH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggKi8sCiAJCQkJQkMwMkU5QjgwRTE4NDU0NTAw
MEY5Mjk3IC8qIEdldHRlclNldHRlci5jcHAgKi8sCiAJCQkJQkMzMzdCREUwRTFBRjBCODAwNzY5
MThBIC8qIEdldHRlclNldHRlci5oICovLAotCQkJCTBGMkQ0RERGMTk4MzJEOTEwMDdENEIxOSAv
KiBIaWdoRmlkZWxpdHlMb2cuY3BwICovLAotCQkJCTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAv
KiBIaWdoRmlkZWxpdHlMb2cuaCAqLywKLQkJCQkwRjJENERFMTE5ODMyRDkxMDA3RDRCMTkgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLywKLQkJCQkwRjJENERFMjE5ODMyRDkxMDA3
RDRCMTkgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8sCiAJCQkJOTMzQTM0OUQwMzhB
RTgwRjAwODYzNUNFIC8qIElkZW50aWZpZXIuY3BwICovLAogCQkJCTkzM0EzNDlBMDM4QUU3QzYw
MDg2MzVDRSAvKiBJZGVudGlmaWVyLmggKi8sCiAJCQkJODYwNkRERTkxOERBNDRBQjAwQTM4M0Qw
IC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8sCkBAIC00NDQyLDkgKzQ0MzksOSBAQAogCQkJCTBG
QjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCAqLywKIAkJCQlFMTc4NjM2
QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8sCiAJCQkJRTE3
ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAqLywKKwkJCQlB
N0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkMx
N0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyRDE3QURCNUYz
MDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovLAotCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3
NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlBNzg4NTNGNzE3OTcyNjI5MDAxNDQwRTQgLyogSW50
ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8sCiAJCQkJQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0
IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLywKIAkJCQlCQzlCQjk1QjBFMTk2ODA2MDBE
Rjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8sCkBAIC00NTAzLDkgKzQ1MDAsOSBAQAog
CQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oICovLAorCQkJCTBGMkI2NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0lu
dDhBcnJheS5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJy
YXkuaCAqLywKIAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5Lmgg
Ki8sCi0JCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggKi8sCiAJ
CQkJNjVFQTRDOTkwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5jcHAgKi8sCiAJCQkJNjVFQTRD
OUEwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5oICovLAogCQkJCUE3MDA4NzNGMTdDQkU4RUIw
MEMzRTY0MyAvKiBKU01hcC5jcHAgKi8sCkBAIC00NTMyLDYgKzQ1MjksOCBAQAogCQkJCTdDMTg0
RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCAqLywKIAkJCQk3QzAw
OENEQzE4NzEyNThEMDA5NTVDMjQgLyogSlNQcm9taXNlUmVhY3Rpb24uY3BwICovLAogCQkJCTdD
MDA4Q0REMTg3MTI1OEQwMDk1NUMyNCAvKiBKU1Byb21pc2VSZWFjdGlvbi5oICovLAorCQkJCTJB
MDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICov
LAorCQkJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCAqLywKIAkJCQk4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgKi8s
CiAJCQkJODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAqLywKIAkJCQkxNDg3
NEFFMTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgKi8sCkBAIC00NTU3LDEwICs0NTU2
LDEwIEBACiAJCQkJMEYyQjY2RDAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuY3Bw
ICovLAogCQkJCTBGMkI2NkQxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggKi8s
CiAJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAqLywKLQkJCQkw
RjJCNjZENDE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oICovLAotCQkJCTBGMkI2
NkQ1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8sCiAJCQkJMEYyQjY2RDIx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhBcnJheS5oICovLAogCQkJCTBGMkI2NkQzMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCisJCQkJMEYyQjY2RDQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAqLywKKwkJCQkwRjJCNjZENTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oICovLAogCQkJCUJDMjJBMzlBMEUxNkUxNDgwMEFG
MjFDOCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCAqLywKIAkJCQkxNEYyNTI1NjBEMDhERDhEMDA0
RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5oICovLAogCQkJCUE3Q0EzQUUxMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovLApAQCAtNDcwMiwxNSArNDcwMSwxOSBAQAogCQkJCTBG
MkI2NkRCMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5cy5oICovLAogCQkJCTBGMkI2NkRD
MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgKi8sCiAJCQkJMEYyQjY2REQx
N0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmggKi8sCi0JCQkJNTJCMzExMDAxOTc1
QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi8sCiAJCQkJNTJCMzEwRkUxOTc1
QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCAqLywKKwkJCQk1MkIzMTEwMDE5
NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLywKKwkJCQk1MkM5NTJCODE5
QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLywKKwkJCQk1MkM5NTJCNjE5QTI4
OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggKi8sCisJCQkJMEYyRDREREYxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8sCisJCQkJMEYyRDRERTAxOTgzMkQ5MTAw
N0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdE
NEIxOSAvKiBUeXBlU2V0LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyog
VHlwZVNldC5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5
LmggKi8sCisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5
LmggKi8sCiAJCQkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8s
CiAJCQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICov
LAogCQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovLAotCQkJ
CUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8sCi0JCQkJQTdBOEFG
MzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJRTE4RTNB
NTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLywKIAkJCQlFMThFM0E1NjBERjkyNzhDMDBE
OTBCMzQgLyogVk0uaCAqLywKIAkJCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRy
eVNjb3BlLmNwcCAqLywKQEAgLTQ3MjgsOSArNDczMSw2IEBACiAJCQkJMTQyMEJFN0ExMEFBNkRE
QjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCAqLywKLQkJCQkyQTA1QUJEMzE5NjFERjI0MDAzNDE3NTAg
LyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCAqLywKLQkJCQkyQTA1QUJENDE5NjFERjI0
MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggKi8sCi0JCQkJMkFEMkVERkEx
OTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTYwNzUsNyArNjA3NSw3
IEBACiAJCQkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjgzMTkwMjE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAv
KiBIaWdoRmlkZWxpdHlMb2cuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkQ0REVDMTk4MzJEQzQw
MDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTM2
MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUz
MTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTYxMTYsNyArNjExNiw2IEBACiAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIElu
c3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2
OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MzI0MzhBMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hl
cnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkQ0REVFMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDZEREVBMThEQTQ0
QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUz
MjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTYzOTEsNiArNjM5MCw3IEBACiAJCQkJNTJCMzEx
MDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE5MENBRDE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmls
ZXJKZXR0aXNvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJDOTUyQjcxOUEyODk4NTAw
NjlCMzg2IC8qIFR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkYxNjZB
RDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3
MjlDMDE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCMTA1OEMxNjc1NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03MTA0LDkgKzcxMDQsOSBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
Ci0JCQkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTlFQTVDN0EyMTkwRjA4ODcwMDUwOEVCRSAvKiBJbml0aWFsaXpl
TExWTU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUg
LyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUyQjMxMEZGMTk3NUI0MjQwMDgw
ODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RTcyOTQw
ODE5MEYwMjFFMDAxQTkxQjUgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5RTcyOTQwNzE5MEYwMUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9w
Y29kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcxODUsNyArNzE4NSw2IEBACiAJCQkJMEY0ODUz
MjExODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjJENERERDE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTBGMkQ0REVEMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0EwQkM3NDAw
RUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFn
YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczMDgsNyArNzMwNyw3IEBACiAJCQkJ
QTdCNDhGNDkwRUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZEQjY0NjQwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjJE
NERFQjE5ODMyREM0MDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMkQ0REVCMTk4MzJEQzQwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYwMzMyQzAxOEFERkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBF
eGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMg
LyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0Miw2ICs3NjQxLDcg
QEAKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FF
M0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJDOTUyQjkxOUEy
OEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0
Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0
Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGNDI3NDMxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9pbnB1dC5jIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV93aWxsX2NhbGwiLCAibGVuZ3Ro
IiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfZGlkX2NhbGwiLCAi
bGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgi
IDogMiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hp
Z2hfZmlkZWxpdHkiLCAibGVuZ3RoIiA6IDYgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Byb2ZpbGVfdHlwZSIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSIsICJsZW5ndGgi
IDogNSB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgJKHJldmlzaW9uIDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX3RlYXJfb2Zm
X2FjdGl2YXRpb246CiAgICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDoKICAgICBjYXNlIG9w
X3Byb2ZpbGVfZGlkX2NhbGw6Ci0gICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eToKKyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Rocm93Ogog
ICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgpAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBj
YXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OgogICAg
IGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHk6CisgICAgY2FzZSBvcF9wcm9maWxlX3R5cGU6CiAgICAgY2FzZSBv
cF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5n
dGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9O
KExMSU5UX0hFTFBFUl9PUENPREVTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNiBAQAogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpAQCAtNDksNyArNDgsNiBAQAogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50
RW50cnlwb2ludC5oIgotI2luY2x1ZGUgIlR5cGVMb2NhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJQb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmgiCkBAIC02MCw2ICs1OCw4IEBACiAjaW5jbHVkZSAi
UmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0YWNrVmlzaXRvci5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbkNhY2hlLmgiCisjaW5j
bHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bS5oIgogI2luY2x1ZGUgPHd0Zi9CYWdUb0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CkBAIC04MzksMTEgKzgzOSwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6IHsKKyAgICAg
ICAgY2FzZSBvcF9wcm9maWxlX3R5cGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgICsraXQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9m
aWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIpOworICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3BfcHJvZmlsZV90eXBlIik7CiAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNzE0LDkgKzE3MTQsOSBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgYm9vbCBkaWRDbG9uZVN5bWJvbFRh
YmxlID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IHVu
bGlua2VkQ29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpKSB7Ci0gICAgICAgIGlmIChtX3ZtLT5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGlmIChtX3ZtLT50eXBl
UHJvZmlsZXIoKSkgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUtPm1fbG9jayk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvckhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmcobG9ja2VyKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIHN5bWJvbFRhYmxlLT5jYXB0dXJlQ291
bnQoKSkgewpAQCAtMTcyOSw4ICsxNzI5LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgc2V0TnVtUGFyYW1ldGVy
cyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIAotICAgIGlmICh2bSgpLT5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICB2bSgpLT5oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPnJlbW92ZVVu
ZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgbV9vd25lckV4ZWN1
dGFibGUtPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpLCBtX293bmVyRXhl
Y3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICBpZiAo
dm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigpLT5mdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVj
dXRhYmxlLT5zb3VyY2VJRCgpLCBtX293bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KCksIG1fb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwog
CiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgp
KQpAQCAtMTczOCw4ICsxNzM4LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIG1fZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhl
Y3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7Ci0gICAgICAgIGlm
ICh2bSgpLT5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAg
dm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCks
IHVubGlua2VkRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
KCksIHVubGlua2VkRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCgpKTsKKyAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0o
KS0+dHlwZVByb2ZpbGVyKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5l
ID0gb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKSArIHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RM
aW5lT2Zmc2V0KCk7CiAgICAgICAgIGJvb2wgc3RhcnRDb2x1bW5Jc09uT3duZXJTdGFydExpbmUg
PSAhdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKQEAgLTE3NTYsOCArMTc1
Niw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBtX2Z1
bmN0aW9uRXhwcnMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25FeHBycygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRXhwcnMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtl
ZENvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGkpOwotICAgICAgICBpZiAodm0oKS0+aXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgIHZtKCktPmhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcigpLT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVj
dXRlZFJhbmdlKG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpLCB1bmxpbmtlZEV4ZWN1
dGFibGUtPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CisgICAgICAgIGlm
ICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1fb3du
ZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxp
bmdTdGFydE9mZnNldCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQoKSk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+
bGluZUNvdW50KCk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IG93bmVyRXhlY3V0YWJs
ZS0+bGluZU5vKCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpOwogICAg
ICAgICBib29sIHN0YXJ0Q29sdW1uSXNPbk93bmVyU3RhcnRMaW5lID0gIXVubGlua2VkRXhlY3V0
YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7CkBAIC0xOTkyLDIzICsxOTkyLDIzIEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0
eTogewotICAgICAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBv
cF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSByZWdUb1Byb2ZpbGUsIFR5cGVMb2Nh
dGlvbiosIGZsYWcsIGlkZW50aWZpZXI/LCByZXNvbHZlVHlwZT8KKyAgICAgICAgY2FzZSBvcF9w
cm9maWxlX3R5cGU6IHsKKyAgICAgICAgICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVj
dGlvbiBpczogb3BfcHJvZmlsZV90eXBlIHJlZ1RvUHJvZmlsZSwgVHlwZUxvY2F0aW9uKiwgZmxh
ZywgaWRlbnRpZmllcj8sIHJlc29sdmVUeXBlPwogICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0
aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKICAgICAgICAgICAgIHVuc2lnbmVkIGRpdm90
U3RhcnQsIGRpdm90RW5kOwogICAgICAgICAgICAgR2xvYmFsVmFyaWFibGVJRCBnbG9iYWxWYXJp
YWJsZUlEOwogICAgICAgICAgICAgUmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5cGVTZXQ7Ci0gICAg
ICAgICAgICBib29sIHNob3VsZEFuYWx5emUgPSBtX3VubGlua2VkQ29kZS0+aGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zm
c2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgICAgICBib29sIHNob3VsZEFuYWx5
emUgPSBtX3VubGlua2VkQ29kZS0+dHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29k
ZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHByb2ZpbGVSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpOwot
ICAgICAgICAgICAgUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZyBmbGFn
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZz4o
cGNbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnIGZs
YWcgPSBzdGF0aWNfY2FzdDxQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZz4ocGNbM10udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG51bGxwdHI7CiAKICAg
ICAgICAgICAgIHN3aXRjaCAoZmxhZykgewotICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNC
eXRlY29kZVB1dFRvU2NvcGU6Ci0gICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
R2V0RnJvbVNjb3BlOiB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVQdXRU
b1Njb3BlOgorICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbVNjb3Bl
OiB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVy
KHBjWzRdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgUmVzb2x2ZVR5cGUgdHlwZSA9IHN0
YXRpY19jYXN0PFJlc29sdmVUeXBlPihwY1s1XS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgICAg
IFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBuZWVkc0FjdGl2YXRpb24oKSwgc2NvcGUsIGlkZW50LCAoZmxhZyA9PSBQ
cm9maWxlVHlwZXNCeXRlY29kZUdldEZyb21TY29wZSA/IEdldCA6IFB1dCksIHR5cGUpOworICAg
ICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBuZWVkc0FjdGl2YXRpb24oKSwgc2NvcGUsIGlkZW50
LCAoZmxhZyA9PSBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbVNjb3BlID8gR2V0IDogUHV0KSwg
dHlwZSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG90aGVyIHZhbHVlcyBm
b3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3aGF0IHRvIGRvIHdoZW4gd2UgY2Fu
J3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElECiAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE4NApAQCAtMjAyMCwy
OSArMjAyMCwyOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAg
ICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2Zp
bGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGlu
ZyB5ZXQuCi0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9ySGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBzeW1ib2xU
YWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKICAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxv
Y2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5
cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRl
bnQuaW1wbCgpLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzOwor
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gVHlwZVByb2ZpbGVyTm9HbG9i
YWxJREV4aXN0czsKIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0dsb2JhbElEOiB7CisgICAgICAg
ICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVIYXNHbG9iYWxJRDogewogICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJsZS5nZXQoKTsKICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAg
ICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yUmVnaXN0
ZXIobG9ja2VyLCBwcm9maWxlUmVnaXN0ZXIub2Zmc2V0KCksICp2bSgpKTsKICAgICAgICAgICAg
ICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rl
cihsb2NrZXIsIHByb2ZpbGVSZWdpc3Rlci5vZmZzZXQoKSwgKnZtKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNC
eXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQ6IAotICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlw
ZXNCeXRlY29kZUZ1bmN0aW9uQXJndW1lbnQ6IHsKLSAgICAgICAgICAgICAgICBnbG9iYWxWYXJp
YWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0czsKKyAgICAgICAgICAgIGNhc2Ug
UHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQ6IAorICAgICAgICAgICAgY2Fz
ZSBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudDogeworICAgICAgICAgICAgICAg
IGdsb2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBQcm9maWxl
VHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50OiB7CisgICAgICAgICAgICBjYXNl
IFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudDogewogICAgICAgICAg
ICAgICAgIGdsb2JhbFR5cGVTZXQgPSByZXR1cm5TdGF0ZW1lbnRUeXBlU2V0KCk7Ci0gICAgICAg
ICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eVJldHVyblN0YXRlbWVudDsK
KyAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gVHlwZVByb2ZpbGVyUmV0dXJuU3Rh
dGVtZW50OwogICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQW5hbHl6ZSkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBCZWNhdXNlIHNvbWUgcmV0dXJuIHN0YXRlbWVudHMgYXJlIGFkZGVkIGlt
cGxpY2l0bHkgKHRvIHJldHVybiB1bmRlZmluZWQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uKSwg
YW5kIHRoZXNlIG5vZGVzIGRvbid0IGVtaXQgZXhwcmVzc2lvbiByYW5nZXMsIGdpdmUgdGhlbSBz
b21lIHJhbmdlLgogICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHRoaXMgZGl2b3Qg
aXMgb24gdGhlIG9wZW4gYnJhY2Ugb2YgdGhlIGZ1bmN0aW9uLiAKQEAgLTIwNTMsMTYgKzIwNTMs
MTYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdGQ6OnBhaXI8VHlwZUxvY2F0aW9u
KiwgYm9vbD4gbG9jYXRpb25QYWlyID0gdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCkt
PnR5cGVMb2NhdGlvbkNhY2hlKCktPmdldFR5cGVMb2NhdGlvbihnbG9iYWxWYXJpYWJsZUlELAor
ICAgICAgICAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGxvY2F0aW9uUGFpciA9
IHZtKCktPnR5cGVQcm9maWxlcigpLT50eXBlTG9jYXRpb25DYWNoZSgpLT5nZXRUeXBlTG9jYXRp
b24oZ2xvYmFsVmFyaWFibGVJRCwKICAgICAgICAgICAgICAgICBtX293bmVyRXhlY3V0YWJsZS0+
c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGdsb2JhbFR5cGVTZXQsIHZtKCkpOwog
ICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGxvY2F0aW9uUGFpci5maXJzdDsK
ICAgICAgICAgICAgIGJvb2wgaXNOZXdMb2NhdGlvbiA9IGxvY2F0aW9uUGFpci5zZWNvbmQ7CiAK
LSAgICAgICAgICAgIGlmIChQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVt
ZW50KQorICAgICAgICAgICAgaWYgKFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0
YXRlbWVudCkKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9kaXZvdEZvckZ1bmN0aW9uT2Zm
c2V0SWZSZXR1cm5TdGF0ZW1lbnQgPSBtX3NvdXJjZU9mZnNldDsKIAogICAgICAgICAgICAgaWYg
KHNob3VsZEFuYWx5emUgJiYgaXNOZXdMb2NhdGlvbikKLSAgICAgICAgICAgICAgICB2bSgpLT5o
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9jYXRpb24obG9jYXRpb24pOwor
ICAgICAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdMb2NhdGlvbihs
b2NhdGlvbik7CiAKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5sb2NhdGlvbiA9
IGxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBIaWdoRmlkZWxp
dHlHbG9iYWxJREZsYWdzIHsKLSAgICBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlv
biA9IC0xLAotICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMgPSAtMiwKLSAgICBIaWdo
RmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPSAtMworZW51bSBUeXBlUHJvZmlsZXJHbG9iYWxJREZs
YWdzIHsKKyAgICBUeXBlUHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAorICAg
IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHMgPSAtMiwKKyAgICBUeXBlUHJvZmlsZXJSZXR1
cm5TdGF0ZW1lbnQgPSAtMwogfTsKIAogdHlwZWRlZiBpbnRwdHJfdCBHbG9iYWxWYXJpYWJsZUlE
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4
ICs5OSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAs
IG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uKG1fbGluZUNvdW50ID8gbm9kZS0+ZW5kQ29sdW1uKCkg
OiBub2RlLT5lbmRDb2x1bW4oKSAtIG5vZGUtPnN0YXJ0Q29sdW1uKCkpCiAgICAgLCBtX3N0YXJ0
T2Zmc2V0KG5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkgLSBzb3VyY2Uuc3RhcnRPZmZzZXQo
KSkKICAgICAsIG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpKQotICAgICwg
bV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25OYW1l
U3RhcnQoKSkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2Rl
LT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCisgICAg
LCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbk5hbWVTdGFydCgpKQor
ICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSAr
IG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAsIG1fZmVhdHVyZXMobm9kZS0+ZmVh
dHVyZXMoKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQogewpA
QCAtNDAyLDExICs0MDIsMTEgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkRXhwcmVzc2lv
bkluZgogICAgIG1fZXhwcmVzc2lvbkluZm8uYXBwZW5kKGluZm8pOwogfQogCi1ib29sIFVubGlu
a2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90
LCB1bnNpZ25lZCYgZW5kRGl2b3QpCitib29sIFVubGlua2VkQ29kZUJsb2NrOjp0eXBlUHJvZmls
ZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCB1bnNpZ25lZCYgc3RhcnREaXZvdCwgdW5zaWduZWQmIGVuZERpdm90KQogewogICAgIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLSAgICBhdXRvIGl0ZXIgPSBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlSW5mb01hcC5maW5kKGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICBpZiAoaXRl
ciA9PSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01hcC5lbmQoKSkgeworICAgIGF1dG8g
aXRlciA9IG1fdHlwZVByb2ZpbGVySW5mb01hcC5maW5kKGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBp
ZiAoaXRlciA9PSBtX3R5cGVQcm9maWxlckluZm9NYXAuZW5kKCkpIHsKICAgICAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nRigiRG9uJ3QgaGF2ZSBhc3NpZ25tZW50IGluZm8g
Zm9yIG9mZnNldDoldVxuIiwgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBzdGFydERpdm90ID0g
VUlOVF9NQVg7CkBAIC00MTQsMTggKzQxNCwxOCBAQCBib29sIFVubGlua2VkQ29kZUJsb2NrOjpo
aWdoRmlkZWxpdHlUeXBlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFuZ2UmIHJhbmdlID0gaXRlci0+dmFs
dWU7CisgICAgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlJiByYW5nZSA9IGl0ZXItPnZhbHVl
OwogICAgIHN0YXJ0RGl2b3QgPSByYW5nZS5tX3N0YXJ0RGl2b3Q7CiAgICAgZW5kRGl2b3QgPSBy
YW5nZS5tX2VuZERpdm90OwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFVubGlua2VkQ29k
ZUJsb2NrOjphZGRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvKHVuc2lnbmVk
IGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25lZCBlbmREaXZv
dCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZv
KHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25l
ZCBlbmREaXZvdCkKIHsKLSAgICBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25SYW5n
ZSByYW5nZTsKKyAgICBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgcmFuZ2U7CiAgICAgcmFu
Z2UubV9zdGFydERpdm90ID0gc3RhcnREaXZvdDsKICAgICByYW5nZS5tX2VuZERpdm90ID0gZW5k
RGl2b3Q7Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXAuc2V0KGluc3RydWN0
aW9uT2Zmc2V0LCByYW5nZSk7ICAKKyAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc3Ry
dWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKIH0KIAogdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSw4IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkQm9keUVuZENvbHVtbjsgfQogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQogICAgIHVuc2lnbmVkIHNvdXJjZUxl
bmd0aCgpIHsgcmV0dXJuIG1fc291cmNlTGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgaGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCBoaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRW5kT2Zmc2V0OyB9CisgICAgdW5zaWduZWQgdHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7IH0KKyAgICB1
bnNpZ25lZCB0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0OyB9CiAKICAgICBTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdDsKIApA
QCAtMTg3LDggKzE4Nyw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91bmxpbmtlZEJvZHlF
bmRDb2x1bW47CiAgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3Nv
dXJjZUxlbmd0aDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQ7CisgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CisgICAgdW5zaWdu
ZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogCiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVy
ZXM7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeHByZXNzaW9u
SW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRpdm90LAogICAgICAgICBpbnQg
c3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVt
bik7CiAKLSAgICB2b2lkIGFkZEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm8o
dW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIHVuc2lnbmVkIHN0YXJ0RGl2b3QsIHVuc2lnbmVk
IGVuZERpdm90KTsKKyAgICB2b2lkIGFkZFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKHVuc2ln
bmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25lZCBlbmRE
aXZvdCk7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNz
aW9uSW5mby5zaXplKCk7IH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBpbnQmIGRpdm90LAogICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCi0gICAgYm9vbCBoaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpOwor
ICAgIGJvb2wgdHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0RGl2b3QsIHVuc2lnbmVkJiBlbmRE
aXZvdCk7CiAKICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9v
bCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsaW5l
Q291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7CkBAIC01ODMsMTEgKzU4MywxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIE93blB0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YTsKICAgICBW
ZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9leHByZXNzaW9uSW5mbzsKLSAgICBzdHJ1Y3Qg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uUmFuZ2UgeworICAgIHN0cnVjdCBUeXBl
UHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0RGl2b3Q7
CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAgICAgfTsKLSAgICBIYXNoTWFwPHVuc2ln
bmVkLCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25SYW5nZT4gbV9oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZUluZm9NYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2ZpbGVy
RXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7CiAKIHByb3RlY3RlZDoKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsNyArMTE1LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKAogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CiAKLSAgICBpZiAobV9jb2Rl
QmxvY2stPnN5bWJvbFRhYmxlKCkgJiYgIW1fY29kZUJsb2NrLT52bSgpLT5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgIGlmIChtX2NvZGVCbG9jay0+c3ltYm9sVGFibGUo
KSAmJiAhbV9jb2RlQmxvY2stPnZtKCktPnR5cGVQcm9maWxlcigpKQogICAgICAgICBtX2NvZGVC
bG9jay0+c2V0U3ltYm9sVGFibGUobV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPmNsb25lQ2Fw
dHVyZWROYW1lcygqbV9jb2RlQmxvY2stPnZtKCkpKTsKIAogICAgIGlmIChtX2V4cHJlc3Npb25U
b29EZWVwKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYKIAogICAgIG1fc3ltYm9sVGFibGUtPnNldENhcHR1cmVFbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bVZhcnMpLm9mZnNldCgpKTsKIAotICAgIGJv
b2wgY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zID0gIWZ1bmN0aW9uQm9keS0+bmVlZHNBY3RpdmF0
aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSAmJiAhbV9zaG91bGRFbWl0RGVidWdIb29rcyAmJiAh
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKTsKKyAgICBib29sIGNhbkxhemlseUNy
ZWF0ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHktPm5lZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFu
VmFyaWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERlYnVnSG9va3MgJiYgIW1fdm0tPnR5cGVQcm9m
aWxlcigpOwogICAgIG1fZmlyc3RMYXp5RnVuY3Rpb24gPSBjb2RlQmxvY2stPm1fbnVtVmFyczsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlvblN0YWNrW2ldOwpA
QCAtMTAwNiw4ICsxMDA2LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRN
b3ZlKAogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1cmVkKQogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0LT5pbmRleCgpKSk7CiAKLSAgICBp
ZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpKQotICAgICAgICBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShkc3QsIFByb2Zp
bGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOworICAgIGlmICghZHN0LT5pc1Rl
bXBvcmFyeSgpICYmIHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICBlbWl0UHJvZmlsZVR5
cGUoZHN0LCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOwogCiAgICAg
cmV0dXJuIGRzdDsKIH0KQEAgLTExMTgsMjEgKzExMTgsMjEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRFcXVhbAogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8o
Y29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmREaXZvdCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUeXBlUHJvZmlsZXJFeHByZXNz
aW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVuZERpdm90KQogewogICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RhcnREaXZvdC5vZmZz
ZXQ7IC8vIFJhbmdlcyBhcmUgaW5jbHVzaXZlIG9mIHRoZWlyIGVuZHBvaW50cywgQU5EIDAgaW5k
ZXhlZC4KICAgICB1bnNpZ25lZCBlbmQgPSBlbmREaXZvdC5vZmZzZXQgLSAxOyAvLyBFbmQgUmFu
Z2VzIGFscmVhZHkgZ28gb25lIHBhc3QgdGhlIGluY2x1c2l2ZSByYW5nZSwgc28gc3VidHJhY3Qg
MS4KICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IGluc3RydWN0aW9ucygpLnNpemUo
KSAtIDE7Ci0gICAgbV9jb2RlQmxvY2stPmFkZEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVz
c2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIHN0YXJ0LCBlbmQpOworICAgIG1fY29kZUJsb2Nr
LT5hZGRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgc3RhcnQs
IGVuZCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIHJlZ2lzdGVyVG9Qcm9maWxlLCBQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIGZsYWcsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
aWZpZXIpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGUoUmVnaXN0ZXJJ
RCogcmVnaXN0ZXJUb1Byb2ZpbGUsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnIGZsYWcsIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVz
Qnl0ZWNvZGVHZXRGcm9tU2NvcGUgfHwgZmxhZyA9PSBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRv
U2NvcGUpCisgICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVCeXRlY29kZUdldEZyb21TY29wZSB8
fCBmbGFnID09IFByb2ZpbGVUeXBlQnl0ZWNvZGVQdXRUb1Njb3BlKQogICAgICAgICBSRUxFQVNF
X0FTU0VSVChpZGVudGlmaWVyKTsKIAotICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVj
dGlvbiBpczogb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkgcmVnVG9Qcm9maWxl
LCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVyPywgcmVzb2x2ZVR5cGU/Ci0gICAgZW1p
dE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7CisgICAgLy8gVGhl
IGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBvcF9wcm9maWxlX3R5cGUgcmVnVG9Qcm9m
aWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlmaWVyPywgcmVzb2x2ZVR5cGU/CisgICAg
ZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChy
ZWdpc3RlclRvUHJvZmlsZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmbGFnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDEzICsyMjAsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURhdGEqIHRyeURhdGE7CiAgICAgfTsKIAotICAgIGVu
dW0gUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZyB7Ci0gICAgICAgIFBy
b2ZpbGVUeXBlc0J5dGVjb2RlUHV0VG9TY29wZSwKLSAgICAgICAgUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVHZXRGcm9tU2NvcGUsCi0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQs
Ci0gICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwKLSAgICAg
ICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50LAotICAgICAgICBQcm9maWxl
VHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50CisgICAgZW51bSBQcm9maWxlVHlw
ZUJ5dGVjb2RlRmxhZyB7CisgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVQdXRUb1Njb3BlLAor
ICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbVNjb3BlLAorICAgICAgICBQcm9maWxl
VHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsCisgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2Vz
Tm90SGF2ZUdsb2JhbElELAorICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1
bWVudCwKKyAgICAgICAgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
CiAgICAgfTsKIAogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yIHsKQEAgLTQwNyw4ICs0MDcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZShuKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHBy
ZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVuZERpdm90KTsKLSAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgUHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZywgY29uc3QgSWRlbnRpZmllciopOworICAgICAgICB2
b2lkIGVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZERpdm90KTsKKyAgICAgICAgdm9p
ZCBlbWl0UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0ZXJUb1Byb2ZpbGUsIFByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLCBjb25zdCBJZGVudGlmaWVyKik7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUpOwpAQCAtNzU1LDggKzc1NSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZNKiBtX3ZtOwogCi0gICAgICAgIGJvb2wgaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSB7IHJldHVybiB2bSgpLT5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpOyB9Ci0KICAgICAgICAgT3Bjb2RlSUQgbV9sYXN0T3Bjb2Rl
SUQ7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBzaXplX3QgbV9sYXN0T3Bjb2RlUG9zaXRpb247
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMCAr
MTM5LDEwIEBAIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWMKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwg
bnVsbHB0cik7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwg
UHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGhpc0xlbmd0aCA9IDQ7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCks
IEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNldCArIHRoaXNMZW5ndGgsIC0xKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8ocG9zaXRp
b24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0aW9uKCkub2Zmc2V0ICsgdGhpc0xlbmd0aCwg
LTEpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1OSw5ICsxNTksOSBAQCBS
ZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiAgICAgaWYgKExvY2FsIGxv
Y2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChkc3QgPT0gZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShsb2NhbC5n
ZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVIYXNHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5m
byhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lk
ZW50Lmxlbmd0aCgpLCAtMSkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9m
aWxlcigpKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBK
U1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAt
MSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIGxvY2FsLmdldCgpKTsKICAgICB9CkBAIC0xNzEsOSArMTcxLDkgQEAg
UmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0g
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQg
PSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmaW5hbERlc3QsIHNjb3BlLmdldCgpLCBtX2lk
ZW50LCBUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0LCBQcm9maWxlVHlwZXNCeXRlY29kZUdldEZyb21T
Y29wZSwgJm1faWRlbnQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFeHByZXNzaW9uSW5mbyhtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9w
b3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAgIGlmIChnZW5lcmF0
b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShmaW5hbERlc3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVHZXRGcm9tU2NvcGUsICZtX2lkZW50
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhtX3Bv
c2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxl
bmd0aCgpLCAtMSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzkzLDkgKzM5
Myw5IEBAIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGZp
bmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0LCBQcm9maWxlVHlwZXNCeXRlY29k
ZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIFByb2ZpbGVUeXBlQnl0ZWNv
ZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IH0KICAgICByZXR1cm4gcmV0OwogfQpAQCAtNDE5LDkgKzQxOSw5IEBAIG5vbkFyZ3VtZW50c1Bh
dGg6CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZSwgbV9pZGVudCk7Ci0gICAgaWYgKGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmaW5hbERlc3QsIFByb2ZpbGVUeXBlc0J5
dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdCwgUHJvZmlsZVR5cGVC
eXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC01MDMsOSArNTAzLDkgQEAgUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJlZ2lzdGVySUQq
IHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdo
RmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdo
RmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhh
dmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlw
ZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTUyNCw5ICs1MjQsOSBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhwZWN0
ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbiBh
CiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIgYnVp
bHQtaW4gY29uc3RydWN0b3JzLgogICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHko
cmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJ
RCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVj
b2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CkBAIC01NDAsOSArNTQwLDkg
QEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQp
OwogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgUmVnaXN0
ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdl
dCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhI
aWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVj
b2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTU1OSw5ICs1NTksOSBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0g
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVH
bG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
aWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9l
c05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVBy
b2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIHJldDsKIH0KQEAgLTU3Nyw5ICs1NzcsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUds
b2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBp
ZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2Vz
Tm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJv
ZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAg
ICByZXR1cm4gcmV0OwogfQpAQCAtNjUxLDkgKzY1MSw5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQpAQCAtNzY1LDkgKzc2
NSw5IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAg
fQotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkg
ewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0
dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwg
bnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGlu
Z0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVy
YXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVH
bG9iYWxJRCwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhw
cmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlLmdldCgpOwogfQpAQCAtODAyLDcgKzgwMiw3IEBAIFJlZ2lzdGVySUQqIFBv
c3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAgaWYgKGxvY2FsLmlzUmVhZE9ubHko
KSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVk
KCk7CiAgICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsKLSAgICAgICAgfSBlbHNlIGlmIChsb2Nh
bC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJh
dG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGVtcERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAg
ICBBU1NFUlQoZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0ZW1wRHN0U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwpAQCAtODEwLDggKzgxMCw4
IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0U3JjLmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAg
ICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0U3JjLmdldCgpLCBtX29wZXJhdG9y
KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5n
ZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRlbXBEc3QuZ2V0KCk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZywgbV9vcGVyYXRvcik7CkBAIC04MjIs
OSArODIyLDkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIGlkZW50LCBUaHJvd0lmTm90Rm91
bmQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwg
bV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBp
ZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgaWYgKGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVz
Qnl0ZWNvZGVQdXRUb1Njb3BlLCAmaWRlbnQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29k
ZVB1dFRvU2NvcGUsICZpZGVudCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVy
RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gb2xkVmFsdWUuZ2V0KCk7CkBAIC04NDgsOSArODQ4LDkgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1p
dFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
dmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7Ci0gICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZS5nZXQo
KSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbklu
Zm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5
cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUu
Z2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC04NzIsOSArODcyLDkgQEAg
UmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAogICAgIFJlZ2lzdGVySUQq
IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsK
LSAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVl
LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNz
aW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0o
KS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2
YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxw
dHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTk5MiwxMyArOTky
LDEzIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGUKICAgICAgICAg
aWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbC5p
c0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0LmdldCgpLCBs
b2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0Lmdl
dCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJl
ZywgdGVtcERzdC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5m
byhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVtcERzdC5nZXQoKSk7CiAgICAgICAg
IH0KICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgbG9jYWxSZWcsIG1fb3BlcmF0b3Ip
OwpAQCAtMTAxMCw5ICsxMDEwLDkgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29s
dmUoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIGlkZW50LCBU
aHJvd0lmTm90Rm91bmQpOwogICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLmdldCgp
LCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCks
IGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICBpZiAoZ2VuZXJhdG9y
LmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgpLCBQcm9maWxlVHlw
ZXNCeXRlY29kZVB1dFRvU2NvcGUsICZpZGVudCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVj
b2RlUHV0VG9TY29wZSwgJmlkZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmls
ZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB2YWx1ZS5nZXQo
KSk7CiB9CkBAIC0xMDMzLDkgKzEwMzMsOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0
QnJhY2tldChCeXRlCiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0
b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2
ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUds
b2JhbElELCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsK
IH0KQEAgLTEwNTUsOSArMTA1NSw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3Qo
Qnl0ZWNvZGUKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVu
dCwgdmFsdWUpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkodmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVs
bHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRv
ci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHZhbHVlLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC0xNTA2LDE1
ICsxNTA2LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKQotICAgICAg
ICAgICAgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkKKyAg
ICAgICAgICAgIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKQogICAgICAgICAgICAg
fHwgZ2VuZXJhdG9yLmxlZnRIYW5kU2lkZU5lZWRzQ29weShtX3JpZ2h0SGFzQXNzaWdubWVudHMs
IG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShyZXN1bHQuZ2V0KCksIGxvY2FsLmdldCgpKTsKICAgICAgICAgICAg
IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIHJlc3VsdC5nZXQoKSwgcmVzdWx0
LmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5r
bm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuaW52YWxpZGF0ZUZvckluQ29udGV4dEZvckxvY2FsKGxvY2FsLmdldCgpKTsK
LSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTUy
OCw5ICsxNTI4LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qgog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIFRocm93SWZO
b3RGb3VuZCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5
QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFs
dWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSks
IHRoaXMpOwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0LmdldCgpLCBUaHJvd0lmTm90Rm91
bmQpOwotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHko
cmVzdWx0LmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZtX2lkZW50KTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lv
bkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCkt
PnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVz
dWx0LmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlUHV0VG9TY29wZSwgJm1faWRlbnQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5SZXN1bHQ7CiB9CkBAIC0x
NTQ0LDEzICsxNTQ0LDEzIEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0
ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgp
OwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlz
Q2FwdHVyZWQoKSB8fCBnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXBEc3QuZ2V0KCksIG1f
cmlnaHQpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLmdldCgpLCB0ZW1w
RHN0LmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5pbnZhbGlkYXRlRm9ySW5Db250ZXh0
Rm9yTG9jYWwobG9jYWwuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxl
cigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lv
bkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAg
ICAgICB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShs
b2NhbC5nZXQoKSwgbV9yaWdodCk7CkBAIC0xNTY2LDkgKzE1NjYsOSBAQCBSZWdpc3RlcklEKiBB
c3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIG1faWRlbnQsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8g
VGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmVzdWx0LmdldCgpLCBQcm9maWxl
VHlwZXNCeXRlY29kZVB1dFRvU2NvcGUsICZtX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlUHV0VG9TY29wZSwgJm1faWRlbnQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5
cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
fSAKICAgICByZXR1cm4gcmV0dXJuUmVzdWx0OwogfQpAQCAtMTU4Myw5ICsxNTgzLDkgQEAgUmVn
aXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKSA/IHJlc3VsdCA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0KSwgcmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdCk7Ci0gICAgaWYgKGdl
bmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmb3J3YXJkUmVzdWx0LCBQ
cm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVBy
b2ZpbGVyKCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVz
dWx0LCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9CkBAIC0xNjAyLDkgKzE2MDIs
OSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjCiAKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgUHJvZmlsZVR5cGVCeXRl
Y29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgfQogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xNjI4LDkgKzE2MjgsOSBAQCBSZWdpc3RlcklE
KiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVy
SUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8g
cmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlW
YWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOwotICAgIGlmIChn
ZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZm9yd2FyZFJlc3VsdCwg
UHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8o
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQ
cm9maWxlcigpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJl
c3VsdCwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVz
dGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQpOwogfQpAQCAtMTY0OCw5ICsxNjQ4
LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0
KCksIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhh
dmVHbG9iYWxJRCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNO
b3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZTsKQEAgLTE2NzYsNyArMTY3Niw3IEBAIFJlZ2lzdGVySUQq
IENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICAgICAgICAgIHJldHVybiBsb2NhbC5n
ZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogTWF5YmUgY2FsbCBlbWl0RXhwcmVzc2lvbkluZm8g
aGVyZS4KLSAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBpZiAobG9jYWwuaXNDYXB0
dXJlZCgpIHx8IGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9pbml0KTsKICAg
ICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHRlbXBEc3Qu
Z2V0KCkpOwpAQCAtMTc4NiwxOCArMTc4NiwxOCBAQCB2b2lkIFZhclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlCiAKIFJlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAg
IGlmICghZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAg
aWYgKCFnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKQot
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkobG9jYWwu
Z2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVj
b2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOwogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpLCBtX2lkZW50LCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZS5nZXQoKSwgUHJvZmls
ZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsICZtX2lkZW50KTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUdldEZyb21T
Y29wZSwgJm1faWRlbnQpOwogICAgIH0KIAotICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0x
LCBwb3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBKU1RleHRQb3Np
dGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOwogCiAg
ICAgLy8gSXQncyBzYWZlIHRvIHJldHVybiBudWxsIGhlcmUgYmVjYXVzZSB0aGlzIG5vZGUgd2ls
bCBhbHdheXMgYmUgYSBjaGlsZCBub2RlIG9mIFZhclN0YXRlbWVudE5vZGUgd2hpY2ggaWdub3Jl
cyBvdXIgcmV0dXJuIHZhbHVlLgogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI3Niw5ICsyMjc2
LDkgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogICAgICAgICBk
c3QgPSAwOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1
ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2Fk
KGRzdCwganNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNv
ZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgbnVsbHB0cik7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQsIG51bGxwdHIpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIGlmIChnZW5lcmF0b3Iuc2NvcGVEZXB0aCgpKSB7
CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjYwNywxNSArMjYwNywx
NSBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lCiAKIHZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewotICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkgeworICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BhcmFtZXRlcnMtPnNpemUoKTsg
aSsrKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIERlc3RydWN0dXJpbmcgYXNzaWdu
bWVudHMgaW50byBhcmd1bWVudHMuCiAgICAgICAgICAgICBpZiAoIW1fcGFyYW1ldGVycy0+YXQo
aSktPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIEJpbmRpbmdOb2RlKiBwYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxCaW5kaW5nTm9kZSo+KG1f
cGFyYW1ldGVycy0+YXQoaSkpOwogICAgICAgICAgICAgUmVnaXN0ZXJJRCByZWcoQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldChpKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHkoJnJlZywgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvbkFy
Z3VtZW50LCBudWxscHRyKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBhcmFtZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJh
bWV0ZXItPmRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZSgmcmVnLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudCwgbnVsbHB0cik7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKHBhcmFt
ZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90RW5kKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0yNjM1LDggKzI2MzUsOCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21h
dGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJuTm9kZSkgewogICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyMCwgUHJv
ZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgbnVsbHB0cik7IC8vIERv
IG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBu
b3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgaWYgKGdlbmVyYXRvci52bSgp
LT50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgbnVsbHB0cik7
IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2Ug
aXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAgICAgQVNTRVJUKHN0YXJ0
T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3MjgxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSGVh
cFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKLSNpbmNsdWRlICJI
aWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC00NSw2
ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVk
ZSAiUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiVHJhY2luZy5oIgorI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgpAQCAtOTc5LDkg
Kzk3OSw5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3QKICAgICAK
ICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uIik7
CiAgICAgCi0gICAgaWYgKHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
IHsKKyAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBhd2hpbGUoKnRoaXMpOwotICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlMb2coKS0+cHJv
Y2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0MiKTsKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5j
bHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgi
Ci0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKQEAgLTQ1LDYgKzQzLDggQEAKICNpbmNsdWRlICJQYXJzZXJF
cnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxl
ckxvZy5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0yMDIsMTMgKzIwMiwxMyBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7CiAgICAg
dHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwotICAg
IGlmICghdm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgIGlmICgh
dm0udHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJUaGUgVk0gZG9lcyBub3QgY3VycmVudGx5IGhhdmUgVHlwZSBJbmZvcm1hdGlvbi4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGRvdWJsZSBzdGFydCA9IGN1cnJlbnRUaW1lTVMo
KTsKLSAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiVXNl
ciBRdWVyeSIpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhB
U0NJSUxpdGVyYWwoIlVzZXIgUXVlcnkiKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxvY2F0aW9ucy0+bGVuZ3RoKCk7IGkrKykgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBsb2NhdGlvbnMtPmdldChpKTsKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5CiAKICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4g
dHlwZURlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURl
c2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYm9vbCBva2F5OwotICAgICAgICB2bS5oaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5z
cGVjdG9yKHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3I+KGRlc2NyaXB0
b3IpLCBkaXZvdCwgc291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSksIHR5cGVE
ZXNjcmlwdGlvbik7CisgICAgICAgIHZtLnR5cGVQcm9maWxlcigpLT5nZXRUeXBlc0ZvclZhcmlh
YmxlQXRPZmZzZXRGb3JJbnNwZWN0b3Ioc3RhdGljX2Nhc3Q8VHlwZVByb2ZpbGVyU2VhcmNoRGVz
Y3JpcHRvcj4oZGVzY3JpcHRvciksIGRpdm90LCBzb3VyY2VJREFzU3RyaW5nLnRvSW50UHRyU3Ry
aWN0KCZva2F5KSwgdHlwZURlc2NyaXB0aW9uKTsKICAgICAgICAgdHlwZURlc2NyaXB0aW9ucy0+
YWRkSXRlbSh0eXBlRGVzY3JpcHRpb24pOwogICAgIH0KIApAQCAtMjUzLDcgKzI1Myw3IEBAIHN0
YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9yVHkKIHsKICAgICB2bS53YWl0Rm9y
Q29tcGlsYXRpb25zVG9Db21wbGV0ZSgpOwogCi0gICAgYm9vbCBuZWVkc1RvUmVjb21waWxlID0g
KHNob3VsZEVuYWJsZVR5cGVQcm9maWxpbmcgPyB2bS5lbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nKCkgOiB2bS5kaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKTsKKyAgICBi
b29sIG5lZWRzVG9SZWNvbXBpbGUgPSAoc2hvdWxkRW5hYmxlVHlwZVByb2ZpbGluZyA/IHZtLmVu
YWJsZVR5cGVQcm9maWxlcigpIDogdm0uZGlzYWJsZVR5cGVQcm9maWxlcigpKTsKICAgICBpZiAo
bmVlZHNUb1JlY29tcGlsZSkgewogICAgICAgICBUeXBlUmVjb21waWxlciByZWNvbXBpbGVyOwog
ICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUodm0uaGVhcCk7CkBAIC0y
NjQsMjAgKzI2NCwyMCBAQCBzdGF0aWMgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5
CiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKHJlYXNvbiAh
PSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYg
bV9pc1R5cGVQcm9maWxpbmdFbmFibGVkKQotICAgICAgICBzZXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRW5hYmxlZFN0YXRlKGZhbHNlKTsKKyAgICAgICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxl
ZFN0YXRlKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZUhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmVuYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyopCiB7Ci0gICAgc2V0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRTdGF0ZSh0cnVlKTsKKyAgICBzZXRUeXBlUHJv
ZmlsZXJFbmFibGVkU3RhdGUodHJ1ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhFcnJvclN0cmluZyopCit2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZVR5cGVQcm9maWxlcihFcnJvclN0cmluZyopCiB7
Ci0gICAgc2V0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRTdGF0ZShmYWxzZSk7Cisg
ICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OnNldEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkU3RhdGUo
Ym9vbCBzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OnNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShib29sIHNob3VsZEVuYWJsZVR5cGVQcm9m
aWxpbmcpCiB7CiAgICAgaWYgKG1faXNUeXBlUHJvZmlsaW5nRW5hYmxlZCA9PSBzaG91bGRFbmFi
bGVUeXBlUHJvZmlsaW5nKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3Jv
dXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKSBvdmVycmlkZSBmaW5h
bDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhFcnJvclN0cmluZyopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhFcnJv
clN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUeXBlUHJvZmlsZXIo
RXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVR5cGVQcm9m
aWxlcihFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgc2V0U2NyaXB0RGVi
dWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVnU2VydmVyKSB7IG1fc2NyaXB0
RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQogCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIHNldEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmFibGVkU3RhdGUoYm9v
bCk7CisgICAgdm9pZCBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoYm9vbCk7CiAKICAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIFNjcmlw
dERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24JKHJldmlz
aW9uIDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
UnVudGltZS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsMTIgKzI0MSwxMiBAQAogICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgZGV0YWlsZWQgaW5mb3JtdGF0aW9uIG9uIGdp
dmVuIGZ1bmN0aW9uLiIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUi
OiAiZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyIsCi0gICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRW5hYmxlcyBoaWdoIGZpZGVsaXR5IHR5cGUgcHJvZmlsaW5nIG9uIHRoZSBWTS4i
CisgICAgICAgICAgICAibmFtZSI6ICJlbmFibGVUeXBlUHJvZmlsZXIiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgdHlwZSBwcm9maWxpbmcgb24gdGhlIFZNLiIKICAgICAg
ICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZUhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmciLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGhp
Z2ggZmlkZWxpdHkgdHlwZSBwcm9maWxpbmcgb24gdGhlIFZNLiIKKyAgICAgICAgICAgICJuYW1l
IjogImRpc2FibGVUeXBlUHJvZmlsZXIiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRp
c2FibGVzIHR5cGUgcHJvZmlsaW5nIG9uIHRoZSBWTS4iCiAgICAgICAgIH0KICAgICBdLAogICAg
ICJldmVudHMiOiBbCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAx
NzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDYgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NFMkNo
ZWNrUwogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCi0jaW5jbHVkZSAiSGln
aEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgpAQCAtNTMsNiArNTIsNyBAQCBK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiU2FtcGxp
bmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbmMpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX2RpZF9j
YWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCi0gICAgICAgIERF
RklORV9PUChvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKKyAgICAgICAgREVG
SU5FX09QKG9wX3Byb2ZpbGVfdHlwZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmFtZV9z
Y29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfd2l0aF9zY29wZSkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC01MDEsOSArNTAxLDkgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlw
ZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9y
IG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5LgotICAgIGlmIChtX3ZtLT5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBtX3ZtLT5oaWdoRmlkZWxp
dHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBm
b3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKKyAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZl
IHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlw
ZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZS4KKyAgICBpZiAobV92bS0+
dHlwZVByb2ZpbGVyKCkpCisgICAgICAgIG1fdm0tPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNz
TG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiIp
KTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkgfHwgbV92bS0+bV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IGFkb3B0UHRyKG5l
dyBKSVREaXNhc3NlbWJsZXIobV9jb2RlQmxvY2spKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDcgKzUyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfaW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wcm9maWxlX2RpZF9jYWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
cm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHJv
ZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXNoX3dpdGhfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV9pZChJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA2LDkg
KzEzMDYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBl
c193aXRoX2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcHJvZmlsZV90eXBlKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRl
ICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1
ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRl
ICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzM5LDcgKzEzMzks
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlc193aXRo
X2hpZ2hfZmlkZWxpdHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIFR5cGVMb2NhdGlvbiogY2FjaGVkVHlwZUxvY2F0aW9uID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUubG9jYXRpb247CiAgICAgaW50IHZhbHVlVG9Qcm9maWxlID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTEzNjksMzEgKzEzNjksMzEgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZwogICAgIH0KIAogICAgIC8vIExvYWQgdGhlIHR5
cGUgcHJvZmlsaW5nIGxvZyBpbnRvIFQyLgotICAgIEhpZ2hGaWRlbGl0eUxvZyogY2FjaGVkSGln
aEZpZGVsaXR5TG9nID0gbV92bS0+aGlnaEZpZGVsaXR5TG9nKCk7Ci0gICAgbW92ZShUcnVzdGVk
SW1tUHRyKGNhY2hlZEhpZ2hGaWRlbGl0eUxvZyksIHJlZ1QyKTsKKyAgICBUeXBlUHJvZmlsZXJM
b2cqIGNhY2hlZFR5cGVQcm9maWxlckxvZyA9IG1fdm0tPnR5cGVQcm9maWxlckxvZygpOworICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBlUHJvZmlsZXJMb2cpLCByZWdUMik7CiAgICAg
Ly8gTG9hZCB0aGUgbmV4dCBsb2cgZW50cnkgaW50byBUMS4KLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDIsIEhpZ2hGaWRlbGl0eUxvZzo6Y3VycmVudExvZ0VudHJ5T2Zmc2V0KCkpLCByZWdUMSk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBUeXBlUHJvZmlsZXJMb2c6OmN1cnJlbnRMb2dF
bnRyeU9mZnNldCgpKSwgcmVnVDEpOwogCiAgICAgLy8gU3RvcmUgdGhlIEpTVmFsdWUgb250byB0
aGUgbG9nIGVudHJ5LgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIEhpZ2hGaWRl
bGl0eUxvZzo6TG9nRW50cnk6OnZhbHVlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBB
ZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5Ojp2YWx1ZU9mZnNldCgpKSk7
CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0dXJlSUQgb2YgdGhlIGNlbGwgaWYgVDAgaXMgYSBj
ZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24gdGhlIGxvZyBlbnRyeS4KICAgICBKdW1wIG5vdENl
bGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIHN0b3JlMzIocmVn
VDAsIEFkZHJlc3MocmVnVDEsIEhpZ2hGaWRlbGl0eUxvZzo6TG9nRW50cnk6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmls
ZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgSnVtcCBza2lwSXND
ZWxsID0ganVtcCgpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKLSAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgSGlnaEZpZGVsaXR5TG9nOjpMb2dFbnRyeTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNz
KHJlZ1QxLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7
CiAgICAgc2tpcElzQ2VsbC5saW5rKHRoaXMpOwogCiAgICAgLy8gU3RvcmUgdGhlIHR5cGVMb2Nh
dGlvbiBvbiB0aGUgbG9nIGVudHJ5LgogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjYWNoZWRUeXBl
TG9jYXRpb24pLCByZWdUMCk7Ci0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgSGln
aEZpZGVsaXR5TG9nOjpMb2dFbnRyeTo6bG9jYXRpb25PZmZzZXQoKSkpOworICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3MocmVnVDEsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OmxvY2F0aW9u
T2Zmc2V0KCkpKTsKIAogICAgIC8vIEluY3JlbWVudCB0aGUgY3VycmVudCBsb2cgZW50cnkuCi0g
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSGlnaEZpZGVsaXR5TG9nOjpMb2dFbnRyeSkp
LCByZWdUMSk7Ci0gICAgc3RvcmU2NChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgSGlnaEZpZGVsaXR5
TG9nOjpjdXJyZW50TG9nRW50cnlPZmZzZXQoKSkpOwotICAgIEp1bXAgc2tpcENsZWFyTG9nID0g
YnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbVB0cihjYWNoZWRIaWdoRmlkZWxp
dHlMb2ctPmxvZ0VuZFB0cigpKSk7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoVHlw
ZVByb2ZpbGVyTG9nOjpMb2dFbnRyeSkpLCByZWdUMSk7CisgICAgc3RvcmU2NChyZWdUMSwgQWRk
cmVzcyhyZWdUMiwgVHlwZVByb2ZpbGVyTG9nOjpjdXJyZW50TG9nRW50cnlPZmZzZXQoKSkpOwor
ICAgIEp1bXAgc2tpcENsZWFyTG9nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbVB0cihjYWNoZWRUeXBlUHJvZmlsZXJMb2ctPmxvZ0VuZFB0cigpKSk7CiAgICAgLy8gQ2xl
YXIgdGhlIGxvZyBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBsb2cuCiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKTsKICAgICBza2lwQ2xlYXJMb2cu
bGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1
ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKQEAgLTU0LDYgKzUzLDcg
QEAKICNpbmNsdWRlICJSZXBhdGNoLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xOTI5LDcg
KzE5MjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0CiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICBleGVjLT52bSgpLmhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGln
aEZpZGVsaXR5TG9nKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBi
YXNlbGluZSBKSVQiKSk7CisgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vz
c0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIGJh
c2VsaW5lIEpJVCIpKTsKIH0KIAogfSAvLyBleHRlcm4gIkMiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3MjgxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUyLDYgKzEzNTIsNiBAQCBl
bmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAot
X2xsaW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgotICAgIGNhbGxTbG93
UGF0aChfc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQorX2xsaW50
X29wX3Byb2ZpbGVfdHlwZToKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wcm9maWxlX3R5
cGUpCiAgICAgZGlzcGF0Y2goNikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvCiB7CiAgICAgU291cmNl
Q29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwgU3RyaW5nKCksIENhY2hlVHlwZXM8
VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0cmljdG5lc3MpOwogICAgIENvZGVD
YWNoZU1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc291cmNlQ29kZS5hZGQoa2V5LCBTb3Vy
Y2VDb2RlVmFsdWUoKSk7Ci0gICAgYm9vbCBjYW5DYWNoZSA9IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1
Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPZmYgJiYgIXZtLmlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7CisgICAgYm9vbCBjYW5DYWNoZSA9IGRlYnVnZ2VyTW9k
ZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPZmYgJiYgIXZtLnR5
cGVQcm9maWxlcigpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgY2FuQ2FjaGUp
IHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IGpz
Q2FzdDxVbmxpbmtlZENvZGVCbG9ja1R5cGUqPihhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmNl
bGwuZ2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkgKyB1bmxpbmtlZENvZGVCbG9jay0+Zmlyc3RMaW5lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3
MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJFcnJvckhhbmRs
aW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
LmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVz
LmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRj
aHBvaW50U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgog
CkBAIC02MzcsMTIgKzYzNywxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9faW5kZXhf
c3RyaW5nCiAgICAgUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywg
T1AoMikuanNWYWx1ZSgpLmFzVUludDMyKCkpLnN0cmluZygpKSk7CiB9CiAKLVNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGUpCiB7CiAgICAgQkVHSU4oKTsKICAgICBUeXBl
TG9jYXRpb24qIGxvY2F0aW9uID0gcGNbMl0udS5sb2NhdGlvbjsKICAgICBKU1ZhbHVlIHZhbCA9
IE9QX0MoMSkuanNWYWx1ZSgpOwotICAgIHZtLmhpZ2hGaWRlbGl0eUxvZygpLT5yZWNvcmRUeXBl
SW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2YWwsIGxvY2F0aW9uKTsKKyAgICB2bS50eXBlUHJvZmls
ZXJMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odmFsLCBsb2NhdGlvbik7
CiAgICAgRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMz
LDcgKzIzMyw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3N0cnUKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2dlbmVyaWNfcHJvcGVydHlfZW51bWVy
YXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZW51bWVyYXRvcl9w
bmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7
Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBl
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAj
aW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgog
I2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTA0LDggKzEwNCw4IEBAIFNj
cmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWMKICAgICAsIG1fbGFzdExpbmUo
LTEpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKFVJTlRfTUFYKQogICAgICwgbV9lbmRDb2x1bW4oVUlO
VF9NQVgpCi0gICAgLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldChVSU5U
X01BWCkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldChVSU5UX01B
WCkKKyAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KFVJTlRfTUFYKQorICAgICwgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KFVJTlRfTUFYKQogewogfQogCkBAIC0zNzYsMTAgKzM3Niwx
MCBAQCBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mCiBQcm9ncmFtRXhl
Y3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UpCiAgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UpCiB7Ci0g
ICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwotICAgIG1faGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7Ci0g
ICAgaWYgKGV4ZWMtPnZtKCkuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAg
ICAgICAgZXhlYy0+dm0oKS5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX2hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nRW5kT2Zmc2V0KTsKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAg
bV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAo
ZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmls
ZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShz
b3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV90eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0KTsKIH0KIAogdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCkBAIC00MDMsOCArNDAzLDggQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoVgogICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlOVF9NQVgpOwogICAgIG1fc3RhcnRD
b2x1bW4gPSBzdGFydENvbHVtbjsKICAgICBtX2VuZENvbHVtbiA9IGVuZENvbHVtbjsKLSAgICBt
X2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJs
ZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7Ci0gICAgbV9oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCk7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpOwor
ICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVBy
b2ZpbGluZ0VuZE9mZnNldCgpOwogfQogCiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCkBAIC01MDEsMTAgKzUwMSwxMCBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLnNl
Y29uZC5nZXQoKTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1fc291cmNlLCBsaW5lTm8o
KSksIHNjb3BlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hZGRGdW5jdGlvbihjYWxsRnJhbWUs
IGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLmZpcnN0LCB2YWx1ZSk7Ci0gICAgICAgIGlmICh2bS5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Ci0gICAgICAgICAgICB2bS5oaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2Vy
dFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCAKLSAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCks
IAotICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICBpZiAodm0udHlwZVByb2ZpbGVy
KCkpIHsKKyAgICAgICAgICAgIHZtLnR5cGVQcm9maWxlcigpLT5mdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJjZUlEKCksIAorICAgICAgICAgICAg
ICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQo
KSwgCisgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9m
aWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE3MjgxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzY1LDggKzM2NSw4IEBAIHB1YmxpYzoKICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RMaW5lOyB9CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRDb2x1bW47IH0KLSAgICB1bnNpZ25lZCBoaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmdTdGFydE9mZnNldDsgfQotICAgIHVuc2lnbmVkIGhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdF
bmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsgfQorICAgIHVuc2lnbmVkIHR5cGVQ
cm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGVQcm9maWxpbmdFbmRPZmZz
ZXQ7IH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYg
RXZhbEZlYXR1cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZTsgfQpAQCAtNDM3LDggKzQzNyw4IEBAIHByb3Rl
Y3RlZDoKICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwotICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwotICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dDsKKyAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CiB9OwogCiBjbGFzcyBF
dmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkocmV2aXNp
b24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5
TG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKLQotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
Ci0KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKLQotdm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKQot
ewotICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAgbV9oaWdoRmlkZWxpdHlMb2dTaXpl
ID0gNTAwMDA7Ci0gICAgbV9sb2dTdGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2hpZ2hGaWRlbGl0
eUxvZ1NpemVdOwotICAgIG1fY3VycmVudExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKLSAg
ICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3RhcnRQdHIgKyBtX2hpZ2hGaWRlbGl0eUxvZ1NpemU7Ci19
Ci0KLUhpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRlbGl0eUxvZygpCi17Ci0gICAgZGVsZXRlW10g
bV9sb2dTdGFydFB0cjsKLX0KLQotdm9pZCBIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlk
ZWxpdHlMb2coU3RyaW5nIHJlYXNvbikKLXsKLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0
YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwiJyIpOwotCi0gICAgZG91YmxlIGJlZm9y
ZSA9IGN1cnJlbnRUaW1lTVMoKTsKLSAgICBMb2dFbnRyeSogZW50cnkgPSBtX2xvZ1N0YXJ0UHRy
OwotICAgIEhhc2hNYXA8U3RydWN0dXJlSUQsIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+IHNlZW5T
aGFwZXM7Ci0gICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVudExvZ0VudHJ5UHRyKSB7Ci0gICAg
ICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlEOwotICAgICAgICBSZWZQdHI8
U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGVudHJ5LT52
YWx1ZTsKLSAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgPSBzZWVuU2hh
cGVzLmZpbmQoaWQpOwotICAgICAgICAgICAgaWYgKGl0ZXIgPT0gc2VlblNoYXBlcy5lbmQoKSkg
ewotICAgICAgICAgICAgICAgIHNoYXBlID0gSGVhcDo6aGVhcCh2YWx1ZS5hc0NlbGwoKSktPnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQoZW50cnktPnN0cnVjdHVyZUlEKS0+dG9TdHJ1Y3R1cmVTaGFw
ZSh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc2VlblNoYXBlcy5zZXQoaWQsIHNoYXBlKTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNoYXBlID0gaXRlci0+dmFsdWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBSdW50aW1lVHlwZSB0eXBlID0gVHlwZVNldDo6Z2V0UnVudGlt
ZVR5cGVGb3JWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBl
bnRyeS0+bG9jYXRpb247Ci0gICAgICAgIGxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9IHR5cGU7
Ci0gICAgICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICAgICAgbG9j
YXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBp
ZCk7Ci0gICAgICAgIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWRkVHlwZUluZm9y
bWF0aW9uKHR5cGUsIHNoYXBlLCBpZCk7Ci0KLSAgICAgICAgZW50cnkrKzsKLSAgICB9Ci0KLSAg
ICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQdHI7Ci0KLSAgICBpZiAodmVyYm9z
ZSkgewotICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7Ci0gICAgICAgIGRh
dGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVm
b3JlKTsKLSAgICB9Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkocmV2aXNpb24gMTcyODEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhpZ2hGaWRlbGl0eUxvZ19oCi0jZGVmaW5lIEhp
Z2hGaWRlbGl0eUxvZ19oCi0KLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlLmgiCi0jaW5jbHVk
ZSA8d3RmL0J5dGVTcGluTG9jay5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVHlwZUxv
Y2F0aW9uOwotCi1jbGFzcyBIaWdoRmlkZWxpdHlMb2cgewotCi1wdWJsaWM6Ci0gICAgc3RydWN0
IExvZ0VudHJ5IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAg
ICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0
dXJlSUQ7Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgc3RydWN0dXJlSUQpOyB9Ci0gICAgICAg
IHN0YXRpYyBwdHJkaWZmX3QgdmFsdWVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
TG9nRW50cnksIHZhbHVlKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGxvY2F0aW9uT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKExvZ0VudHJ5LCBsb2NhdGlvbik7IH0KLSAg
ICB9OwotCi0KLSAgICBIaWdoRmlkZWxpdHlMb2coKQotICAgICAgICA6IG1fbG9nU3RhcnRQdHIo
MCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKLSAgICB9Ci0K
LSAgICB+SGlnaEZpZGVsaXR5TG9nKCk7Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVjb3Jk
VHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2YWx1ZSwgVHlwZUxvY2F0aW9uKiBs
b2NhdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKLQotICAgICAg
ICBtX2N1cnJlbnRMb2dFbnRyeVB0ci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICAgICAgbV9j
dXJyZW50TG9nRW50cnlQdHItPnZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1fY3VycmVudExvZ0Vu
dHJ5UHRyLT5zdHJ1Y3R1cmVJRCA9ICh2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmVJRCgpIDogMCk7Ci0gICAgCi0gICAgICAgIG1fY3VycmVudExvZ0VudHJ5UHRyICs9
IDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRMb2dFbnRyeVB0ciA9PSBtX2xvZ0Vu
ZFB0cikpCi0gICAgICAgICAgICBwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCJMb2cgRnVsbCIpOwot
ICAgIH0KLQotICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhTdHJpbmcpOwotICAgIExv
Z0VudHJ5KiBsb2dFbmRQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0VuZFB0cjsgfQotCi0gICAg
c3RhdGljIHB0cmRpZmZfdCBsb2dTdGFydE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihIaWdoRmlkZWxpdHlMb2csIG1fbG9nU3RhcnRQdHIpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZf
dCBjdXJyZW50TG9nRW50cnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSGlnaEZp
ZGVsaXR5TG9nLCBtX2N1cnJlbnRMb2dFbnRyeVB0cik7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
IGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKLQotICAgIHVuc2lnbmVkIG1faGlnaEZpZGVs
aXR5TG9nU2l6ZTsKLSAgICBMb2dFbnRyeSogbV9sb2dTdGFydFB0cjsKLSAgICBMb2dFbnRyeSog
bV9jdXJyZW50TG9nRW50cnlQdHI7Ci0gICAgTG9nRW50cnkqIG1fbG9nRW5kUHRyOwotfTsKLQot
fSAvL25hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vSGlnaEZpZGVsaXR5TG9nX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCi0jaW5jbHVk
ZSAiVHlwZUxvY2F0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1zdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Ci0KLXZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpsb2dU
eXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQotewotICAgIFR5cGVQ
cm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5tX2dsb2JhbFZh
cmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50ID8gVHlwZVByb2ZpbGVyU2Vh
cmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuIDogVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ck5vcm1hbDsKLQotICAgIGRhdGFMb2dGKCJbU3RhcnQsIEVuZF06OlsldSwgJXVdXG4iLCBsb2Nh
dGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZvdEVuZCk7Ci0KLSAgICBpZiAoZmlu
ZExvY2F0aW9uKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX3NvdXJjZUlELCBk
ZXNjcmlwdG9yKSkKLSAgICAgICAgZGF0YUxvZygiXHRcdFtFbnRyeSBJUyBpbiBTeXN0ZW1dXG4i
KTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGFMb2coIlx0XHRbRW50cnkgSVMgTk9UIGluIHN5c3Rl
bV1cbiIpOwotCi0gICAgZGF0YUxvZygiXHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxl
SUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50ID8gIltSZXR1cm4gU3RhdGVtZW50XSIg
OiAiW05vcm1hbCBTdGF0ZW1lbnRdIiwgIlxuIik7Ci0KLSAgICBkYXRhTG9nKCJcdFx0I0xvY2Fs
I1xuXHRcdCIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+c2VlblR5cGVzKCkucmVw
bGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwotICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxU
eXBlU2V0KQotICAgICAgICBkYXRhTG9nKCJcdFx0I0dsb2JhbCNcblx0XHQiLCBsb2NhdGlvbi0+
bV9nbG9iYWxUeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxu
Iik7Ci19Ci0KLXZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlv
bihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQotewotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBkaXZvdFN0YXJ0OiV1LCBkaXZvdEVuZDol
dVxuIiwgbG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2b3RFbmQpOwotCi0g
ICAgaWYgKCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlvbi0+bV9zb3VyY2VJRCkpIHsKLSAg
ICAgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+IGJ1Y2tldDsKLSAgICAgICAgbV9idWNrZXRNYXAu
c2V0KGxvY2F0aW9uLT5tX3NvdXJjZUlELCBidWNrZXQpOwotICAgIH0KLQotICAgIFZlY3RvcjxU
eXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9idWNrZXRNYXAuZmluZChsb2NhdGlvbi0+bV9zb3Vy
Y2VJRCktPnZhbHVlOwotICAgIGJ1Y2tldC5hcHBlbmQobG9jYXRpb24pOwotfQotCi12b2lkIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5z
cGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvciwgdW5zaWduZWQg
ZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPiYgZGVzY3JpcHRpb24pCi17Ci0gICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwgc291cmNlSUQsIGRlc2NyaXB0b3Ip
OwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChsb2NhdGlv
bi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgIT0gSGln
aEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0cykgewotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0RGlz
cGxheVR5cGVOYW1lKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmRpc3BsYXlOYW1lKCkpOwot
ICAgICAgICBkZXNjcmlwdGlvbi0+c2V0R2xvYmFsUHJpbWl0aXZlVHlwZU5hbWVzKGxvY2F0aW9u
LT5tX2dsb2JhbFR5cGVTZXQtPmFsbFByaW1pdGl2ZVR5cGVOYW1lcygpKTsKLSAgICAgICAgZGVz
Y3JpcHRpb24tPnNldEdsb2JhbFN0cnVjdHVyZXMobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+
YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkpOwotICAgIH0gZWxzZQotICAgICAgICBkZXNj
cmlwdGlvbi0+c2V0RGlzcGxheVR5cGVOYW1lKGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNl
dC0+ZGlzcGxheU5hbWUoKSk7Ci0KLSAgICBkZXNjcmlwdGlvbi0+c2V0TG9jYWxQcmltaXRpdmVU
eXBlTmFtZXMobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5hbGxQcmltaXRpdmVUeXBl
TmFtZXMoKSk7Ci0gICAgZGVzY3JpcHRpb24tPnNldExvY2FsU3RydWN0dXJlcyhsb2NhdGlvbi0+
bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucygpKTsKLX0K
LQotc3RhdGljIGJvb2wgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQotewot
ICAgIGlmIChkZXNjcmlwdG9yID09IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlv
blJldHVybiAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IEhpZ2hGaWRlbGl0eVJl
dHVyblN0YXRlbWVudCkgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChkZXNjcmlw
dG9yID09IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwgJiYgbG9jYXRpb24tPm1f
Z2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQpICAKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVR5cGVMb2NhdGlvbiog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGlu
dHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3Ip
Ci17Ci0gICAgUXVlcnlLZXkgcXVlcnlLZXkoc291cmNlSUQsIGRpdm90KTsKLSAgICBhdXRvIGl0
ZXIgPSBtX3F1ZXJ5Q2FjaGUuZmluZChxdWVyeUtleSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV9xdWVy
eUNhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7Ci0KLSAgICBpZiAoIW1f
ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmhhc0V4ZWN1dGVkQXRPZmZzZXQoc291cmNlSUQsIGRp
dm90KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQobV9idWNrZXRNYXAu
Y29udGFpbnMoc291cmNlSUQpKTsKLQotICAgIFZlY3RvcjxUeXBlTG9jYXRpb24qPiYgYnVja2V0
ID0gbV9idWNrZXRNYXAuZmluZChzb3VyY2VJRCktPnZhbHVlOwotICAgIFR5cGVMb2NhdGlvbiog
YmVzdE1hdGNoID0gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBkaXN0YW5jZSA9IFVJTlRfTUFYOyAv
LyBCZWNhdXNlIGFzc2lnbm1lbnRzIG1heSBiZSBuZXN0ZWQsIG1ha2Ugc3VyZSB3ZSBmaW5kIHRo
ZSBjbG9zZXN0IGVuY2xvc2luZyBhc3NpZ25tZW50IHRvIHRoaXMgY2hhcmFjdGVyIG9mZnNldC4K
LSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGJ1Y2tldC5zaXplKCk7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGJ1Y2tldC5hdChpKTsKLSAg
ICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0
aW9uUmV0dXJuICYmIGRlc2NyaXB0b3JNYXRjaGVzVHlwZUxvY2F0aW9uKGRlc2NyaXB0b3IsIGxv
Y2F0aW9uKSAmJiBsb2NhdGlvbi0+bV9kaXZvdEZvckZ1bmN0aW9uT2Zmc2V0SWZSZXR1cm5TdGF0
ZW1lbnQgPT0gZGl2b3QpCi0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb247Ci0KLSAgICAgICAg
aWYgKGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0gZGl2b3QgJiYgZGl2b3QgPD0gbG9jYXRpb24t
Pm1fZGl2b3RFbmQgJiYgbG9jYXRpb24tPm1fZGl2b3RFbmQgLSBsb2NhdGlvbi0+bV9kaXZvdFN0
YXJ0IDw9IGRpc3RhbmNlICYmIGRlc2NyaXB0b3JNYXRjaGVzVHlwZUxvY2F0aW9uKGRlc2NyaXB0
b3IsIGxvY2F0aW9uKSkgewotICAgICAgICAgICAgZGlzdGFuY2UgPSBsb2NhdGlvbi0+bV9kaXZv
dEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQ7Ci0gICAgICAgICAgICBiZXN0TWF0Y2ggPSBs
b2NhdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChiZXN0TWF0Y2gpCi0gICAgICAg
IG1fcXVlcnlDYWNoZS5zZXQocXVlcnlLZXksIGJlc3RNYXRjaCk7Ci0gICAgLy8gRklYTUU6IEJl
c3RNYXRjaCBzaG91bGQgbmV2ZXIgYmUgbnVsbCBwYXN0IHRoaXMgcG9pbnQuIFRoaXMgZG9lc24n
dCBob2xkIGN1cnJlbnRseSBiZWNhdXNlIHdlIGlnbm9yZSB2YXIgYXNzaWdubWVudHMgd2hlbiBj
b2RlIGNvbnRhaW5zIGV2YWwvV2l0aCAoVmFySW5qZWN0aW9uKS4gCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE4NAotICAgIHJldHVybiBiZXN0TWF0
Y2g7Ci19Ci0KLX0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2aXNp
b24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcl9oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCi0KLSNp
bmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUu
aCIKLSNpbmNsdWRlICJUeXBlTG9jYXRpb25DYWNoZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFR5cGVCdWlsZGVyICB7IG5h
bWVzcGFjZSBSdW50aW1lIHsKLWNsYXNzIFR5cGVEZXNjcmlwdGlvbjsKLX19fQotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgVHlwZUxvY2F0aW9uOwotCi1zdHJ1Y3QgUXVlcnlLZXkgewotICAg
IFF1ZXJ5S2V5KCkKLSAgICAgICAgOiBtX3NvdXJjZUlEKDApCi0gICAgICAgICwgbV9kaXZvdCgw
KQotICAgIHsgfQotCi0gICAgUXVlcnlLZXkoaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGRp
dm90KQotICAgICAgICA6IG1fc291cmNlSUQoc291cmNlSUQpCi0gICAgICAgICwgbV9kaXZvdChk
aXZvdCkKLSAgICB7IH0KLQotICAgIFF1ZXJ5S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUlEKElOVFBUUl9NQVgpCi0gICAgICAgICwgbV9kaXZv
dChVSU5UX01BWCkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEID09IElOVFBUUl9NQVggJiYgbV9kaXZvdCA9PSBV
SU5UX01BWDsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWVyeUtleSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlSUQgPT0gb3RoZXIubV9zb3VyY2VJRCAmJiBtX2Rpdm90ID09
IG90aGVyLm1fZGl2b3Q7IH0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VJRCArIG1fZGl2b3Q7IH0KLQotICAgIGludHB0cl90IG1fc291cmNlSUQ7Ci0gICAgdW5z
aWduZWQgbV9kaXZvdDsKLX07Ci0KLXN0cnVjdCBRdWVyeUtleUhhc2ggewotICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFF1ZXJ5S2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBRdWVyeUtleSYgYSwgY29uc3QgUXVlcnlLZXkm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLX0gLy9uYW1lc3BhY2UgSlNDCi0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlF1ZXJ5S2V5PiB7Ci0gICAgdHlw
ZWRlZiBKU0M6OlF1ZXJ5S2V5SGFzaCBIYXNoOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc2hUcmFpdHM7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UXVl
cnlLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UXVlcnlLZXk+IHsgfTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFR5cGVQcm9maWxlclNl
YXJjaERlc2NyaXB0b3IgewotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwg
PSAxLAotICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiA9IDIK
LX07Ci0KLWNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciB7Ci1wdWJsaWM6Ci0gICAgdm9p
ZCBsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qKTsKLSAgICB2b2lkIGdldFR5
cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNj
cmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mKTsK
LSAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiopOwotICAgIEZ1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkgeyByZXR1cm4gJm1f
ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9Ci0gICAgVHlwZUxvY2F0aW9uQ2FjaGUqIHR5cGVM
b2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0aW9uQ2FjaGU7IH0KLSAgICAKLXBy
aXZhdGU6Ci0gICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGlu
dHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3Ip
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgVmVjdG9yPFR5cGVMb2NhdGlvbio+PiBT
b3VyY2VJRFRvTG9jYXRpb25CdWNrZXRNYXA7Ci0gICAgU291cmNlSURUb0xvY2F0aW9uQnVja2V0
TWFwIG1fYnVja2V0TWFwOwotICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSBtX2Z1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25DYWNoZSBtX3R5cGVMb2NhdGlvbkNh
Y2hlOwotICAgIHR5cGVkZWYgSGFzaE1hcDxRdWVyeUtleSwgVHlwZUxvY2F0aW9uKj4gVHlwZUxv
Y2F0aW9uUXVlcnlDYWNoZTsKLSAgICBUeXBlTG9jYXRpb25RdWVyeUNhY2hlIG1fcXVlcnlDYWNo
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy9IaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
cmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyArMjc0LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFy
KiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAogICAg
IHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkgXAogICAgIHYoYm9vbCwgbG9nSGVh
cFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCi0gICAgdihib29sLCBwcm9maWxlVHlwZXNXaXRo
SGlnaEZpZGVsaXR5LCBmYWxzZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlVHlwZVByb2ZpbGVyLCBm
YWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUV4Y2VwdGlvbkZ1enosIGZhbHNlKSBc
CiAgICAgdih1bnNpZ25lZCwgZmlyZUV4Y2VwdGlvbkZ1enpBdCwgMCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDE3Mjgx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6
Y2xvbmVDYXB0dXJlZE4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFN5bWJvbFRhYmxl
OjpwcmVwYXJlRm9ySGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJikKK3ZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImKQogewogICAgIGlmIChtX3R5cGVQcm9maWxpbmdSYXJlRGF0
YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgU3ltYm9sVGFibGU6
OnByZXBhcmVGb3JIaWdoRmlkZWxpdHkKICAgICBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGluZ1JhcmVEYXRhPigpOwogCiAgICAgZm9yIChhdXRv
IGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewotICAgICAgICBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5z
ZXQoaXRlci0+a2V5LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CisgICAg
ICAgIG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLnNldChpdGVyLT5rZXks
IFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsKICAgICAgICAgbV90eXBlUHJv
ZmlsaW5nUmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLnNldChpdGVyLT52YWx1ZS5n
ZXRJbmRleCgpLCBpdGVyLT5rZXkpOwogICAgIH0KIH0KQEAgLTIwNywxMCArMjA3LDEwIEBAIEds
b2JhbFZhcmlhYmxlSUQgU3ltYm9sVGFibGU6OnVuaXF1ZUlERm8KICAgICBhdXRvIGl0ZXIgPSBt
X3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5maW5kKGtleSk7CiAgICAgYXV0
byBlbmQgPSBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5lbmQoKTsKICAg
ICBpZiAoaXRlciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzOworICAgICAgICByZXR1cm4gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIAog
ICAgIEdsb2JhbFZhcmlhYmxlSUQgaWQgPSBpdGVyLT52YWx1ZTsKLSAgICBpZiAoaWQgPT0gSGln
aEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsKKyAgICBpZiAoaWQgPT0gVHlwZVBy
b2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsKICAgICAgICAgaWQgPSB2bS5nZXROZXh0
VW5pcXVlVmFyaWFibGVJRCgpOwogICAgICAgICBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YS0+bV91
bmlxdWVJRE1hcC5zZXQoa2V5LCBpZCk7CiAgICAgICAgIG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRh
LT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGtleSwgVHlwZVNldDo6Y3JlYXRlKCkpOyAvLyBNYWtl
IGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGlzIGNvcnJlc3BvbmRpbmcgSUQuCkBAIC0yMjYs
NyArMjI2LDcgQEAgR2xvYmFsVmFyaWFibGVJRCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGbwogICAg
IGF1dG8gaXRlciA9IG1fdHlwZVByb2ZpbGluZ1JhcmVEYXRhLT5tX3JlZ2lzdGVyVG9WYXJpYWJs
ZU1hcC5maW5kKHJlZ2lzdGVySW5kZXgpOwogICAgIGF1dG8gZW5kID0gbV90eXBlUHJvZmlsaW5n
UmFyZURhdGEtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLmVuZCgpOwogICAgIGlmIChpdGVyID09
IGVuZCkKLSAgICAgICAgcmV0dXJuIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHM7CisgICAg
ICAgIHJldHVybiBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzOwogCiAgICAgcmV0dXJuIHVu
aXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5nZXQoKSwgdm0pOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lv
biAxNzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgcHVibGljOgogICAgIAogICAgIFN5
bWJvbFRhYmxlKiBjbG9uZUNhcHR1cmVkTmFtZXMoVk0mKTsKIAotICAgIHZvaWQgcHJlcGFyZUZv
ckhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYpOwor
ICAgIHZvaWQgcHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlci5jcHAJKHJldmlzaW9uIDE3MjgxMSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDoxNzI4MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJU
eXBlTG9jYXRpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKKwordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmxvZ1R5cGVz
Rm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFi
bGVJRCA9PSBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPyBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gOiBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9y
bWFsOworCisgICAgZGF0YUxvZ0YoIltTdGFydCwgRW5kXTo6WyV1LCAldV1cbiIsIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKKworICAgIGlmIChmaW5kTG9j
YXRpb24obG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fc291cmNlSUQsIGRlc2Ny
aXB0b3IpKQorICAgICAgICBkYXRhTG9nKCJcdFx0W0VudHJ5IElTIGluIFN5c3RlbV1cbiIpOwor
ICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZygiXHRcdFtFbnRyeSBJUyBOT1QgaW4gc3lzdGVtXVxu
Iik7CisKKyAgICBkYXRhTG9nKCJcdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9
PSBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPyAiW1JldHVybiBTdGF0ZW1lbnRdIiA6ICJb
Tm9ybWFsIFN0YXRlbWVudF0iLCAiXG4iKTsKKworICAgIGRhdGFMb2coIlx0XHQjTG9jYWwjXG5c
dFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5zZWVuVHlwZXMoKS5yZXBsYWNl
KCJcbiIsICJcblx0XHQiKSwgIlxuIik7CisgICAgaWYgKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQpCisgICAgICAgIGRhdGFMb2coIlx0XHQjR2xvYmFsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2ds
b2JhbFR5cGVTZXQtPnNlZW5UeXBlcygpLnJlcGxhY2UoIlxuIiwgIlxuXHRcdCIpLCAiXG4iKTsK
K30KKwordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKFR5
cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3RhcnQ6JXUsIGRpdm90RW5kOiV1XG4i
LCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZvdEVuZCk7CisKKyAgICBp
ZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5tX3NvdXJjZUlEKSkgeworICAgICAg
ICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4gYnVja2V0OworICAgICAgICBtX2J1Y2tldE1hcC5zZXQo
bG9jYXRpb24tPm1fc291cmNlSUQsIGJ1Y2tldCk7CisgICAgfQorCisgICAgVmVjdG9yPFR5cGVM
b2NhdGlvbio+JiBidWNrZXQgPSBtX2J1Y2tldE1hcC5maW5kKGxvY2F0aW9uLT5tX3NvdXJjZUlE
KS0+dmFsdWU7CisgICAgYnVja2V0LmFwcGVuZChsb2NhdGlvbik7Cit9CisKK3ZvaWQgSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0
b3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCB1bnNpZ25lZCBkaXZv
dCwgaW50cHRyX3Qgc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpUeXBlRGVzY3JpcHRpb24+JiBkZXNjcmlwdGlvbikKK3sKKyAgICBUeXBlTG9jYXRpb24q
IGxvY2F0aW9uID0gZmluZExvY2F0aW9uKGRpdm90LCBzb3VyY2VJRCwgZGVzY3JpcHRvcik7Cisg
ICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxvY2F0aW9uLT5t
X2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlk
ZWxpdHlOb0dsb2JhbElERXhpc3RzKSB7CisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXREaXNwbGF5
VHlwZU5hbWUobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+ZGlzcGxheU5hbWUoKSk7CisgICAg
ICAgIGRlc2NyaXB0aW9uLT5zZXRHbG9iYWxQcmltaXRpdmVUeXBlTmFtZXMobG9jYXRpb24tPm1f
Z2xvYmFsVHlwZVNldC0+YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkpOworICAgICAgICBkZXNjcmlw
dGlvbi0+c2V0R2xvYmFsU3RydWN0dXJlcyhsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hbGxT
dHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGRlc2NyaXB0
aW9uLT5zZXREaXNwbGF5VHlwZU5hbWUobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5k
aXNwbGF5TmFtZSgpKTsKKworICAgIGRlc2NyaXB0aW9uLT5zZXRMb2NhbFByaW1pdGl2ZVR5cGVO
YW1lcyhsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFsbFByaW1pdGl2ZVR5cGVOYW1l
cygpKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0TG9jYWxTdHJ1Y3R1cmVzKGxvY2F0aW9uLT5tX2lu
c3RydWN0aW9uVHlwZVNldC0+YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkpOworfQorCitz
dGF0aWMgYm9vbCBkZXNjcmlwdG9yTWF0Y2hlc1R5cGVMb2NhdGlvbihUeXBlUHJvZmlsZXJTZWFy
Y2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAg
aWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0
dXJuICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5UmV0dXJu
U3RhdGVtZW50KSAgCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGRlc2NyaXB0b3Ig
PT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCAmJiBsb2NhdGlvbi0+bV9nbG9i
YWxWYXJpYWJsZUlEICE9IEhpZ2hGaWRlbGl0eVJldHVyblN0YXRlbWVudCkgIAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworVHlwZUxvY2F0aW9uKiBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbih1bnNpZ25lZCBkaXZvdCwgaW50cHRy
X3Qgc291cmNlSUQsIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRvcikKK3sK
KyAgICBRdWVyeUtleSBxdWVyeUtleShzb3VyY2VJRCwgZGl2b3QpOworICAgIGF1dG8gaXRlciA9
IG1fcXVlcnlDYWNoZS5maW5kKHF1ZXJ5S2V5KTsKKyAgICBpZiAoaXRlciAhPSBtX3F1ZXJ5Q2Fj
aGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKworICAgIGlmICghbV9mdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaGFzRXhlY3V0ZWRBdE9mZnNldChzb3VyY2VJRCwgZGl2b3Qp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChtX2J1Y2tldE1hcC5jb250
YWlucyhzb3VyY2VJRCkpOworCisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBt
X2J1Y2tldE1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7CisgICAgVHlwZUxvY2F0aW9uKiBiZXN0
TWF0Y2ggPSBudWxscHRyOworICAgIHVuc2lnbmVkIGRpc3RhbmNlID0gVUlOVF9NQVg7IC8vIEJl
Y2F1c2UgYXNzaWdubWVudHMgbWF5IGJlIG5lc3RlZCwgbWFrZSBzdXJlIHdlIGZpbmQgdGhlIGNs
b3Nlc3QgZW5jbG9zaW5nIGFzc2lnbm1lbnQgdG8gdGhpcyBjaGFyYWN0ZXIgb2Zmc2V0LgorICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYnVja2V0LnNpemUoKTsgaSA8IHNpemU7IGkrKykg
eworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gYnVja2V0LmF0KGkpOworICAgICAg
ICBpZiAoZGVzY3JpcHRvciA9PSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25S
ZXR1cm4gJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwgbG9jYXRp
b24pICYmIGxvY2F0aW9uLT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVu
dCA9PSBkaXZvdCkKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjsKKworICAgICAgICBpZiAo
bG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXZvdCAmJiBkaXZvdCA8PSBsb2NhdGlvbi0+bV9k
aXZvdEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQg
PD0gZGlzdGFuY2UgJiYgZGVzY3JpcHRvck1hdGNoZXNUeXBlTG9jYXRpb24oZGVzY3JpcHRvciwg
bG9jYXRpb24pKSB7CisgICAgICAgICAgICBkaXN0YW5jZSA9IGxvY2F0aW9uLT5tX2Rpdm90RW5k
IC0gbG9jYXRpb24tPm1fZGl2b3RTdGFydDsKKyAgICAgICAgICAgIGJlc3RNYXRjaCA9IGxvY2F0
aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJlc3RNYXRjaCkKKyAgICAgICAgbV9x
dWVyeUNhY2hlLnNldChxdWVyeUtleSwgYmVzdE1hdGNoKTsKKyAgICAvLyBGSVhNRTogQmVzdE1h
dGNoIHNob3VsZCBuZXZlciBiZSBudWxsIHBhc3QgdGhpcyBwb2ludC4gVGhpcyBkb2Vzbid0IGhv
bGQgY3VycmVudGx5IGJlY2F1c2Ugd2UgaWdub3JlIHZhciBhc3NpZ25tZW50cyB3aGVuIGNvZGUg
Y29udGFpbnMgZXZhbC9XaXRoIChWYXJJbmplY3Rpb24pLiAKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTg0CisgICAgcmV0dXJuIGJlc3RNYXRjaDsK
K30KKworfSAvL25hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKIAogI2luY2x1
ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgi
CkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CiAKLXZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpsb2dUeXBl
c0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQordm9pZCBUeXBlUHJvZmls
ZXI6OmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCiB7Ci0g
ICAgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gbG9jYXRpb24tPm1f
Z2xvYmFsVmFyaWFibGVJRCA9PSBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPyBUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gOiBUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yTm9ybWFsOworICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3Jp
cHRvciA9IGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gVHlwZVByb2ZpbGVyUmV0dXJu
U3RhdGVtZW50ID8gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuIDog
VHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbDsKIAogICAgIGRhdGFMb2dGKCJbU3Rh
cnQsIEVuZF06OlsldSwgJXVdXG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+
bV9kaXZvdEVuZCk7CiAKQEAgLTQ0LDE0ICs0NCwxNCBAQCB2b2lkIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlcjo6bG9nVHlwZXNGCiAgICAgZWxzZQogICAgICAgICBkYXRhTG9nKCJcdFx0W0VudHJ5
IElTIE5PVCBpbiBzeXN0ZW1dXG4iKTsKIAotICAgIGRhdGFMb2coIlx0XHQiLCBsb2NhdGlvbi0+
bV9nbG9iYWxWYXJpYWJsZUlEID09IEhpZ2hGaWRlbGl0eVJldHVyblN0YXRlbWVudCA/ICJbUmV0
dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwgU3RhdGVtZW50XSIsICJcbiIpOworICAgIGRhdGFM
b2coIlx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQcm9maWxlclJl
dHVyblN0YXRlbWVudCA/ICJbUmV0dXJuIFN0YXRlbWVudF0iIDogIltOb3JtYWwgU3RhdGVtZW50
XSIsICJcbiIpOwogCiAgICAgZGF0YUxvZygiXHRcdCNMb2NhbCNcblx0XHQiLCBsb2NhdGlvbi0+
bV9pbnN0cnVjdGlvblR5cGVTZXQtPnNlZW5UeXBlcygpLnJlcGxhY2UoIlxuIiwgIlxuXHRcdCIp
LCAiXG4iKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKICAgICAgICAgZGF0
YUxvZygiXHRcdCNHbG9iYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+c2Vl
blR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOwogfQogCi12b2lkIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2Nh
dGlvbikKK3ZvaWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24q
IGxvY2F0aW9uKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nRigiUmVnaXN0
ZXJpbmcgbG9jYXRpb246OiBkaXZvdFN0YXJ0OiV1LCBkaXZvdEVuZDoldVxuIiwgbG9jYXRpb24t
Pm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2b3RFbmQpOwpAQCAtNjUsMTMgKzY1LDEzIEBA
IHZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjppbnNlcnROZXcKICAgICBidWNrZXQuYXBw
ZW5kKGxvY2F0aW9uKTsKIH0KIAotdm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5
cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNj
cmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mIGRl
c2NyaXB0aW9uKQordm9pZCBUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNl
dEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIHVu
c2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mIGRlc2NyaXB0aW9uKQogewogICAgIFR5
cGVMb2NhdGlvbiogbG9jYXRpb24gPSBmaW5kTG9jYXRpb24oZGl2b3QsIHNvdXJjZUlELCBkZXNj
cmlwdG9yKTsKICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
bG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlE
ICE9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpIHsKKyAgICBpZiAobG9jYXRpb24tPm1f
Z2xvYmFsVHlwZVNldCAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9IFR5cGVQcm9m
aWxlck5vR2xvYmFsSURFeGlzdHMpIHsKICAgICAgICAgZGVzY3JpcHRpb24tPnNldERpc3BsYXlU
eXBlTmFtZShsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5kaXNwbGF5TmFtZSgpKTsKICAgICAg
ICAgZGVzY3JpcHRpb24tPnNldEdsb2JhbFByaW1pdGl2ZVR5cGVOYW1lcyhsb2NhdGlvbi0+bV9n
bG9iYWxUeXBlU2V0LT5hbGxQcmltaXRpdmVUeXBlTmFtZXMoKSk7CiAgICAgICAgIGRlc2NyaXB0
aW9uLT5zZXRHbG9iYWxTdHJ1Y3R1cmVzKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFsbFN0
cnVjdHVyZVJlcHJlc2VudGF0aW9ucygpKTsKQEAgLTg0LDE2ICs4NCwxNiBAQCB2b2lkIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGCiAKIHN0YXRpYyBib29sIGRlc2NyaXB0b3JN
YXRjaGVzVHlwZUxvY2F0aW9uKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRv
ciwgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKIHsKLSAgICBpZiAoZGVzY3JpcHRvciA9PSBUeXBl
UHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gJiYgbG9jYXRpb24tPm1fZ2xv
YmFsVmFyaWFibGVJRCA9PSBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQpICAKKyAgICBpZiAo
ZGVzY3JpcHRvciA9PSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4g
JiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9PSBUeXBlUHJvZmlsZXJSZXR1cm5TdGF0
ZW1lbnQpICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZGVzY3JpcHRvciA9PSBU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZh
cmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50KSAgCisgICAgaWYgKGRlc2Ny
aXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCAmJiBsb2NhdGlvbi0+
bV9nbG9iYWxWYXJpYWJsZUlEICE9IFR5cGVQcm9maWxlclJldHVyblN0YXRlbWVudCkgIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVHlwZUxvY2F0aW9u
KiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbih1bnNpZ25lZCBkaXZvdCwg
aW50cHRyX3Qgc291cmNlSUQsIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgZGVzY3JpcHRv
cikKK1R5cGVMb2NhdGlvbiogVHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2
b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2Ny
aXB0b3IpCiB7CiAgICAgUXVlcnlLZXkgcXVlcnlLZXkoc291cmNlSUQsIGRpdm90KTsKICAgICBh
dXRvIGl0ZXIgPSBtX3F1ZXJ5Q2FjaGUuZmluZChxdWVyeUtleSk7CkBAIC0xMjYsNCArMTI2LDQg
QEAgVHlwZUxvY2F0aW9uKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OgogICAgIHJldHVybiBi
ZXN0TWF0Y2g7CiB9CiAKLX0gLy9uYW1lc3BhY2UgSlNDCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCShyZXZp
c2lvbiAxNzI4MTEpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOjE3MjgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXJfaAorI2RlZmluZSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaAor
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBUeXBlQnVpbGRlciAg
eyBuYW1lc3BhY2UgUnVudGltZSB7CitjbGFzcyBUeXBlRGVzY3JpcHRpb247Cit9fX0KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIFR5cGVMb2NhdGlvbjsKKworc3RydWN0IFF1ZXJ5S2V5IHsK
KyAgICBRdWVyeUtleSgpCisgICAgICAgIDogbV9zb3VyY2VJRCgwKQorICAgICAgICAsIG1fZGl2
b3QoMCkKKyAgICB7IH0KKworICAgIFF1ZXJ5S2V5KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25l
ZCBkaXZvdCkKKyAgICAgICAgOiBtX3NvdXJjZUlEKHNvdXJjZUlEKQorICAgICAgICAsIG1fZGl2
b3QoZGl2b3QpCisgICAgeyB9CisKKyAgICBRdWVyeUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VJRChJTlRQVFJfTUFYKQorICAgICAgICAsIG1f
ZGl2b3QoVUlOVF9NQVgpCisgICAgeyB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCA9PSBJTlRQVFJfTUFYICYmIG1fZGl2b3Qg
PT0gVUlOVF9NQVg7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXkmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEID09IG90aGVyLm1fc291cmNlSUQgJiYgbV9kaXZv
dCA9PSBvdGhlci5tX2Rpdm90OyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlSUQgKyBtX2Rpdm90OyB9CisKKyAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOworICAg
IHVuc2lnbmVkIG1fZGl2b3Q7Cit9OworCitzdHJ1Y3QgUXVlcnlLZXlIYXNoIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBRdWVyeUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgp
OyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUXVlcnlLZXkmIGEsIGNvbnN0IFF1ZXJ5
S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQwor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpRdWVyeUtleT4geworICAg
IHR5cGVkZWYgSlNDOjpRdWVyeUtleUhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OlF1ZXJ5S2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlF1ZXJ5S2V5PiB7IH07CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBUeXBlUHJvZmls
ZXJTZWFyY2hEZXNjcmlwdG9yIHsKKyAgICBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9y
bWFsID0gMSwKKyAgICBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4g
PSAyCit9OworCitjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgeworcHVibGljOgorICAg
IHZvaWQgbG9nVHlwZXNGb3JUeXBlTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CisgICAgdm9pZCBn
ZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNo
RGVzY3JpcHRvciBkZXNjcmlwdG9yLCB1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+
Jik7CisgICAgdm9pZCBpbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qKTsKKyAgICBGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUqIGZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpIHsgcmV0dXJu
ICZtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsgfQorICAgIFR5cGVMb2NhdGlvbkNhY2hlKiB0
eXBlTG9jYXRpb25DYWNoZSgpIHsgcmV0dXJuICZtX3R5cGVMb2NhdGlvbkNhY2hlOyB9CisgICAg
Citwcml2YXRlOgorICAgIFR5cGVMb2NhdGlvbiogZmluZExvY2F0aW9uKHVuc2lnbmVkIGRpdm90
LCBpbnRwdHJfdCBzb3VyY2VJRCwgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlw
dG9yKTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFZlY3RvcjxUeXBlTG9jYXRpb24q
Pj4gU291cmNlSURUb0xvY2F0aW9uQnVja2V0TWFwOworICAgIFNvdXJjZUlEVG9Mb2NhdGlvbkJ1
Y2tldE1hcCBtX2J1Y2tldE1hcDsKKyAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgbV9mdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGU7CisgICAgVHlwZUxvY2F0aW9uQ2FjaGUgbV90eXBlTG9jYXRp
b25DYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UXVlcnlLZXksIFR5cGVMb2NhdGlvbio+IFR5
cGVMb2NhdGlvblF1ZXJ5Q2FjaGU7CisgICAgVHlwZUxvY2F0aW9uUXVlcnlDYWNoZSBtX3F1ZXJ5
Q2FjaGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQ
cm9maWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTUgKzIzLDE1IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gK
LSNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKyNpZm5kZWYgVHlwZVByb2ZpbGVy
X2gKKyNkZWZpbmUgVHlwZVByb2ZpbGVyX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlv
bkNhY2hlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeyBuYW1lc3BhY2UgVHlwZUJ1aWxk
ZXIgIHsgbmFtZXNwYWNlIFJ1bnRpbWUgewogY2xhc3MgVHlwZURlc2NyaXB0aW9uOwpAQCAtNzEs
NyArNzEsNyBAQCBzdHJ1Y3QgUXVlcnlLZXlIYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi19IC8vbmFtZXNwYWNl
IEpTQworfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC05MiwxNiAr
OTIsMTYgQEAgZW51bSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIHsKICAgICBUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gPSAyCiB9OwogCi1jbGFzcyBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIgeworY2xhc3MgVHlwZVByb2ZpbGVyIHsKIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiopOwotICAgIHZvaWQg
Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3IgZGVzY3JpcHRvciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlE
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9u
PiYpOworICAgIHZvaWQgZ2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5
cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlw
dGlvbj4mKTsKICAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiopOwogICAg
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkgeyBy
ZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9CiAgICAgVHlwZUxvY2F0aW9uQ2Fj
aGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0aW9uQ2FjaGU7IH0K
ICAgICAKIHByaXZhdGU6Ci0gICAgVHlwZUxvY2F0aW9uKiBmaW5kTG9jYXRpb24odW5zaWduZWQg
ZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOworICAgIFR5cGVMb2NhdGlvbiogZmluZExvY2F0aW9uKHVuc2lnbmVkIGRpdm90
LCBpbnRwdHJfdCBzb3VyY2VJRCwgVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvcik7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBWZWN0b3I8VHlwZUxvY2F0aW9uKj4+IFNvdXJjZUlE
VG9Mb2NhdGlvbkJ1Y2tldE1hcDsKICAgICBTb3VyY2VJRFRvTG9jYXRpb25CdWNrZXRNYXAgbV9i
dWNrZXRNYXA7CiAgICAgRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlIG1fZnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlOwpAQCAtMTEyLDQgKzExMiw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCi0jZW5kaWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaAorI2VuZGlmIC8vIFR5
cGVQcm9maWxlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXJMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHAJKHJldmlzaW9uIDE3MjgxMSkJKGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcDoxNzI4MTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5o
IgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworCituYW1lc3BhY2UgSlNDIHsK
Kworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCit2b2lkIEhpZ2hGaWRlbGl0
eUxvZzo6aW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpCit7CisgICAgQVNTRVJUKCFtX2xvZ1N0
YXJ0UHRyKTsKKyAgICBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUgPSA1MDAwMDsKKyAgICBtX2xvZ1N0
YXJ0UHRyID0gbmV3IExvZ0VudHJ5W21faGlnaEZpZGVsaXR5TG9nU2l6ZV07CisgICAgbV9jdXJy
ZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOworICAgIG1fbG9nRW5kUHRyID0gbV9sb2dT
dGFydFB0ciArIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKK30KKworSGlnaEZpZGVsaXR5TG9nOjp+
SGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBkZWxldGVbXSBtX2xvZ1N0YXJ0UHRyOworfQorCit2
b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhTdHJpbmcgcmVhc29u
KQoreworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjon
IiwgcmVhc29uLCInIik7CisKKyAgICBkb3VibGUgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwor
ICAgIExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3RhcnRQdHI7CisgICAgSGFzaE1hcDxTdHJ1Y3R1
cmVJRCwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4gc2VlblNoYXBlczsKKyAgICB3aGlsZSAoZW50
cnkgIT0gbV9jdXJyZW50TG9nRW50cnlQdHIpIHsKKyAgICAgICAgU3RydWN0dXJlSUQgaWQgPSBl
bnRyeS0+c3RydWN0dXJlSUQ7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGU7
IAorICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZW50cnktPnZhbHVlOworICAgICAgICBpZiAoaWQp
IHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHNlZW5TaGFwZXMuZmluZChpZCk7CisgICAgICAg
ICAgICBpZiAoaXRlciA9PSBzZWVuU2hhcGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgc2hh
cGUgPSBIZWFwOjpoZWFwKHZhbHVlLmFzQ2VsbCgpKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChl
bnRyeS0+c3RydWN0dXJlSUQpLT50b1N0cnVjdHVyZVNoYXBlKHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBzZWVuU2hhcGVzLnNldChpZCwgc2hhcGUpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgc2hhcGUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFJ1
bnRpbWVUeXBlIHR5cGUgPSBUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKHZhbHVlKTsK
KyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGVudHJ5LT5sb2NhdGlvbjsKKyAgICAg
ICAgbG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKGxvY2F0aW9u
LT5tX2dsb2JhbFR5cGVTZXQpCisgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0
LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIGlkKTsKKyAgICAgICAgbG9jYXRpb24t
Pm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIGlk
KTsKKworICAgICAgICBlbnRyeSsrOworICAgIH0KKworICAgIG1fY3VycmVudExvZ0VudHJ5UHRy
ID0gbV9sb2dTdGFydFB0cjsKKworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRvdWJsZSBh
ZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICAgICAgZGF0YUxvZ0YoIiBQcm9jZXNzaW5nIHRo
ZSBsb2cgdG9vazogJyVmJyBtc1xuIiwgYWZ0ZXIgLSBiZWZvcmUpOworICAgIH0KK30KKworfSAv
L25hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQ
cm9maWxlckxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyTG9nLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlk
ZWxpdHlMb2cuaCIKKyNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKIAogI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC0zOCwyNCAr
MzgsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKIAotdm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2co
KQordm9pZCBUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQogewogICAgIEFTU0VSVCgh
bV9sb2dTdGFydFB0cik7Ci0gICAgbV9oaWdoRmlkZWxpdHlMb2dTaXplID0gNTAwMDA7Ci0gICAg
bV9sb2dTdGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2hpZ2hGaWRlbGl0eUxvZ1NpemVdOworICAg
IG1fbG9nU2l6ZSA9IDUwMDAwOworICAgIG1fbG9nU3RhcnRQdHIgPSBuZXcgTG9nRW50cnlbbV9s
b2dTaXplXTsKICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQdHI7Ci0gICAg
bV9sb2dFbmRQdHIgPSBtX2xvZ1N0YXJ0UHRyICsgbV9oaWdoRmlkZWxpdHlMb2dTaXplOworICAg
IG1fbG9nRW5kUHRyID0gbV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZTsKIH0KIAotSGlnaEZpZGVs
aXR5TG9nOjp+SGlnaEZpZGVsaXR5TG9nKCkKK1R5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxl
ckxvZygpCiB7CiAgICAgZGVsZXRlW10gbV9sb2dTdGFydFB0cjsKIH0KIAotdm9pZCBIaWdoRmlk
ZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coU3RyaW5nIHJlYXNvbikKK3ZvaWQgVHlw
ZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhTdHJpbmcgcmVhc29uKQogewogICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCIn
Iik7CisgICAgICAgIGRhdGFMb2coIlByb2Nlc3MgY2FsbGVyOiciLCByZWFzb24sICInIik7CiAK
ICAgICBkb3VibGUgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwogICAgIExvZ0VudHJ5KiBlbnRy
eSA9IG1fbG9nU3RhcnRQdHI7CkBAIC05MSw0ICs5MSw0IEBAIHZvaWQgSGlnaEZpZGVsaXR5TG9n
Ojpwcm9jZXNzSGlnaEZpZGVsaXQKICAgICB9CiB9CiAKLX0gLy9uYW1lc3BhY2UgSlNDCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQ
cm9maWxlckxvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5oCShyZXZpc2lvbiAxNzI4MTEpCShmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5oOjE3MjgxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBIaWdoRmlkZWxpdHlMb2dfaAorI2RlZmluZSBIaWdoRmlkZWxpdHlMb2dfaAor
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9CeXRlU3Bpbkxv
Y2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFR5cGVMb2NhdGlvbjsKKworY2xhc3Mg
SGlnaEZpZGVsaXR5TG9nIHsKKworcHVibGljOgorICAgIHN0cnVjdCBMb2dFbnRyeSB7CisgICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgVHlwZUxvY2F0aW9u
KiBsb2NhdGlvbjsgCisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOworCisgICAgICAg
IHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoTG9nRW50cnksIHN0cnVjdHVyZUlEKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90
IHZhbHVlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKExvZ0VudHJ5LCB2YWx1ZSk7
IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBsb2NhdGlvbk9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihMb2dFbnRyeSwgbG9jYXRpb24pOyB9CisgICAgfTsKKworCisgICAgSGln
aEZpZGVsaXR5TG9nKCkKKyAgICAgICAgOiBtX2xvZ1N0YXJ0UHRyKDApCisgICAgeworICAgICAg
ICBpbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCk7CisgICAgfQorCisgICAgfkhpZ2hGaWRlbGl0
eUxvZygpOworCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlY29yZFR5cGVJbmZvcm1hdGlvbkZv
ckxvY2F0aW9uKEpTVmFsdWUgdmFsdWUsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCisgICAgewor
ICAgICAgICBBU1NFUlQobV9sb2dTdGFydFB0cik7CisKKyAgICAgICAgbV9jdXJyZW50TG9nRW50
cnlQdHItPmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIG1fY3VycmVudExvZ0VudHJ5UHRy
LT52YWx1ZSA9IHZhbHVlOworICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ci0+c3RydWN0dXJl
SUQgPSAodmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSA6IDAp
OworICAgIAorICAgICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciArPSAxOworICAgICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50TG9nRW50cnlQdHIgPT0gbV9sb2dFbmRQdHIpKQorICAgICAgICAg
ICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiTG9nIEZ1bGwiKTsKKyAgICB9CisKKyAgICB2b2lk
IHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coU3RyaW5nKTsKKyAgICBMb2dFbnRyeSogbG9nRW5kUHRy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dFbmRQdHI7IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bG9nU3RhcnRPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSGlnaEZpZGVsaXR5TG9n
LCBtX2xvZ1N0YXJ0UHRyKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3QgY3VycmVudExvZ0VudHJ5
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEhpZ2hGaWRlbGl0eUxvZywgbV9jdXJy
ZW50TG9nRW50cnlQdHIpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplSGlnaEZp
ZGVsaXR5TG9nKCk7CisKKyAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemU7CisgICAg
TG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CisgICAgTG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5
UHRyOworICAgIExvZ0VudHJ5KiBtX2xvZ0VuZFB0cjsKK307CisKK30gLy9uYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvL0hpZ2hGaWRlbGl0eUxvZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaAkod29ya2luZyBjb3B5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE5ICsyNiwxOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEhpZ2hG
aWRlbGl0eUxvZ19oCi0jZGVmaW5lIEhpZ2hGaWRlbGl0eUxvZ19oCisjaWZuZGVmIFR5cGVQcm9m
aWxlckxvZ19oCisjZGVmaW5lIFR5cGVQcm9maWxlckxvZ19oCiAKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCi0jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0J5
dGVTcGluTG9jay5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVHlwZUxvY2F0aW9uOwog
Ci1jbGFzcyBIaWdoRmlkZWxpdHlMb2cgeworY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKIAogcHVi
bGljOgogICAgIHN0cnVjdCBMb2dFbnRyeSB7CkBAIC01MywxMyArNTMsMTMgQEAgcHVibGljOgog
ICAgIH07CiAKIAotICAgIEhpZ2hGaWRlbGl0eUxvZygpCisgICAgVHlwZVByb2ZpbGVyTG9nKCkK
ICAgICAgICAgOiBtX2xvZ1N0YXJ0UHRyKDApCiAgICAgewotICAgICAgICBpbml0aWFsaXplSGln
aEZpZGVsaXR5TG9nKCk7CisgICAgICAgIGluaXRpYWxpemVMb2coKTsKICAgICB9CiAKLSAgICB+
SGlnaEZpZGVsaXR5TG9nKCk7CisgICAgflR5cGVQcm9maWxlckxvZygpOwogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKEpTVmFsdWUgdmFs
dWUsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCiAgICAgewpAQCAtNzEsMjQgKzcxLDI0IEBAIHB1
YmxpYzoKICAgICAKICAgICAgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgKz0gMTsKICAgICAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudExvZ0VudHJ5UHRyID09IG1fbG9nRW5kUHRyKSkKLSAgICAg
ICAgICAgIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coIkxvZyBGdWxsIik7CisgICAgICAgICAgICBw
cm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxsIikpOwogICAgIH0KIAotICAg
IHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhTdHJpbmcpOworICAgIHZvaWQgcHJvY2Vzc0xv
Z0VudHJpZXMoU3RyaW5nKTsKICAgICBMb2dFbnRyeSogbG9nRW5kUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dFbmRQdHI7IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbG9nU3RhcnRPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSGlnaEZpZGVsaXR5TG9nLCBtX2xvZ1N0YXJ0UHRy
KTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3QgY3VycmVudExvZ0VudHJ5T2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEhpZ2hGaWRlbGl0eUxvZywgbV9jdXJyZW50TG9nRW50cnlQdHIp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBsb2dTdGFydE9mZnNldCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihUeXBlUHJvZmlsZXJMb2csIG1fbG9nU3RhcnRQdHIpOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBjdXJyZW50TG9nRW50cnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoVHlwZVByb2ZpbGVyTG9nLCBtX2N1cnJlbnRMb2dFbnRyeVB0cik7IH0KIAogcHJpdmF0ZToK
LSAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAgICB2b2lkIGluaXRpYWxp
emVMb2coKTsKIAotICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICB1bnNp
Z25lZCBtX2xvZ1NpemU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAgTG9nRW50
cnkqIG1fY3VycmVudExvZ0VudHJ5UHRyOwogICAgIExvZ0VudHJ5KiBtX2xvZ0VuZFB0cjsKIH07
CiAKLX0gLy9uYW1lc3BhY2UgSlNDCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vSGln
aEZpZGVsaXR5TG9nX2gKKyNlbmRpZiAvLyBUeXBlUHJvZmlsZXJMb2dfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2
IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5oIgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVt
ZW50YWxTd2VlcGVyLmgiCkBAIC04NCw2ICs4Miw4IEBACiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFj
dGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIlR5cGVQ
cm9maWxlckxvZy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
V2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0xOTMsNyArMTkz
LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9l
bmFibGVkUHJvZmlsZXIobnVsbHB0cikKICAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbmV4dFVuaXF1ZVZhcmlhYmxl
SUQoMSkKLSAgICAsIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3VudCgwKQor
ICAgICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKIHsKICAgICBpbnRlcnByZXRlciA9
IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJl
YWREYXRhKCkuc3RhY2soKTsKQEAgLTI4Niw4ICsyODYsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAgICAgbV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
cigpKTsKIAotICAgIGlmIChPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
Ci0gICAgICAgIGVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKTsKKyAgICBpZiAoT3B0
aW9uczo6ZW5hYmxlVHlwZVByb2ZpbGVyKCkpCisgICAgICAgIGVuYWJsZVR5cGVQcm9maWxlcigp
OwogfQogCiBWTTo6flZNKCkKQEAgLTg5OSwyOSArODk5LDI5IEBAIFR5cGVMb2NhdGlvbiogVk06
Om5leHRUeXBlTG9jYXRpb24oKSAKICAgICByZXR1cm4gbV90eXBlTG9jYXRpb25JbmZvLT5hZGQo
KTsgCiB9CiAKLWJvb2wgVk06OmVuYWJsZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKQorYm9v
bCBWTTo6ZW5hYmxlVHlwZVByb2ZpbGVyKCkKIHsKICAgICBib29sIG5lZWRzVG9SZWNvbXBpbGUg
PSBmYWxzZTsKLSAgICBpZiAoIW1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3Vu
dCkgewotICAgICAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPigpOwotICAgICAgICBtX2hpZ2hGaWRlbGl0eUxv
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaEZpZGVsaXR5TG9nPigpOworICAgIGlmICghbV90eXBl
UHJvZmlsZXJFbmFibGVkQ291bnQpIHsKKyAgICAgICAgbV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgbV90eXBlUHJvZmlsZXJMb2cgPSBz
dGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKTsKICAgICAgICAgbV90eXBlTG9jYXRp
b25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8VHlwZUxvY2F0aW9uPj4oKTsKICAgICAgICAg
bmVlZHNUb1JlY29tcGlsZSA9IHRydWU7CiAgICAgfQotICAgIG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0VuYWJsZWRDb3VudCsrOworICAgIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50Kys7
CiAKICAgICByZXR1cm4gbmVlZHNUb1JlY29tcGlsZTsKIH0KIAotYm9vbCBWTTo6ZGlzYWJsZUhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKQorYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigp
CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRW5hYmxl
ZENvdW50ID4gMCk7CisgICAgUkVMRUFTRV9BU1NFUlQobV90eXBlUHJvZmlsZXJFbmFibGVkQ291
bnQgPiAwKTsKIAogICAgIGJvb2wgbmVlZHNUb1JlY29tcGlsZSA9IGZhbHNlOwotICAgIG1faGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3VudC0tOwotICAgIGlmICghbV9oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nRW5hYmxlZENvdW50KSB7Ci0gICAgICAgIG1faGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLnJlc2V0KG51bGxwdHIpOwotICAgICAgICBtX2hpZ2hGaWRlbGl0eUxvZy5y
ZXNldChudWxscHRyKTsKKyAgICBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudC0tOworICAgIGlm
ICghbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQpIHsKKyAgICAgICAgbV90eXBlUHJvZmlsZXIu
cmVzZXQobnVsbHB0cik7CisgICAgICAgIG1fdHlwZVByb2ZpbGVyTG9nLnJlc2V0KG51bGxwdHIp
OwogICAgICAgICBtX3R5cGVMb2NhdGlvbkluZm8ucmVzZXQobnVsbHB0cik7CiAgICAgICAgIG5l
ZWRzVG9SZWNvbXBpbGUgPSB0cnVlOwogICAgIH0KQEAgLTkyOSwxMyArOTI5LDEzIEBAIGJvb2wg
Vk06OmRpc2FibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW4KICAgICByZXR1cm4gbmVlZHNUb1Jl
Y29tcGlsZTsKIH0KIAotdm9pZCBWTTo6ZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCkK
K3ZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRhKCkKIHsKLSAgICBpZiAoIWlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgaWYgKCF0eXBlUHJvZmlsZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlM
b2coIlZNIER1bXAgVHlwZXMiKTsKLSAgICBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIqIHByb2Zp
bGVyID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7CisgICAgdHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiVk0gRHVtcCBUeXBlcyIpKTsK
KyAgICBUeXBlUHJvZmlsZXIqIHByb2ZpbGVyID0gbV90eXBlUHJvZmlsZXIuZ2V0KCk7CiAgICAg
Zm9yIChCYWc8VHlwZUxvY2F0aW9uPjo6aXRlcmF0b3IgaXRlciA9IG1fdHlwZUxvY2F0aW9uSW5m
by0+YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2Nh
dGlvbiA9ICppdGVyOwogICAgICAgICBwcm9maWxlci0+bG9nVHlwZXNGb3JUeXBlTG9jYXRpb24o
bG9jYXRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAx
NzI4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw4ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvbW1vbklk
ZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBIYW5kbGVTdGFjazsK
LSAgICBjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7Ci0gICAgY2xhc3MgSGlnaEZpZGVs
aXR5TG9nOworICAgIGNsYXNzIFR5cGVQcm9maWxlcjsKKyAgICBjbGFzcyBUeXBlUHJvZmlsZXJM
b2c7CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTQ5NywxMyArNDk3LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJs
ZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCi0gICAgICAgIGJv
b2wgaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSB7IHJldHVybiAhIW1faGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOyB9Ci0gICAgICAgIGJvb2wgZW5hYmxlSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZygpOwotICAgICAgICBib29sIGRpc2FibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKCk7Ci0gICAgICAgIEhpZ2hGaWRlbGl0eUxvZyogaGlnaEZpZGVsaXR5TG9nKCkgeyByZXR1
cm4gbV9oaWdoRmlkZWxpdHlMb2cuZ2V0KCk7IH0KLSAgICAgICAgSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyKiBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5nZXQoKTsgfQorICAgICAgICBib29sIGVuYWJsZVR5cGVQcm9maWxlcigp
OworICAgICAgICBib29sIGRpc2FibGVUeXBlUHJvZmlsZXIoKTsKKyAgICAgICAgVHlwZVByb2Zp
bGVyTG9nKiB0eXBlUHJvZmlsZXJMb2coKSB7IHJldHVybiBtX3R5cGVQcm9maWxlckxvZy5nZXQo
KTsgfQorICAgICAgICBUeXBlUHJvZmlsZXIqIHR5cGVQcm9maWxlcigpIHsgcmV0dXJuIG1fdHlw
ZVByb2ZpbGVyLmdldCgpOyB9CiAgICAgICAgIFR5cGVMb2NhdGlvbiogbmV4dFR5cGVMb2NhdGlv
bigpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBIaWdoRmlkZWxpdHlQcm9m
aWxpbmdUeXBlcygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBUeXBlUHJv
ZmlsZXJEYXRhKCk7CiAgICAgICAgIEdsb2JhbFZhcmlhYmxlSUQgZ2V0TmV4dFVuaXF1ZVZhcmlh
YmxlSUQoKSB7IHJldHVybiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKys7IH0KIAogICAgIHByaXZh
dGU6CkBAIC01NTQsMTAgKzU1MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRy
PEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CiAgICAgICAgIFJlZkNv
dW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dFNldHM7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+
IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGln
aEZpZGVsaXR5TG9nPiBtX2hpZ2hGaWRlbGl0eUxvZzsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFR5cGVQcm9maWxlcj4gbV90eXBlUHJvZmlsZXI7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlUHJvZmlsZXJMb2c+IG1fdHlwZVByb2ZpbGVyTG9nOwogICAgICAgICBHbG9iYWxWYXJpYWJs
ZUlEIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQ7Ci0gICAgICAgIHVuc2lnbmVkIG1faGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZ0VuYWJsZWRDb3VudDsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlUHJv
ZmlsZXJFbmFibGVkQ291bnQ7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWc8VHlwZUxvY2F0
aW9uPj4gbV90eXBlTG9jYXRpb25JbmZvOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwkocmV2aXNpb24gMTcyODExKQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA4LTE5ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nIHZhcmlhYmxlcyBmb3IgbW9yZSBjbGFyaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU4OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYSByZWZlcmVuY2UgaW4gYSBj
b21tZW50IHRvIGEgSmF2YVNjcmlwdENvcmUgZmlsZSB0byBpdHMgCisgICAgICAgIG5ld2x5IHJl
bmFtZWQgdmFyaWFudC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5
bnRheFRyZWUuanM6CisKIDIwMTQtMDgtMTggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNlIGFuIGluc3BlY3RvciBBYnN0
cmFjdCBTeW50YXggVHJlZS4KSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCShyZXZp
c2lvbiAxNzI4MTEpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU2NyaXB0U3ludGF4VHJlZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGZ1bmN0aW9uCiAgICAgfQogfTsKIAotLy8g
VGhpcyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggYW4gZW51bSBpbiBKYXZhU2NpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKKy8vIFRoaXMgc2hvdWxkIGJlIGtl
cHQgaW4gc3luYyB3aXRoIGFuIGVudW0gaW4gSmF2YVNjaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlci5oCiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5UeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yID0gewogICAgIE5vcm1hbEV4cHJlc3Npb246IDEsCiAgICAgRnVuY3Rpb25SZXR1
cm46IDIK
</data>

          </attachment>
      

    </bug>

</bugzilla>