<?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>126087</bug_id>
          
          <creation_ts>2013-12-20 15:04:38 -0800</creation_ts>
          <short_desc>AudioSessionManager should be MediaSessionManager</short_desc>
          <delta_ts>2013-12-23 10:20:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>962066</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-20 15:04:38 -0800</bug_when>
    <thetext>AudioSessionManager tracks Audio, Video, and WebAudio instances so it should be a MediaSessionManager instead. 

Some platforms may need to manage other aspects of media playback, eg. limiting the number instances that can play simultaneously, when a media is allowed to play, etc, it should be refactored so it is possible for the session manager to inform clients of state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962162</commentid>
    <comment_count>1</comment_count>
      <attachid>219825</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-20 18:38:55 -0800</bug_when>
    <thetext>Created attachment 219825
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962163</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-20 18:40:49 -0800</bug_when>
    <thetext>Attachment 219825 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/platform/audio/AudioSessionListener.h&apos;, u&apos;Source/WebCore/platform/audio/AudioSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/AudioSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.cpp&apos;, u&apos;Source/WebCore/platform/audio/MediaSessionManager.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioDestinationMac.h&apos;, u&apos;Source/WebCore/platform/audio/mac/AudioSessionManagerMac.cpp&apos;, u&apos;Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/audio/MediaSessionManager.cpp:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/audio/MediaSessionManager.cpp:78:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 10 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>962171</commentid>
    <comment_count>3</comment_count>
      <attachid>219827</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-20 18:52:09 -0800</bug_when>
    <thetext>Created attachment 219827
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962493</commentid>
    <comment_count>4</comment_count>
      <attachid>219827</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-12-23 09:51:08 -0800</bug_when>
    <thetext>Comment on attachment 219827
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962504</commentid>
    <comment_count>5</comment_count>
      <attachid>219827</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-23 10:20:41 -0800</bug_when>
    <thetext>Comment on attachment 219827
Updated patch

Clearing flags on attachment: 219827

Committed r161000: &lt;http://trac.webkit.org/changeset/161000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962505</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-23 10:20:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219825</attachid>
            <date>2013-12-20 18:38:55 -0800</date>
            <delta_ts>2013-12-20 18:52:09 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_8.txt</filename>
            <type>text/plain</type>
            <size>42455</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTEyLTIwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEF1ZGlvU2Vzc2lvbk1h
bmFnZXIgc2hvdWxkIGJlIE1lZGlhU2Vzc2lvbk1hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjA4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IENoYW5nZSBmaWxlIG5hbWVzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgpIHRha2VzIGEgY2xpZW50Cisg
ICAgICAgICAgICBpbnRlcmZhY2UgaW5zdGVhZCBvZiB0aGUgbWVkaWEgdHlwZS4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmg6IEluY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPi4KKyAgICAg
ICAgCisgICAgICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuKiAtPiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LioKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1h
bmFnZXIuY3BwLgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUpOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpNZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW4pOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjp+TWVkaWFTZXNzaW9uTWFu
YWdlclRva2VuKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIp
OgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcik6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y291bnQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkVG9rZW4p
OgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlVG9rZW4pOgorICAgICAgICAo
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuaC4KKworICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMpOiBNZWRpYVNlc3Np
b25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgpIHRha2VzIGEKKyAgICAgICAgICAgIGNsaWVudCBpbnRl
cmZhY2UgaW5zdGVhZCBvZiB0aGUgbWVkaWEgdHlwZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwLgorICAg
ICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKToKKwogMjAxMy0x
Mi0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgc2NoZWR1bGVTZXROZWVkc1N0eWxlUmVjYWxjIHRvIEhUTUxGcmFtZU93bmVyRWxlbWVudApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDcgQEAKIAkJ
MDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3
RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
MDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEw
MEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3RTExNzA3MTQ4OUVC
RUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyog
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9OworCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMx
Q0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwN0ZGREU2ODE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRkRF
NjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCAqLzsgfTsK
IAkJMDdGRkRFNjkxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZGREU2NzE4
MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCAqLzsgfTsKIAkJMDgw
NkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNW
R01hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01MzUxLDcgKzUzNTIsNyBAQAogCQlDRDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNN
ZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi87IH07CiAJCUNE
NTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuY3BwICovOyB9OwogCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oICovOyB9OwotCQlDRDU0REU0NzE3NDY4QjZGMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CisJCUNENTRERTQ3MTc0NjhCNkYwMDVFNUIz
NiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsKIAkJQ0Q1NERFNEIxNzQ2OUM2RDAwNUU1QjM2IC8q
IEF1ZGlvU2Vzc2lvbk1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNw
cCAqLzsgfTsKIAkJQ0Q2MUZFNjcxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFB
OTQyRTExNUI1Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDRDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTIxNUI1Q0Uy
MjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTU0MDAsNyArNTQw
MSw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQy
QzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFC
NkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0
IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsKIAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0
IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRT
Y3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRp
b1Nlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
LmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovOyB9
OwogCQlDREI4NTlGNzE2MEQ0OEE0MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGNDE2MEQ0ODk5
MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZBMTYwRDQ5NDkw
MEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFL
ZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RN
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2
QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLzsgfTsKQEAgLTEyNDUzLDcgKzEy
NDU0LDcgQEAKIAkJQ0Q1NEE3NUUxODBGNTM1MDAwQjA3NkM5IC8qIE1lZGlhU291cmNlUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmNwcDsgcGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2
QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aDsgcGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1
ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0REU0OTE3NDY5
QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvdXJjZUJ1ZmZlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NTI1LDggKzEyNTI2LDggQEAKIAkJQ0RBQjZEMkMxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFD
b250cm9sc0hvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNv
bnRyb2xzSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFCNkQyRjE3Qzky
NTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVc2VyQWdlbnRTY3JpcHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUI2RDMwMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyQWdlbnRTY3JpcHRzRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25NYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3
OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAv
KiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
S2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5
OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2
MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxOTQxLDggKzIxOTQyLDggQEAKIAkJCQlDREE3OTgyMzE3MEEyNTgzMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uLmNwcCAqLywKIAkJCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uLmggKi8sCiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCi0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8q
IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3
OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMy
RDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcw
MDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5
OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2
MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yMjAxMyw3
ICsyMjAxNCw3IEBACiAJCQkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJl
YWRlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmls
ZVJlYWRlck1hYy5oICovLAogCQkJCUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nl
c3Npb25NYWMuY3BwICovLAotCQkJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nl
c3Npb25NYW5hZ2VyTWFjLmNwcCAqLywKKwkJCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyog
TWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAwQzFB
MzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjM4
MjQsNiArMjM4MjUsNyBAQAogCQkJCUIyRkEzRDRGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0Fu
aW1hdGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MTBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
NjMwNkUxMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8q
IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU1
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1ODAxLDggKzI1ODAzLDggQEAKIAkJCQlDREE3OTgyNDE3MEEyNTgzMDBE
NDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcw
QTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNENTRERTQ3MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRp
b1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUU4QzA5MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNENTRERTQ3MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEQjA1MkRGMTU2MUE0MkMwMEI1MDBENiAvKiBBdWRpb1N1bW1p
bmdKdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEODE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEQjE3MTVEMkEy
MDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDkxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw3ICsxMzgsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSNp
bmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQpAQCAt
MzQyLDcgKzM0Miw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QK
ICAgICAsIG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKICNpZiBVU0UoQVVESU9fU0VTU0lP
TikKLSAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbjo6Y3JlYXRlKHRhZ05hbWUgPT0gdmlkZW9UYWcgPyBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpW
aWRlbyA6IEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKCp0aGlzKSkKICNl
bmRpZgogICAgICwgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCgwKQogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkBAIC01NzAzLDYgKzU3MDMsMTYgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCitNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFn
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlZpZGVvOworCisgICAgcmV0
dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTYw
OTE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDExICs1MywxMiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjZW5k
aWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi1jbGFz
cyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgogI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlOwpAQCAtMTEzLDYgKzExNCw5IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNp
ZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4
dFRyYWNrTWVudUNsaWVudAogI2VuZGlmCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgLCBw
dWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAorI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAg
TWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyLmdldCgpOyB9CkBA
IC02OTEsNiArNjk1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRyb2xz
SW5qZWN0ZWRTY3JpcHQoKTsKICNlbmRpZgogCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAg
dmlydHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CisjZW5kaWYKKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRp
bWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOwpAQCAt
ODQ2LDcgKzg1NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9O
KQotICAgIE93blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IG1fYXVkaW9TZXNzaW9uTWFu
YWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+
IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IG1fYWN0aXZpdHlUb2tlbjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTGlzdGVu
ZXIuaAkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1Nlc3Npb25MaXN0ZW5lciB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRp
b1Nlc3Npb25NYW5hZ2VyLmgiCi0KLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLVBhc3NPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRp
b1R5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvbk1hbmFn
ZXJUb2tlbih0eXBlKSk7Ci19Ci0KLUF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQotICAg
IDogbV90eXBlKHR5cGUpCi17Ci0gICAgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmluY3JlbWVudENvdW50KHR5cGUpOwotfQotCi1BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46
On5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKQotewotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5kZWNyZW1lbnRDb3VudChtX3R5cGUpOwotfQotCi1BdWRpb1Nlc3Np
b25NYW5hZ2VyJiBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbk1hbmFnZXIsIG1hbmFnZXIsICgpKTsKLSAg
ICByZXR1cm4gbWFuYWdlcjsKLX0KLQotQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9u
TWFuYWdlcigpCi17Ci19Ci0KLWJvb2wgQXVkaW9TZXNzaW9uTWFuYWdlcjo6aGFzKEF1ZGlvU2Vz
c2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQotewotICAgIEFTU0VSVCh0eXBlID49IDApOwot
ICAgIHJldHVybiBtX3R5cGVDb3VudC5jb250YWlucyh0eXBlKTsKLX0KLQotdm9pZCBBdWRpb1Nl
c3Npb25NYW5hZ2VyOjppbmNyZW1lbnRDb3VudChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5
cGUgdHlwZSkKLXsKLSAgICBBU1NFUlQodHlwZSA+PSAwKTsKLSAgICBtX3R5cGVDb3VudC5hZGQo
dHlwZSk7Ci0gICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci19Ci0KLXZvaWQgQXVkaW9TZXNzaW9u
TWFuYWdlcjo6ZGVjcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5
cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPj0gMCk7Ci0gICAgbV90eXBlQ291bnQucmVtb3ZlKHR5
cGUpOwotICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykK
LXZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKLXsKLX0KLSNl
bmRpZgotCi0jZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oCShyZXZpc2lv
biAxNjA5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25N
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCi0jZGVmaW5lIEF1ZGlvU2Vzc2lvbk1hbmFnZXJf
aAotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXIg
ewotcHVibGljOgotICAgIHN0YXRpYyBBdWRpb1Nlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7Ci0KLSAgICBlbnVtIEF1ZGlvVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIFZpZGVv
LAotICAgICAgICBBdWRpbywKLSAgICAgICAgV2ViQXVkaW8sCi0gICAgfTsKLQotICAgIGJvb2wg
aGFzKEF1ZGlvVHlwZSk7Ci0KLXByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgQXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuOwotICAgIHZvaWQgaW5jcmVtZW50Q291bnQoQXVkaW9UeXBlKTsKLSAg
ICB2b2lkIGRlY3JlbWVudENvdW50KEF1ZGlvVHlwZSk7Ci0gICAgCi1wcml2YXRlOgotICAgIEF1
ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci0K
LSAgICBIYXNoQ291bnRlZFNldDxzaXplX3Q+IG1fdHlwZUNvdW50OwotfTsKLQotY2xhc3MgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IGNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRp
b1R5cGUpOwotICAgIH5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKTsKLQotcHJpdmF0ZToKLSAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBl
KTsKLQotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSBtX3R5cGU7Ci19OwotfQot
Ci0jZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCi0KLSNlbmRpZiAvLyBBdWRpb1Nlc3Npb25N
YW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjA5MTUpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOjE2MDkxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisjaWYgVVNFKEFVRElP
X1NFU1NJT04pCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNzT3duUHRyPEF1ZGlv
U2Vzc2lvbk1hbmFnZXJUb2tlbj4gQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4odHlwZSkpOworfQorCitBdWRpb1Nlc3Npb25N
YW5hZ2VyVG9rZW46OkF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2Vy
OjpBdWRpb1R5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAgIEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5pbmNyZW1lbnRDb3VudCh0eXBlKTsKK30KKworQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK3sKKyAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGVjcmVtZW50Q291bnQobV90
eXBlKTsKK30KKworQXVkaW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb1Nlc3Npb25NYW5h
Z2VyLCBtYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0F1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvU2Vzc2lvbk1hbmFnZXIoKQoreworfQorCitib29sIEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OmhhcyhBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAg
ICBBU1NFUlQodHlwZSA+PSAwKTsKKyAgICByZXR1cm4gbV90eXBlQ291bnQuY29udGFpbnModHlw
ZSk7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6aW5jcmVtZW50Q291bnQoQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPj0gMCk7
CisgICAgbV90eXBlQ291bnQuYWRkKHR5cGUpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwor
fQorCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVudENvdW50KEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAg
IG1fdHlwZUNvdW50LnJlbW92ZSh0eXBlKTsKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30K
KworI2lmICFQTEFURk9STShNQUMpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNl
c3Npb25TdGF0ZSgpCit7Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
MiArMjQsODQgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uTWFuYWdlci5oIgotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCisjaW5jbHVkZSAiTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFzc093
blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6
Y3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQorCitzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuPiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46
OmNyZWF0ZShNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4odHlwZSkpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4oY2xpZW50KTsKIH0K
IAotQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCi0gICAgOiBtX3R5cGUodHlwZSkKK01l
ZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vz
c2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsKLSAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaW5jcmVtZW50Q291bnQodHlw
ZSk7CisgICAgbV90eXBlID0gbV9jbGllbnQubWVkaWFUeXBlKCk7CisgICAgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFRva2VuKCp0aGlzKTsKIH0KIAotQXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK01lZGlhU2Vzc2lv
bk1hbmFnZXJUb2tlbjo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpCiB7Ci0gICAgQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRlY3JlbWVudENvdW50KG1fdHlwZSk7Cisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVRva2VuKCp0aGlz
KTsKIH0KIAotQXVkaW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpCitNZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbk1hbmFn
ZXIsIG1hbmFnZXIsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1lZGlhU2Vzc2lvbk1h
bmFnZXIsIG1hbmFnZXIsICgpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQXVkaW9TZXNz
aW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFuYWdlcigpCitNZWRpYVNlc3Npb25NYW5hZ2VyOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKK3sKK30KKworYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpo
YXMoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7CisgICAgQVNT
RVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJl
Z2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgeworICAg
ICAgICBpZiAoKCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEF1ZGlvU2Vz
c2lvbk1hbmFnZXI6OmhhcyhBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK2lu
dCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5
cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSA+PSAwKTsKLSAgICByZXR1cm4gbV90
eXBlQ291bnQuY29udGFpbnModHlwZSk7CisgICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsK
KyAgICAKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJl
Z2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgeworICAg
ICAgICBpZiAoKCppdCktPm1lZGlhVHlwZSgpID09IHR5cGUpCisgICAgICAgICAgICArK2NvdW50
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9u
TWFuYWdlcjo6aW5jcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5
cGUpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFRva2VuKE1lZGlhU2Vzc2lvbk1hbmFn
ZXJUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gMCk7Ci0gICAgbV90eXBlQ291
bnQuYWRkKHR5cGUpOworICAgIG1fdG9rZW5zLmFwcGVuZCgmdG9rZW4pOwogICAgIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVudENv
dW50KEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQordm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpyZW1vdmVUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mIHRva2VuKQog
ewotICAgIEFTU0VSVCh0eXBlID49IDApOwotICAgIG1fdHlwZUNvdW50LnJlbW92ZSh0eXBlKTsK
KyAgICBzaXplX3QgaW5kZXggPSBtX3Rva2Vucy5maW5kKCZ0b2tlbik7CisgICAgQVNTRVJUKGlu
ZGV4ICE9IG5vdEZvdW5kKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fdG9rZW5zLnJlbW92ZShpbmRleCk7CiAgICAgdXBkYXRlU2Vzc2lvblN0
YXRlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDKQotdm9pZCBBdWRpb1Nlc3Npb25NYW5hZ2Vy
Ojp1cGRhdGVTZXNzaW9uU3RhdGUoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVT
ZXNzaW9uU3RhdGUoKQogewogfQogI2VuZGlmCi0KLSNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE2MDkxNSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oOjE2MDkxNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
X2gKKyNkZWZpbmUgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCisKKyNpZiBVU0UoQVVESU9fU0VTU0lP
TikKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIEF1
ZGlvU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKKworICAgIGVudW0gQXVkaW9UeXBl
IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgVmlkZW8sCisgICAgICAgIEF1ZGlvLAorICAgICAg
ICBXZWJBdWRpbywKKyAgICB9OworCisgICAgYm9vbCBoYXMoQXVkaW9UeXBlKTsKKworcHJvdGVj
dGVkOgorICAgIGZyaWVuZCBjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisgICAgdm9p
ZCBpbmNyZW1lbnRDb3VudChBdWRpb1R5cGUpOworICAgIHZvaWQgZGVjcmVtZW50Q291bnQoQXVk
aW9UeXBlKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXVkaW9TZXNzaW9uTWFuYWdlcigpOworCisg
ICAgdm9pZCB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKworICAgIEhhc2hDb3VudGVkU2V0PHNpemVf
dD4gbV90eXBlQ291bnQ7Cit9OworCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbj4g
Y3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSk7CisgICAgfkF1ZGlvU2Vzc2lv
bk1hbmFnZXJUb2tlbigpOworCitwcml2YXRlOgorICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tl
bihBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUpOworCisgICAgQXVkaW9TZXNzaW9uTWFu
YWdlcjo6QXVkaW9UeXBlIG1fdHlwZTsKK307Cit9CisKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VT
U0lPTikKKworI2VuZGlmIC8vIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1NSArMjMsNjkgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEF1ZGlvU2Vzc2lvbk1hbmFn
ZXJfaAotI2RlZmluZSBBdWRpb1Nlc3Npb25NYW5hZ2VyX2gKKyNpZm5kZWYgTWVkaWFTZXNzaW9u
TWFuYWdlcl9oCisjZGVmaW5lIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogCi0jaWYgVVNFKEFVRElP
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1Nlc3Npb25N
YW5hZ2VyIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKworY2xhc3MgTWVkaWFT
ZXNzaW9uTWFuYWdlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEF1ZGlvU2Vzc2lvbk1hbmFnZXIm
IHNoYXJlZE1hbmFnZXIoKTsKKyAgICBzdGF0aWMgTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVk
TWFuYWdlcigpOwogCi0gICAgZW51bSBBdWRpb1R5cGUgeworICAgIGVudW0gTWVkaWFUeXBlIHsK
ICAgICAgICAgTm9uZSwKICAgICAgICAgVmlkZW8sCiAgICAgICAgIEF1ZGlvLAogICAgICAgICBX
ZWJBdWRpbywKICAgICB9OwogCi0gICAgYm9vbCBoYXMoQXVkaW9UeXBlKTsKKyAgICBib29sIGhh
cyhNZWRpYVR5cGUpIGNvbnN0OworICAgIGludCBjb3VudChNZWRpYVR5cGUpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsKLSAg
ICB2b2lkIGluY3JlbWVudENvdW50KEF1ZGlvVHlwZSk7Ci0gICAgdm9pZCBkZWNyZW1lbnRDb3Vu
dChBdWRpb1R5cGUpOwotICAgIAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2Vy
VG9rZW47CisgICAgdm9pZCBhZGRUb2tlbihNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4mKTsKKyAg
ICB2b2lkIHJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOworCiBwcml2YXRl
OgotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7
CiAKICAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogCi0gICAgSGFzaENvdW50ZWRTZXQ8
c2l6ZV90PiBtX3R5cGVDb3VudDsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
Kj4gbV90b2tlbnM7CiB9OwogCi1jbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4geworY2xh
c3MgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBjcmVhdGUoQXVkaW9TZXNzaW9uTWFuYWdlcjo6
QXVkaW9UeXBlKTsKLSAgICB+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCk7CisgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgTWVk
aWFTZXNzaW9uTWFuYWdlclRva2VuIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbk1hbmFnZXJD
bGllbnQmKTsKKworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50Jik7CisgICAgfk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpOworCisgICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRpb1Nl
c3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUpOwogCi0gICAgQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVk
aW9UeXBlIG1fdHlwZTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBtX2NsaWVudDsK
KyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbV90eXBlOwogfTsKLX0KIAotI2Vu
ZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQorfQogCi0jZW5kaWYgLy8gQXVkaW9TZXNzaW9uTWFu
YWdlcl9oCisjZW5kaWYgLy8gTWVkaWFTZXNzaW9uTWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCShyZXZpc2lvbiAxNjA5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDggQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTWFjLmgiCiAKICNpbmNsdWRlICJBdWRp
b0lPQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJWZWN0b3JNYXRoLmgiCkBAIC04Miw3ICs4Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25NYWM6OkF1
ZGlvRGVzdGluYXRpb25NYWMKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwg
a0J1ZmZlclNpemUsIGZhbHNlKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAg
ICwgbV9pc1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX2F1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpXZWJB
dWRpbykpCisgICAgLCBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbihNZWRpYVNlc3Npb25NYW5h
Z2VyVG9rZW46OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBE
ZWZhdWx0T3V0cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmgJKHJldmlzaW9uIDE2MDkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9u
LmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5p
dC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFn
ZXJUb2tlbjsKLQogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZh
dWx0IG91dHB1dCBBdWRpb1VuaXQKIAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1Ymxp
YyBBdWRpb0Rlc3RpbmF0aW9uIHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgewogcHVi
bGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAtNjAsNiAr
NTksOCBAQCBwcml2YXRlOgogCiAgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCisgICAgdmlydHVhbCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNz
aW9uTWFuYWdlcjo6V2ViQXVkaW87IH0KKwogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAg
ICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9y
ZW5kZXJCdXM7CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGxheWlu
ZzsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIE93blB0cjxBdWRpb1Nlc3Npb25NYW5h
Z2VyVG9rZW4+IG1fYXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOwog
I2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFuYWdlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lvbiAxNjA5
MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFu
YWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGtXZWJBdWRpb0J1ZmZlclNpemUgPSAxMjg7Ci0KLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLXN0YXRpYyBjb25zdCBz
aXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsKLSNlbmRpZgotCi12b2lkIEF1
ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCi17Ci0gICAgTE9HKE1lZGlh
LCAiQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlk
ZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIG1fdHlwZUNvdW50LmNvdW50KFZpZGVv
KSwgbV90eXBlQ291bnQuY291bnQoQXVkaW8pLCBtX3R5cGVDb3VudC5jb3VudChXZWJBdWRpbykp
OwotCi0gICAgaWYgKGhhcyhXZWJBdWRpbykpCi0gICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVk
U2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1dlYkF1ZGlvQnVmZmVyU2l6ZSk7Ci0g
ICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjcyNT4gRmlndXJlIG91dCB3aHkg
ZW5hYmxpbmcgdGhlIGNvZGUgYmVsb3cKLSAgICAvLyBjYXVzZXMgbWVkaWEgTGF5b3V0VGVzdHMg
dG8gZmFpbCBvbiAxMC44LgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAotICAgIGVsc2UgaWYgKChoYXMoVmlkZW8pIHx8IGhhcyhBdWRpbykpICYmIFNldHRpbmdz
Ojpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKQotICAgICAgICBBdWRpb1Nl
c3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtMb3dQb3dlclZp
ZGVvQnVmZmVyU2l6ZSk7Ci0jZW5kaWYKLX0KLQotI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9O
KSAmJiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCShyZXZpc2lv
biAxNjA5MTUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nl
c3Npb25NYW5hZ2VyTWFjLmNwcDoxNjA5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
dWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZP
Uk0oTUFDKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGtXZWJBdWRp
b0J1ZmZlclNpemUgPSAxMjg7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKK3N0YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0g
NDA5NjsKKyNlbmRpZgorCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25T
dGF0ZSgpCit7CisgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIs
IG1fdHlwZUNvdW50LmNvdW50KFZpZGVvKSwgbV90eXBlQ291bnQuY291bnQoQXVkaW8pLCBtX3R5
cGVDb3VudC5jb3VudChXZWJBdWRpbykpOworCisgICAgaWYgKGhhcyhXZWJBdWRpbykpCisgICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
a1dlYkF1ZGlvQnVmZmVyU2l6ZSk7CisgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9i
LzExNjcyNT4gRmlndXJlIG91dCB3aHkgZW5hYmxpbmcgdGhlIGNvZGUgYmVsb3cKKyAgICAvLyBj
YXVzZXMgbWVkaWEgTGF5b3V0VGVzdHMgdG8gZmFpbCBvbiAxMC44LgorI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGVsc2UgaWYgKChoYXMoVmlkZW8pIHx8
IGhhcyhBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5h
YmxlZCgpKQorICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSk7CisjZW5kaWYKK30KKworI2Vu
ZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDEwICsyNCwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJB
dWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgog
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKIAorI2luY2x1ZGUgIkF1
ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogCkBAIC0zOSw5ICs0MCw5IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga1dlYkF1ZGlvQnVmZmVy
U2l6ZSAKIHN0YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5
NjsKICNlbmRpZgogCi12b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0
ZSgpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkg
LSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIG1fdHlwZUNvdW50
LmNvdW50KFZpZGVvKSwgbV90eXBlQ291bnQuY291bnQoQXVkaW8pLCBtX3R5cGVDb3VudC5jb3Vu
dChXZWJBdWRpbykpOworICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0
ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbygl
ZCkiLCBjb3VudChWaWRlbyksIGNvdW50KEF1ZGlvKSwgY291bnQoV2ViQXVkaW8pKTsKIAogICAg
IGlmIChoYXMoV2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24o
KS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219827</attachid>
            <date>2013-12-20 18:52:09 -0800</date>
            <delta_ts>2013-12-23 10:20:41 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_9.txt</filename>
            <type>text/plain</type>
            <size>42486</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTEyLTIwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEF1ZGlvU2Vzc2lvbk1h
bmFnZXIgc2hvdWxkIGJlIE1lZGlhU2Vzc2lvbk1hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjA4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IENoYW5nZSBmaWxlIG5hbWVzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQpOiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgpIHRha2VzIGEgY2xpZW50Cisg
ICAgICAgICAgICBpbnRlcmZhY2UgaW5zdGVhZCBvZiB0aGUgbWVkaWEgdHlwZS4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmg6IEluY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPi4KKyAgICAg
ICAgCisgICAgICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuKiAtPiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LioKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1h
bmFnZXIuY3BwLgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUpOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpNZWRpYVNlc3Npb25NYW5hZ2VyVG9r
ZW4pOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjp+TWVkaWFTZXNzaW9uTWFu
YWdlclRva2VuKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIp
OgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcik6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y291bnQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkVG9rZW4p
OgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlVG9rZW4pOgorICAgICAgICAo
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuaC4KKworICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMpOiBNZWRpYVNlc3Np
b25NYW5hZ2VyVG9rZW46OmNyZWF0ZSgpIHRha2VzIGEKKyAgICAgICAgICAgIGNsaWVudCBpbnRl
cmZhY2UgaW5zdGVhZCBvZiB0aGUgbWVkaWEgdHlwZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwLgorICAg
ICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKToKKwogMjAxMy0x
Mi0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgc2NoZWR1bGVTZXROZWVkc1N0eWxlUmVjYWxjIHRvIEhUTUxGcmFtZU93bmVyRWxlbWVudApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDcgQEAKIAkJ
MDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3
RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
MDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEw
MEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3RTExNzA3MTQ4OUVC
RUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyog
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovOyB9OworCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMx
Q0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwN0ZGREU2ODE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRkRF
NjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCAqLzsgfTsK
IAkJMDdGRkRFNjkxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZGREU2NzE4
MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCAqLzsgfTsKIAkJMDgw
NkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNW
R01hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01MzUxLDcgKzUzNTIsNyBAQAogCQlDRDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNN
ZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi87IH07CiAJCUNE
NTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDU0QTc2MDE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuY3BwICovOyB9OwogCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oICovOyB9OwotCQlDRDU0REU0NzE3NDY4QjZGMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CisJCUNENTRERTQ3MTc0NjhCNkYwMDVFNUIz
NiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLmNwcCAqLzsgfTsKIAkJQ0Q1NERFNEIxNzQ2OUM2RDAwNUU1QjM2IC8q
IEF1ZGlvU2Vzc2lvbk1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNw
cCAqLzsgfTsKIAkJQ0Q2MUZFNjcxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFB
OTQyRTExNUI1Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDRDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTIxNUI1Q0Uy
MjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTU0MDAsNyArNTQw
MSw3IEBACiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQy
QzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFC
NkQzMTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0
IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsKIAkJQ0RBQjZEMzIxN0M5MjU5NTAwQzYwQjM0
IC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDMwMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRT
Y3JpcHRzRGF0YS5jcHAgKi87IH07Ci0JCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRp
b1Nlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
LmNwcCAqLzsgfTsKKwkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovOyB9
OwogCQlDREI4NTlGNzE2MEQ0OEE0MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGNDE2MEQ0ODk5
MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZBMTYwRDQ5NDkw
MEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFL
ZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RN
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2
QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLzsgfTsKQEAgLTEyNDUzLDcgKzEy
NDU0LDcgQEAKIAkJQ0Q1NEE3NUUxODBGNTM1MDAwQjA3NkM5IC8qIE1lZGlhU291cmNlUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmNwcDsgcGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2
QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aDsgcGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1
ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0REU0OTE3NDY5
QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvdXJjZUJ1ZmZlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NTI1LDggKzEyNTI2LDggQEAKIAkJQ0RBQjZEMkMxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFD
b250cm9sc0hvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUNv
bnRyb2xzSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFCNkQyRjE3Qzky
NTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVc2VyQWdlbnRTY3JpcHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUI2RDMwMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyQWdlbnRTY3JpcHRzRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEQUU4QzA3MTc0NkI5NTcwMDUz
MkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25NYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3
OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAv
KiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
S2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5
OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2
MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxOTQxLDggKzIxOTQyLDggQEAKIAkJCQlDREE3OTgyMzE3MEEyNTgzMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uLmNwcCAqLywKIAkJCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uLmggKi8sCiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1
ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCi0JCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8q
IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICovLAotCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3
OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMy
RDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcw
MDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5
OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2
MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yMjAxMyw3
ICsyMjAxNCw3IEBACiAJCQkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJl
YWRlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmls
ZVJlYWRlck1hYy5oICovLAogCQkJCUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nl
c3Npb25NYWMuY3BwICovLAotCQkJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nl
c3Npb25NYW5hZ2VyTWFjLmNwcCAqLywKKwkJCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyog
TWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAwQzFB
MzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjM4
MjQsNiArMjM4MjUsNyBAQAogCQkJCUIyRkEzRDRGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0Fu
aW1hdGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MTBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
NjMwNkUxMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8q
IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU1
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1ODAxLDggKzI1ODAzLDggQEAKIAkJCQlDREE3OTgyNDE3MEEyNTgzMDBE
NDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcw
QTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNENTRERTQ3MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRp
b1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUU4QzA5MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNENTRERTQ3MTc0NjhCNkYwMDVFNUIzNiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEQjA1MkRGMTU2MUE0MkMwMEI1MDBENiAvKiBBdWRpb1N1bW1p
bmdKdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEODE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEQjE3MTVEMkEy
MDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDkxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw3ICsxMzgsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSNp
bmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQpAQCAt
MzQyLDcgKzM0Miw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QK
ICAgICAsIG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKICNpZiBVU0UoQVVESU9fU0VTU0lP
TikKLSAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbjo6Y3JlYXRlKHRhZ05hbWUgPT0gdmlkZW9UYWcgPyBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpW
aWRlbyA6IEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9u
TWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKCp0aGlzKSkKICNl
bmRpZgogICAgICwgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCgwKQogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkBAIC01NzAzLDYgKzU3MDMsMTYgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCitNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFn
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlZpZGVvOworCisgICAgcmV0
dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTYw
OTE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDExICs1MywxMiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjZW5k
aWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi1jbGFz
cyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgogI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlOwpAQCAtMTEzLDYgKzExNCw5IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNp
ZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4
dFRyYWNrTWVudUNsaWVudAogI2VuZGlmCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgLCBw
dWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAorI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAg
TWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyLmdldCgpOyB9CkBA
IC02OTEsNiArNjk1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRyb2xz
SW5qZWN0ZWRTY3JpcHQoKTsKICNlbmRpZgogCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAg
dmlydHVhbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CisjZW5kaWYKKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRp
bWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwog
ICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOwpAQCAt
ODQ2LDcgKzg1NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9O
KQotICAgIE93blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IG1fYXVkaW9TZXNzaW9uTWFu
YWdlclRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4+
IG1fbWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IG1fYWN0aXZpdHlUb2tlbjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTGlzdGVu
ZXIuaAkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1Nlc3Npb25MaXN0ZW5lciB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRp
b1Nlc3Npb25NYW5hZ2VyLmgiCi0KLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLVBhc3NPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRp
b1R5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvbk1hbmFn
ZXJUb2tlbih0eXBlKSk7Ci19Ci0KLUF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQotICAg
IDogbV90eXBlKHR5cGUpCi17Ci0gICAgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmluY3JlbWVudENvdW50KHR5cGUpOwotfQotCi1BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46
On5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKQotewotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5kZWNyZW1lbnRDb3VudChtX3R5cGUpOwotfQotCi1BdWRpb1Nlc3Np
b25NYW5hZ2VyJiBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbk1hbmFnZXIsIG1hbmFnZXIsICgpKTsKLSAg
ICByZXR1cm4gbWFuYWdlcjsKLX0KLQotQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9u
TWFuYWdlcigpCi17Ci19Ci0KLWJvb2wgQXVkaW9TZXNzaW9uTWFuYWdlcjo6aGFzKEF1ZGlvU2Vz
c2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQotewotICAgIEFTU0VSVCh0eXBlID49IDApOwot
ICAgIHJldHVybiBtX3R5cGVDb3VudC5jb250YWlucyh0eXBlKTsKLX0KLQotdm9pZCBBdWRpb1Nl
c3Npb25NYW5hZ2VyOjppbmNyZW1lbnRDb3VudChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5
cGUgdHlwZSkKLXsKLSAgICBBU1NFUlQodHlwZSA+PSAwKTsKLSAgICBtX3R5cGVDb3VudC5hZGQo
dHlwZSk7Ci0gICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci19Ci0KLXZvaWQgQXVkaW9TZXNzaW9u
TWFuYWdlcjo6ZGVjcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5
cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPj0gMCk7Ci0gICAgbV90eXBlQ291bnQucmVtb3ZlKHR5
cGUpOwotICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykK
LXZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKLXsKLX0KLSNl
bmRpZgotCi0jZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oCShyZXZpc2lv
biAxNjA5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25N
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCi0jZGVmaW5lIEF1ZGlvU2Vzc2lvbk1hbmFnZXJf
aAotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXIg
ewotcHVibGljOgotICAgIHN0YXRpYyBBdWRpb1Nlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7Ci0KLSAgICBlbnVtIEF1ZGlvVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIFZpZGVv
LAotICAgICAgICBBdWRpbywKLSAgICAgICAgV2ViQXVkaW8sCi0gICAgfTsKLQotICAgIGJvb2wg
aGFzKEF1ZGlvVHlwZSk7Ci0KLXByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgQXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuOwotICAgIHZvaWQgaW5jcmVtZW50Q291bnQoQXVkaW9UeXBlKTsKLSAg
ICB2b2lkIGRlY3JlbWVudENvdW50KEF1ZGlvVHlwZSk7Ci0gICAgCi1wcml2YXRlOgotICAgIEF1
ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Ci0K
LSAgICBIYXNoQ291bnRlZFNldDxzaXplX3Q+IG1fdHlwZUNvdW50OwotfTsKLQotY2xhc3MgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IGNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRp
b1R5cGUpOwotICAgIH5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKTsKLQotcHJpdmF0ZToKLSAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBl
KTsKLQotICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSBtX3R5cGU7Ci19OwotfQot
Ci0jZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCi0KLSNlbmRpZiAvLyBBdWRpb1Nlc3Npb25N
YW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjA5MTUpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOjE2MDkxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisjaWYgVVNFKEFVRElP
X1NFU1NJT04pCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNzT3duUHRyPEF1ZGlv
U2Vzc2lvbk1hbmFnZXJUb2tlbj4gQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4odHlwZSkpOworfQorCitBdWRpb1Nlc3Npb25N
YW5hZ2VyVG9rZW46OkF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2Vy
OjpBdWRpb1R5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAgIEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5pbmNyZW1lbnRDb3VudCh0eXBlKTsKK30KKworQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK3sKKyAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGVjcmVtZW50Q291bnQobV90
eXBlKTsKK30KKworQXVkaW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb1Nlc3Npb25NYW5h
Z2VyLCBtYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0F1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvU2Vzc2lvbk1hbmFnZXIoKQoreworfQorCitib29sIEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OmhhcyhBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAg
ICBBU1NFUlQodHlwZSA+PSAwKTsKKyAgICByZXR1cm4gbV90eXBlQ291bnQuY29udGFpbnModHlw
ZSk7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6aW5jcmVtZW50Q291bnQoQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPj0gMCk7
CisgICAgbV90eXBlQ291bnQuYWRkKHR5cGUpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwor
fQorCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVudENvdW50KEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAg
IG1fdHlwZUNvdW50LnJlbW92ZSh0eXBlKTsKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30K
KworI2lmICFQTEFURk9STShNQUMpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNl
c3Npb25TdGF0ZSgpCit7Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
MiArMjQsODIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uTWFuYWdlci5oIgotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCisjaW5jbHVkZSAiTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFzc093
blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6
Y3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQorCitzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuPiBNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW46
OmNyZWF0ZShNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4odHlwZSkpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbj4oY2xpZW50KTsKIH0K
IAotQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCi0gICAgOiBtX3R5cGUodHlwZSkKK01l
ZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjo6TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vz
c2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsKLSAg
ICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaW5jcmVtZW50Q291bnQodHlw
ZSk7CisgICAgbV90eXBlID0gbV9jbGllbnQubWVkaWFUeXBlKCk7CisgICAgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFRva2VuKCp0aGlzKTsKIH0KIAotQXVkaW9TZXNz
aW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK01lZGlhU2Vzc2lv
bk1hbmFnZXJUb2tlbjo6fk1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbigpCiB7Ci0gICAgQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmRlY3JlbWVudENvdW50KG1fdHlwZSk7Cisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVRva2VuKCp0aGlz
KTsKIH0KIAotQXVkaW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpCitNZWRpYVNlc3Npb25NYW5hZ2VyJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbk1hbmFn
ZXIsIG1hbmFnZXIsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1lZGlhU2Vzc2lvbk1h
bmFnZXIsIG1hbmFnZXIsICgpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQXVkaW9TZXNz
aW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFuYWdlcigpCitNZWRpYVNlc3Npb25NYW5hZ2VyOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKK3sKK30KKworYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpo
YXMoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiB7CisgICAgQVNT
RVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OldlYkF1ZGlvKTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fdG9rZW5zLmJl
Z2luKCksIGVuZCA9IG1fdG9rZW5zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKCgqaXQpLT5tZWRpYVR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb25N
YW5hZ2VyOjpoYXMoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCitpbnQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIHR5
cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gMCk7Ci0gICAgcmV0dXJuIG1fdHlwZUNv
dW50LmNvbnRhaW5zKHR5cGUpOworICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJBdWRpbyk7CisgICAg
CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Rva2Vucy5iZWdpbigp
LCBlbmQgPSBtX3Rva2Vucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgo
Kml0KS0+bWVkaWFUeXBlKCkgPT0gdHlwZSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpp
bmNyZW1lbnRDb3VudChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3ZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuJiB0
b2tlbikKIHsKLSAgICBBU1NFUlQodHlwZSA+PSAwKTsKLSAgICBtX3R5cGVDb3VudC5hZGQodHlw
ZSk7CisgICAgbV90b2tlbnMuYXBwZW5kKCZ0b2tlbik7CiAgICAgdXBkYXRlU2Vzc2lvblN0YXRl
KCk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6ZGVjcmVtZW50Q291bnQoQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZVRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNT
RVJUKHR5cGUgPj0gMCk7Ci0gICAgbV90eXBlQ291bnQucmVtb3ZlKHR5cGUpOworICAgIHNpemVf
dCBpbmRleCA9IG1fdG9rZW5zLmZpbmQoJnRva2VuKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gbm90
Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV90b2tlbnMucmVtb3ZlKGluZGV4KTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0K
IAogI2lmICFQTEFURk9STShNQUMpCi12b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNl
c3Npb25TdGF0ZSgpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0
ZSgpCiB7CiB9CiAjZW5kaWYKLQotI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkocmV2aXNpb24gMTYwOTE1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb25NYW5hZ2VyLmg6MTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaAorI2RlZmlu
ZSBBdWRpb1Nlc3Npb25NYW5hZ2VyX2gKKworI2lmIFVTRShBVURJT19TRVNTSU9OKQorCisjaW5j
bHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBdWRpb1Nlc3Npb25NYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXVkaW9TZXNzaW9u
TWFuYWdlciYgc2hhcmVkTWFuYWdlcigpOworCisgICAgZW51bSBBdWRpb1R5cGUgeworICAgICAg
ICBOb25lLAorICAgICAgICBWaWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdlYkF1ZGlv
LAorICAgIH07CisKKyAgICBib29sIGhhcyhBdWRpb1R5cGUpOworCitwcm90ZWN0ZWQ6CisgICAg
ZnJpZW5kIGNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKyAgICB2b2lkIGluY3JlbWVu
dENvdW50KEF1ZGlvVHlwZSk7CisgICAgdm9pZCBkZWNyZW1lbnRDb3VudChBdWRpb1R5cGUpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIHVw
ZGF0ZVNlc3Npb25TdGF0ZSgpOworCisgICAgSGFzaENvdW50ZWRTZXQ8c2l6ZV90PiBtX3R5cGVD
b3VudDsKK307CisKK2NsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBjcmVhdGUoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlKTsKKyAgICB+QXVkaW9TZXNzaW9uTWFuYWdlclRv
a2VuKCk7CisKK3ByaXZhdGU6CisgICAgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vz
c2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSk7CisKKyAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRp
b1R5cGUgbV90eXBlOworfTsKK30KKworI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQorCisj
ZW5kaWYgLy8gQXVkaW9TZXNzaW9uTWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDU1ICsyMyw2OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCi0jZGVm
aW5lIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaAorI2lmbmRlZiBNZWRpYVNlc3Npb25NYW5hZ2VyX2gK
KyNkZWZpbmUgTWVkaWFTZXNzaW9uTWFuYWdlcl9oCiAKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikK
LQotI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXIgewor
Y2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOworCitjbGFzcyBNZWRpYVNlc3Npb25NYW5h
Z2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQXVkaW9TZXNzaW9uTWFuYWdlciYgc2hhcmVkTWFu
YWdlcigpOworICAgIHN0YXRpYyBNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7
CiAKLSAgICBlbnVtIEF1ZGlvVHlwZSB7CisgICAgZW51bSBNZWRpYVR5cGUgewogICAgICAgICBO
b25lLAogICAgICAgICBWaWRlbywKICAgICAgICAgQXVkaW8sCiAgICAgICAgIFdlYkF1ZGlvLAog
ICAgIH07CiAKLSAgICBib29sIGhhcyhBdWRpb1R5cGUpOworICAgIGJvb2wgaGFzKE1lZGlhVHlw
ZSkgY29uc3Q7CisgICAgaW50IGNvdW50KE1lZGlhVHlwZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICBmcmllbmQgY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOwotICAgIHZvaWQgaW5j
cmVtZW50Q291bnQoQXVkaW9UeXBlKTsKLSAgICB2b2lkIGRlY3JlbWVudENvdW50KEF1ZGlvVHlw
ZSk7Ci0gICAgCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKyAg
ICB2b2lkIGFkZFRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbiYpOworICAgIHZvaWQgcmVt
b3ZlVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuJik7CisKIHByaXZhdGU6Ci0gICAgQXVk
aW9TZXNzaW9uTWFuYWdlcigpOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKIAogICAgIHZv
aWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAKLSAgICBIYXNoQ291bnRlZFNldDxzaXplX3Q+IG1f
dHlwZUNvdW50OworICAgIFZlY3RvcjxNZWRpYVNlc3Npb25NYW5hZ2VyVG9rZW4qPiBtX3Rva2Vu
czsKIH07CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbiB7CitjbGFzcyBNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb1Nl
c3Npb25NYW5hZ2VyVG9rZW4+IGNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUp
OwotICAgIH5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKTsKKyAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlh
VHlwZSBtZWRpYVR5cGUoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5N
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBNZWRpYVNlc3Npb25N
YW5hZ2VyVG9rZW4geworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFT
ZXNzaW9uTWFuYWdlclRva2VuPiBjcmVhdGUoTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYpOwor
CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
KTsKKyAgICB+TWVkaWFTZXNzaW9uTWFuYWdlclRva2VuKCk7CisKKyAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
IHByaXZhdGU6Ci0gICAgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFn
ZXI6OkF1ZGlvVHlwZSk7CiAKLSAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgbV90
eXBlOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIG1fY2xpZW50OworICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6Ok1lZGlhVHlwZSBtX3R5cGU7CiB9OwotfQogCi0jZW5kaWYgLy8gVVNF
KEFVRElPX1NFU1NJT04pCit9CiAKLSNlbmRpZiAvLyBBdWRpb1Nlc3Npb25NYW5hZ2VyX2gKKyNl
bmRpZiAvLyBNZWRpYVNlc3Npb25NYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAJKHJl
dmlzaW9uIDE2MDkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTAgQEAKICNp
bmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTWFjLmgiCiAKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJWZWN0b3JN
YXRoLmgiCiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KIApAQCAtODIsNyAr
ODMsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjCiAgICAgLCBt
X3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGtCdWZmZXJTaXplLCBmYWxzZSkpCiAgICAg
LCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQotICAg
ICwgbV9hdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpj
cmVhdGUoQXVkaW9TZXNzaW9uTWFuYWdlcjo6V2ViQXVkaW8pKQorICAgICwgbV9tZWRpYVNlc3Np
b25NYW5hZ2VyVG9rZW4oTWVkaWFTZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoKnRoaXMpKQog
ewogICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQKICAgICBBdWRp
b0NvbXBvbmVudCBjb21wOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCShyZXZpc2lvbiAxNjA5MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMTYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVz
LmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47Ci0KIC8vIEFuIEF1ZGlvRGVz
dGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKLWNs
YXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CitjbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9u
TWFjKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25NYWMoKTsKQEAgLTYwLDYgKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIE9T
U3RhdHVzIHJlbmRlcihVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9E
YXRhKTsKIAorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvOyB9CisK
ICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxs
YmFjazsKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1fcmVuZGVyQnVzOwpAQCAtNjgsNyArNjksNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1BsYXlpbmc7CiAKICNpZiBVU0UoQVVESU9fU0VTU0lP
TikKLSAgICBPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBtX2F1ZGlvU2Vzc2lvbk1h
bmFnZXJUb2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uTWFuYWdlclRva2Vu
PiBtX21lZGlhU2Vzc2lvbk1hbmFnZXJUb2tlbjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYW5hZ2VyTWFjLmNwcAkocmV2aXNpb24gMTYwOTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pICYm
IFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTZXR0aW5n
cy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBr
V2ViQXVkaW9CdWZmZXJTaXplID0gMTI4OwotCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVy
U2l6ZSA9IDQwOTY7Ci0jZW5kaWYKLQotdm9pZCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVT
ZXNzaW9uU3RhdGUoKQotewotICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVw
ZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRp
byglZCkiLCBtX3R5cGVDb3VudC5jb3VudChWaWRlbyksIG1fdHlwZUNvdW50LmNvdW50KEF1ZGlv
KSwgbV90eXBlQ291bnQuY291bnQoV2ViQXVkaW8pKTsKLQotICAgIGlmIChoYXMoV2ViQXVkaW8p
KQotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOwotICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtp
dC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93Ci0g
ICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRlc3RzIHRvIGZhaWwgb24gMTAuOC4KLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBlbHNlIGlmICgoaGFzKFZp
ZGVvKSB8fCBoYXMoQXVkaW8pKSAmJiBTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVy
U2l6ZUVuYWJsZWQoKSkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0
UHJlZmVycmVkQnVmZmVyU2l6ZShrTG93UG93ZXJWaWRlb0J1ZmZlclNpemUpOwotI2VuZGlmCi19
Ci0KLSNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcAkocmV2aXNpb24gMTYwOTE1KQkoZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA6MTYwOTE1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisj
aWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIGNvbnN0IHNpemVfdCBrV2ViQXVkaW9CdWZmZXJTaXplID0gMTI4OworCisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCitzdGF0aWMgY29uc3Qgc2l6
ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSA9IDQwOTY7CisjZW5kaWYKKwordm9pZCBBdWRp
b1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQoreworICAgIExPRyhNZWRpYSwg
IkF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVv
KCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbyglZCkiLCBtX3R5cGVDb3VudC5jb3VudChWaWRlbyks
IG1fdHlwZUNvdW50LmNvdW50KEF1ZGlvKSwgbV90eXBlQ291bnQuY291bnQoV2ViQXVkaW8pKTsK
KworICAgIGlmIChoYXMoV2ViQXVkaW8pKQorICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNl
c3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOworICAg
IC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5IGVu
YWJsaW5nIHRoZSBjb2RlIGJlbG93CisgICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRlc3RzIHRv
IGZhaWwgb24gMTAuOC4KKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKKyAgICBlbHNlIGlmICgoaGFzKFZpZGVvKSB8fCBoYXMoQXVkaW8pKSAmJiBTZXR0aW5nczo6
bG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICAgICAgQXVkaW9TZXNz
aW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrTG93UG93ZXJWaWRl
b0J1ZmZlclNpemUpOworI2VuZGlmCit9CisKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikg
JiYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTEgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAm
JiBQTEFURk9STShNQUMpCiAKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApAQCAtMzksOSArNDAsOSBAQCBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtXZWJBdWRpb0J1ZmZlclNpemUgCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSA9IDQwOTY7CiAjZW5kaWYKIAotdm9pZCBBdWRpb1Nl
c3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8o
JWQpLCBXZWJBdWRpbyglZCkiLCBtX3R5cGVDb3VudC5jb3VudChWaWRlbyksIG1fdHlwZUNvdW50
LmNvdW50KEF1ZGlvKSwgbV90eXBlQ291bnQuY291bnQoV2ViQXVkaW8pKTsKKyAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBW
aWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQoVmlkZW8pLCBjb3VudChB
dWRpbyksIGNvdW50KFdlYkF1ZGlvKSk7CiAKICAgICBpZiAoaGFzKFdlYkF1ZGlvKSkKICAgICAg
ICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShr
V2ViQXVkaW9CdWZmZXJTaXplKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>