<?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>131879</bug_id>
          
          <creation_ts>2014-04-18 21:05:12 -0700</creation_ts>
          <short_desc>bmalloc: Mutex should be harder to use wrong</short_desc>
          <delta_ts>2014-04-19 11:37:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002144</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-18 21:05:12 -0700</bug_when>
    <thetext>bmalloc: Mutex should be harder to use wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002147</commentid>
    <comment_count>1</comment_count>
      <attachid>229713</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-18 21:09:42 -0700</bug_when>
    <thetext>Created attachment 229713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002149</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-18 21:11:31 -0700</bug_when>
    <thetext>Attachment 229713 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/StaticMutex.h:40:  try_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/bmalloc/bmalloc/StaticMutex.h:60:  StaticMutex::try_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/bmalloc/bmalloc/StaticMutex.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 15 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>1002194</commentid>
    <comment_count>3</comment_count>
      <attachid>229713</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-19 00:33:21 -0700</bug_when>
    <thetext>Comment on attachment 229713
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002228</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-19 11:37:21 -0700</bug_when>
    <thetext>Committed r167540: &lt;http://trac.webkit.org/changeset/167540&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229713</attachid>
            <date>2014-04-18 21:09:42 -0700</date>
            <delta_ts>2014-04-19 00:33:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131879-20140418210920.patch</filename>
            <type>text/plain</type>
            <size>42278</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzUyNykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDE0LTA0LTE4ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogTXV0ZXggc2hv
dWxkIGJlIGhhcmRlciB0byB1c2Ugd3JvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMTg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE11dGV4IG5vdyBoYXMgYSBwcm9wZXIgY29uc3RydWN0b3IsIHNv
IHlvdSBjYW4ndCBkZWFkbG9jayBieSBmb3JnZXR0aW5nCisgICAgICAgIHRvIGluaXRpYWxpemUg
aXQuCisKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9y
Ojpwcm9jZXNzWFNtYWxsQWxsb2NhdG9yTG9nKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRv
cjo6cHJvY2Vzc1NtYWxsQWxsb2NhdG9yTG9nKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRv
cjo6cHJvY2Vzc01lZGl1bUFsbG9jYXRvckxvZyk6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0
b3I6OmFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjphbGxvY2F0
ZVhMYXJnZSk6IEdsb2JhbCByZXBsYWNlIE11dGV4ID0+IFN0YXRpY011dGV4LAorICAgICAgICBz
aW5jZSB0aGUgSGVhcCBtdXRleCBpcyBhIHN0YXRpYy4KKworICAgICAgICAqIGJtYWxsb2MvQXN5
bmNUYXNrLmg6CisgICAgICAgIChibWFsbG9jOjpGdW5jdGlvbj46OkFzeW5jVGFzayk6IFVzZSBN
dXRleCwgc2luY2Ugd2UncmUgbm90IHN0YXRpYy4gTm8KKyAgICAgICAgbmVlZCBmb3IgZXhwbGlj
aXQgaW5pdGlhbGl6YXRpb24gYW55bW9yZS4KKworICAgICAgICAqIGJtYWxsb2MvRGVhbGxvY2F0
b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OnNjYXZlbmdlKToKKyAgICAg
ICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6RGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVYTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6
RGVhbGxvY2F0b3I6OnByb2Nlc3NPYmplY3RMb2cpOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxv
Y2F0b3I6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0
b3I6OmRlYWxsb2NhdGVYU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9y
OjphbGxvY2F0ZVNtYWxsTGluZSk6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRvcjo6YWxs
b2NhdGVYU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9j
YXRlTWVkaXVtTGluZSk6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRvcjo6YWxsb2NhdGVN
ZWRpdW1MaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2NhdG9yLmg6CisgICAgICAgICog
Ym1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OnNsZWVwKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OkhlYXApOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6Y29uY3VycmVudFNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OnNjYXZlbmdlU21hbGxQYWdlcyk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpzY2F2ZW5nZVhTbWFsbFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdl
TWVkaXVtUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VMYXJnZVJhbmdl
cyk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVhTbWFsbExpbmVTbG93Q2FzZSk6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsTGluZVNsb3dDYXNlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZVNsb3dDYXNlKToKKyAgICAg
ICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlWExhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmRlYWxsb2NhdGVYTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVM
YXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAg
ICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVhbGxvY2F0ZVhT
bWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVYU21hbGxMaW5lKToK
KyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAo
Ym1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVh
cDo6ZGVhbGxvY2F0ZU1lZGl1bUxpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2Nh
dGVNZWRpdW1MaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0xpbmUuaDoKKyAgICAgICAgKGJtYWxs
b2M6OkxpbmU8VHJhaXRzPjo6ZGVyZWYpOgorICAgICAgICAqIGJtYWxsb2MvTXV0ZXguY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJtYWxsb2MvTXV0ZXguaDoKKyAgICAgICAgKGJtYWxsb2M6Ok11
dGV4OjpNdXRleCk6CisgICAgICAgIChibWFsbG9jOjpNdXRleDo6aW5pdCk6IERlbGV0ZWQuCisg
ICAgICAgIChibWFsbG9jOjpNdXRleDo6dHJ5X2xvY2spOiBEZWxldGVkLgorICAgICAgICAoYm1h
bGxvYzo6TXV0ZXg6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6TXV0ZXg6OnVu
bG9jayk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9QYWdlLmg6CisgICAgICAgIChibWFs
bG9jOjpQYWdlPFRyYWl0cz46OnJlZik6CisgICAgICAgIChibWFsbG9jOjpQYWdlPFRyYWl0cz46
OmRlcmVmKToKKyAgICAgICAgKGJtYWxsb2M6OlBhZ2U8VHJhaXRzPjo6cmVmQ291bnQpOgorICAg
ICAgICAqIGJtYWxsb2MvUGVyUHJvY2Vzcy5oOgorICAgICAgICAoYm1hbGxvYzo6UGVyUHJvY2Vz
czo6bXV0ZXgpOgorICAgICAgICAoYm1hbGxvYzo6UGVyUHJvY2VzczxUPjo6Z2V0U2xvd0Nhc2Up
OgorICAgICAgICAqIGJtYWxsb2MvU3RhdGljTXV0ZXguY3BwOiBBZGRlZC4KKyAgICAgICAgKGJt
YWxsb2M6OlN0YXRpY011dGV4Ojpsb2NrU2xvd0Nhc2UpOgorICAgICAgICAqIGJtYWxsb2MvU3Rh
dGljTXV0ZXguaDogQWRkZWQuCisgICAgICAgIChibWFsbG9jOjpTdGF0aWNNdXRleDo6aW5pdCk6
CisgICAgICAgIChibWFsbG9jOjpTdGF0aWNNdXRleDo6dHJ5X2xvY2spOgorICAgICAgICAoYm1h
bGxvYzo6U3RhdGljTXV0ZXg6OmxvY2spOgorICAgICAgICAoYm1hbGxvYzo6U3RhdGljTXV0ZXg6
OnVubG9jayk6CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6
OlZNSGVhcDo6ZGVhbGxvY2F0ZVhTbWFsbFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFw
OjpkZWFsbG9jYXRlU21hbGxQYWdlKToKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6ZGVhbGxv
Y2F0ZU1lZGl1bVBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjpkZWFsbG9jYXRlTGFy
Z2VSYW5nZSk6CisgICAgICAgICogYm1hbGxvYy9ibWFsbG9jLmg6CisgICAgICAgIChibWFsbG9j
OjphcGk6OnNjYXZlbmdlKTogR2xvYmFsIHJlcGxhY2UgTXV0ZXggPT4gU3RhdGljTXV0ZXgsCisg
ICAgICAgIHNpbmNlIHRoZSBIZWFwIG11dGV4IGlzIGEgc3RhdGljLgorCiAyMDE0LTA0LTE4ICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogQXN5
bmNUYXNrIHNob3VsZCB1c2UgTXV0ZXggaW5zdGVhZCBvZiBzdGQ6Om11dGV4CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNjc1MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDggQEAKIAkJMTQyRkNDN0ExOTAw
ODBCODAwOTAzMkQ0IC8qIFhTbWFsbFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkZDQzc2MTkwMDgwQjgwMDkwMzJENCAvKiBYU21hbGxQYWdl
LmggKi87IH07CiAJCTE0MkZDQzdCMTkwMDgwQjgwMDkwMzJENCAvKiBYU21hbGxUcmFpdHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkZDQzc3MTkw
MDgwQjgwMDkwMzJENCAvKiBYU21hbGxUcmFpdHMuaCAqLzsgfTsKIAkJMTQyRkNDN0QxOTAwODE1
RTAwOTAzMkQ0IC8qIFhTbWFsbEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRkNDN0MxOTAwODE1RTAwOTAzMkQ0IC8qIFhTbWFsbEFs
bG9jYXRvci5oICovOyB9OworCQkxNDNDQjgxQzE5MDIyQkM5MDBCMTZBNDUgLyogU3RhdGljTXV0
ZXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQz
Q0I4MUExOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRpY011dGV4LmNwcCAqLzsgfTsKKwkJMTQzQ0I4
MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRpY011dGV4LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNDQjgxQjE5MDIyQkM5MDBCMTZBNDUgLyogU3Rh
dGljTXV0ZXguaCAqLzsgfTsKIAkJMTQ0OEMzMDAxOEYzNzU0NjAwNTAyODM5IC8qIG1ibWFsbG9j
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDhD
MkZGMThGMzc1NDMwMDUwMjgzOSAvKiBtYm1hbGxvYy5jcHAgKi87IH07CiAJCTE0NDhDMzAxMThG
Mzc1NEMwMDUwMjgzOSAvKiBibWFsbG9jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQ4QzJGRTE4RjM3NTQzMDA1MDI4MzkgLyogYm1hbGxvYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0QzkxOUM5
MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzkxOUM4MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZv
cm0uaCAqLzsgfTsKQEAgLTYyLDcgKzY0LDYgQEAKIAkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJG
IC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTREQTMyMEUxODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovOyB9OwogCQkxNEYyNzFD
ODE4RUEzOTkwMDA4QzE1MkYgLyogT2JqZWN0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2Jq
ZWN0VHlwZS5jcHAgKi87IH07CiAJCTE0RjI3MUM5MThFQTM5OTAwMDhDMTUyRiAvKiBWTUhlYXAu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RjdC
RkIxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5jcHAgKi87IH07Ci0JCTE0RjI3MUNBMThFQTM5
OTAwMDhDMTUyRiAvKiBNdXRleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDREQ0VEODE3QTcyODU3MDA5M0IyRjIgLyogTXV0ZXguY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC05Miw2ICs5Myw4IEBACiAJCTE0MkZDQzc2MTkwMDgw
QjgwMDkwMzJENCAvKiBYU21hbGxQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFhTbWFsbFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2MvWFNtYWxsUGFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDJGQ0M3NzE5MDA4MEI4MDA5MDMyRDQgLyogWFNtYWxsVHJh
aXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTbWFsbFRyYWl0cy5oOyBw
YXRoID0gYm1hbGxvYy9YU21hbGxUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQyRkNDN0MxOTAwODE1RTAwOTAzMkQ0IC8qIFhTbWFsbEFsbG9jYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYU21hbGxBbGxvY2F0b3IuaDsgcGF0aCA9IGJtYWxs
b2MvWFNtYWxsQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0M0NC
ODFBMTkwMjJCQzkwMEIxNkE0NSAvKiBTdGF0aWNNdXRleC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBTdGF0aWNNdXRleC5jcHA7IHBhdGggPSBibWFsbG9jL1N0YXRp
Y011dGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzQ0I4MUIxOTAyMkJD
OTAwQjE2QTQ1IC8qIFN0YXRpY011dGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFN0YXRpY011dGV4Lmg7IHBhdGggPSBibWFsbG9jL1N0YXRpY011dGV4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0UyOUU5MThDQUU4QkUwMEZFOEEwRiAvKiBNZWRpdW1Q
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGl1bVBhZ2UuaDsgcGF0
aCA9IGJtYWxsb2MvTWVkaXVtUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDNFMjlFRDE4Q0FFOTA1MDBGRThBMEYgLyogU21hbGxQYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNtYWxsUGFnZS5oOyBwYXRoID0gYm1hbGxvYy9TbWFsbFBhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0NDY5RTQxN0E0NkJGRTAwRjlFQTFEIC8q
IENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7
IG5hbWUgPSBDYWNoZS5jcHA7IHBhdGggPSBibWFsbG9jL0NhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5jcHA7IH07CkBAIC0xMDEsNyArMTA0LDYgQEAKIAkJMTQ0OEMyRkUxOEYzNzU0MzAwNTAyODM5
IC8qIGJtYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYm1hbGxvYy5oOyBwYXRoID0gYm1hbGxvYy9i
bWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDhDMkZGMThGMzc1NDMw
MDUwMjgzOSAvKiBtYm1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtYm1hbGxvYy5jcHA7
IHBhdGggPSBibWFsbG9jL21ibWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQ0RENFRDYxN0E2NDlEOTAwOTNCMkYyIC8qIE11dGV4LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE11dGV4Lmg7IHBhdGggPSBibWFsbG9jL011dGV4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NERDRUQ4MTdBNzI4NTcwMDkzQjJGMiAvKiBNdXRleC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNdXRleC5jcHA7IHBhdGgg
PSBibWFsbG9jL011dGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RjdC
RkIxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBWTUhlYXAuY3BwOyBwYXRoID0gYm1hbGxvYy9WTUhlYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRGN0JGQzE4QkZDNTE3MDAzNTM3RjMgLyogVk1I
ZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZNSGVhcC5oOyBwYXRoID0g
Ym1hbGxvYy9WTUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ1MjQ3ODUx
OEJDNzU3QzAwRjgwMDk4IC8qIE1lZGl1bUxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTWVkaXVtTGluZS5oOyBwYXRoID0gYm1hbGxvYy9NZWRpdW1MaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzksMTEgKzI4MSwxMiBAQAogCQkJCTE0QzkxOUM4
MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZvcm0uaCAqLywKIAkJCQkxNEQ5REI0NTE3RjI0NDcx
MDBFQUFCNzkgLyogRml4ZWRWZWN0b3IuaCAqLywKIAkJCQkxNDEzRTQ2MDE4OURDRTFFMDA1NDZE
NjggLyogSW5saW5lLmggKi8sCi0JCQkJMTQ0RENFRDgxN0E3Mjg1NzAwOTNCMkYyIC8qIE11dGV4
LmNwcCAqLywKIAkJCQkxNDREQ0VENjE3QTY0OUQ5MDA5M0IyRjIgLyogTXV0ZXguaCAqLywKIAkJ
CQkxNDQ0NkEwNzE3QTYxRkE0MDBGOUVBMUQgLyogUGVyUHJvY2Vzcy5oICovLAogCQkJCTE0NDQ2
OUZEMTdBNjFGMUYwMEY5RUExRCAvKiBQZXJUaHJlYWQuaCAqLywKIAkJCQkxNDVGNjg3ODE3OUUz
QTQ0MDBENjU1OTggLyogUmFuZ2UuaCAqLywKKwkJCQkxNDNDQjgxQTE5MDIyQkM5MDBCMTZBNDUg
LyogU3RhdGljTXV0ZXguY3BwICovLAorCQkJCTE0M0NCODFCMTkwMjJCQzkwMEIxNkE0NSAvKiBT
dGF0aWNNdXRleC5oICovLAogCQkJCTE0MTdGNjRGMThCNzI4MEMwMDc2RkEzRiAvKiBTeXNjYWxs
LmggKi8sCiAJCQkJMTQ3OUUyMTIxN0ExQTI1NTAwNkQ0RTlEIC8qIFZlY3Rvci5oICovLAogCQkJ
CTE0NzlFMjE0MTdBMUE2M0UwMDZENEU5RCAvKiBWTUFsbG9jYXRlLmggKi8sCkBAIC0zMTUsNiAr
MzE4LDcgQEAKIAkJCQkxNERENzhCNDE4RjQ4RDZCMDA5NTA3MDIgLyogQ2h1bmsuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0REQ3OENBMThGNDhENzUwMDk1MDcwMiAvKiBNdXRleC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQyRkNDN0QxOTAwODE1RTAwOTAzMkQ0IC8qIFhTbWFsbEFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRpY011
dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhEMTE4RjQ4RUM2MDA5NTA3MDIgLyogWExh
cmdlQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEI5MThGNDhENkIwMDk1MDcwMiAv
KiBNZWRpdW1UcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDhDMzAxMThGMzc1NEMwMDUw
MjgzOSAvKiBibWFsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTQzMiw3ICs0MzYsNyBAQAogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJMTRGMjcxQ0ExOEVBMzk5MDAwOEMxNTJGIC8qIE11dGV4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0M0NCODFDMTkwMjJCQzkwMEIxNkE0NSAvKiBTdGF0
aWNNdXRleC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEYyNzFDNjE4RUEzOTgzMDA4QzE1MkYg
LyogU2VncmVnYXRlZEZyZWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUMzMThF
QTM5NzgwMDhDMTUyRiAvKiBBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRGMjcx
QzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxNjc1MDQpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBBbGxvY2F0b3I6OmxvZyhYU21hbGxBbGxvY2F0b3ImIGFsbAogCiB2b2lkIEFs
bG9jYXRvcjo6cHJvY2Vzc1hTbWFsbEFsbG9jYXRvckxvZygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOworICAgIHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKIAog
ICAgIGZvciAoYXV0byYgbG9nRW50cnkgOiBtX3hTbWFsbEFsbG9jYXRvckxvZykgewogICAgICAg
ICBpZiAoIWxvZ0VudHJ5LmZpcnN0LT5kZXJlZihsb2NrLCBsb2dFbnRyeS5zZWNvbmQpKQpAQCAt
MTA1LDcgKzEwNSw3IEBAIHZvaWQgQWxsb2NhdG9yOjpsb2coU21hbGxBbGxvY2F0b3ImIGFsbG8K
IAogdm9pZCBBbGxvY2F0b3I6OnByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZygpCiB7Ci0gICAgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOworICAg
IHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRl
eCgpKTsKIAogICAgIGZvciAoYXV0byYgbG9nRW50cnkgOiBtX3NtYWxsQWxsb2NhdG9yTG9nKSB7
CiAgICAgICAgIGlmICghbG9nRW50cnkuZmlyc3QtPmRlcmVmKGxvY2ssIGxvZ0VudHJ5LnNlY29u
ZCkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBBbGxvY2F0b3I6OmxvZyhNZWRpdW1BbGxvY2F0
b3ImIGFsbAogCiB2b2lkIEFsbG9jYXRvcjo6cHJvY2Vzc01lZGl1bUFsbG9jYXRvckxvZygpCiB7
Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4
KCkpOworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhl
YXA+OjptdXRleCgpKTsKIAogICAgIGZvciAoYXV0byYgbG9nRW50cnkgOiBtX21lZGl1bUFsbG9j
YXRvckxvZykgewogICAgICAgICBpZiAoIWxvZ0VudHJ5LmZpcnN0LT5kZXJlZihsb2NrLCBsb2dF
bnRyeS5zZWNvbmQpKQpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgdm9pZCBBbGxvY2F0b3I6OnByb2Nl
c3NNZWRpdW1BbGxvY2F0b3JMbwogdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZUxhcmdlKHNpemVf
dCBzaXplKQogewogICAgIHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPGxhcmdlQWxpZ25tZW50
PihzaXplKTsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFw
Pjo6bXV0ZXgoKSk7CisgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKFBlclBy
b2Nlc3M8SGVhcD46Om11dGV4KCkpOwogICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRG
YXN0Q2FzZSgpLT5hbGxvY2F0ZUxhcmdlKGxvY2ssIHNpemUpOwogfQogCiB2b2lkKiBBbGxvY2F0
b3I6OmFsbG9jYXRlWExhcmdlKHNpemVfdCBzaXplKQogewogICAgIHNpemUgPSByb3VuZFVwVG9N
dWx0aXBsZU9mPGxhcmdlQWxpZ25tZW50PihzaXplKTsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CisgICAgc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOwogICAgIHJldHVy
biBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5hbGxvY2F0ZVhMYXJnZShsb2NrLCBz
aXplKTsKIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Bc3luY1Rhc2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FzeW5jVGFzay5oCShyZXZpc2lvbiAx
Njc1MjYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FzeW5jVGFzay5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw2IEBAIEFzeW5jVGFzazxPYmplY3QsIEZ1bmN0aW9uPjo6QXN5bmNU
YXNrKE8KICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CiB7Ci0gICAgbV9jb25kaXRpb25NdXRleC5pbml0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9iamVjdCwgdHlwZW5hbWUgRnVuY3Rpb24+CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlYWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
YWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTY3NTA0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9EZWFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBE
ZWFsbG9jYXRvcjo6c2NhdmVuZ2UoKQogewogICAgIHByb2Nlc3NPYmplY3RMb2coKTsKICAgICAK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgo
KSk7CisgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVh
cD46Om11dGV4KCkpOwogICAgIEhlYXAqIGhlYXAgPSBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0
Q2FzZSgpOwogICAgIAogICAgIHdoaWxlIChtX3hTbWFsbExpbmVDYWNoZS5zaXplKCkpCkBAIC02
OCwxOSArNjgsMTkgQEAgdm9pZCBEZWFsbG9jYXRvcjo6c2NhdmVuZ2UoKQogCiB2b2lkIERlYWxs
b2NhdG9yOjpkZWFsbG9jYXRlTGFyZ2Uodm9pZCogb2JqZWN0KQogewotICAgIHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAg
ICAgUGVyUHJvY2VzczxIZWFwPjo6Z2V0RmFzdENhc2UoKS0+ZGVhbGxvY2F0ZUxhcmdlKGxvY2ss
IG9iamVjdCk7CiB9CiAKIHZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVYTGFyZ2Uodm9pZCog
b2JqZWN0KQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhl
YXA+OjptdXRleCgpKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVy
UHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgUGVyUHJvY2VzczxIZWFwPjo6Z2V0RmFzdENh
c2UoKS0+ZGVhbGxvY2F0ZVhMYXJnZShsb2NrLCBvYmplY3QpOwogfQogCiB2b2lkIERlYWxsb2Nh
dG9yOjpwcm9jZXNzT2JqZWN0TG9nKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxv
Y2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CisgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOwogICAgIAogICAgIGZvciAo
YXV0byBvYmplY3QgOiBtX29iamVjdExvZykgewogICAgICAgICBpZiAoaXNYU21hbGwob2JqZWN0
KSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVTbG93
Q2FzZSh2b2kKICAgICByZXR1cm4gZGVhbGxvY2F0ZVhMYXJnZShvYmplY3QpOwogfQogCi12b2lk
IERlYWxsb2NhdG9yOjpkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2ssIFNtYWxsTGluZSogbGluZSkKK3ZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVTbWFs
bExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgU21hbGxMaW5lKiBsaW5l
KQogewogICAgIGlmIChtX3NtYWxsTGluZUNhY2hlLnNpemUoKSA9PSBtX3NtYWxsTGluZUNhY2hl
LmNhcGFjaXR5KCkpCiAgICAgICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2Fz
ZSgpLT5kZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIGxpbmUpOwpAQCAtMTMzLDcgKzEzMyw3IEBA
IHZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVTbWFsbExpbmUoc3QKICAgICBtX3NtYWxsTGlu
ZUNhY2hlLnB1c2gobGluZSk7CiB9CiAKLXZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVYU21h
bGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIFhTbWFsbExpbmUqIGxpbmUpCit2
b2lkIERlYWxsb2NhdG9yOjpkZWFsbG9jYXRlWFNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTXV0ZXg+JiBsb2NrLCBYU21hbGxMaW5lKiBsaW5lKQogewogICAgIGlmIChtX3hTbWFsbExp
bmVDYWNoZS5zaXplKCkgPT0gbV94U21hbGxMaW5lQ2FjaGUuY2FwYWNpdHkoKSkKICAgICAgICAg
cmV0dXJuIFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCktPmRlYWxsb2NhdGVYU21hbGxM
aW5lKGxvY2ssIGxpbmUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgRGVhbGxvY2F0b3I6OmRl
YWxsb2NhdGVYU21hbGxMaW5lKHMKIFNtYWxsTGluZSogRGVhbGxvY2F0b3I6OmFsbG9jYXRlU21h
bGxMaW5lKCkKIHsKICAgICBpZiAoIW1fc21hbGxMaW5lQ2FjaGUuc2l6ZSgpKSB7Ci0gICAgICAg
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsK
KyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVh
cD46Om11dGV4KCkpOwogICAgICAgICBIZWFwKiBoZWFwID0gUGVyUHJvY2VzczxIZWFwPjo6Z2V0
RmFzdENhc2UoKTsKIAogICAgICAgICB3aGlsZSAobV9zbWFsbExpbmVDYWNoZS5zaXplKCkgIT0g
bV9zbWFsbExpbmVDYWNoZS5jYXBhY2l0eSgpKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFNtYWxsTGlu
ZSogRGVhbGxvY2F0b3I6OmFsbG9jYXRlU21hbGxMaW4KIFhTbWFsbExpbmUqIERlYWxsb2NhdG9y
OjphbGxvY2F0ZVhTbWFsbExpbmUoKQogewogICAgIGlmICghbV94U21hbGxMaW5lQ2FjaGUuc2l6
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhl
YXA+OjptdXRleCgpKTsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2Nr
KFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOwogICAgICAgICBIZWFwKiBoZWFwID0gUGVyUHJv
Y2VzczxIZWFwPjo6Z2V0RmFzdENhc2UoKTsKIAogICAgICAgICB3aGlsZSAobV94U21hbGxMaW5l
Q2FjaGUuc2l6ZSgpICE9IG1feFNtYWxsTGluZUNhY2hlLmNhcGFjaXR5KCkpCkBAIC0xNjcsNyAr
MTY3LDcgQEAgWFNtYWxsTGluZSogRGVhbGxvY2F0b3I6OmFsbG9jYXRlWFNtYWxsTAogICAgIHJl
dHVybiBtX3hTbWFsbExpbmVDYWNoZS5wb3AoKTsKIH0KIAotdm9pZCBEZWFsbG9jYXRvcjo6ZGVh
bGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgTWVkaXVtTGlu
ZSogbGluZSkKK3ZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIE1lZGl1bUxpbmUqIGxpbmUpCiB7CiAgICAgaWYg
KG1fbWVkaXVtTGluZUNhY2hlLnNpemUoKSA9PSBtX21lZGl1bUxpbmVDYWNoZS5jYXBhY2l0eSgp
KQogICAgICAgICByZXR1cm4gUGVyUHJvY2VzczxIZWFwPjo6Z2V0RmFzdENhc2UoKS0+ZGVhbGxv
Y2F0ZU1lZGl1bUxpbmUobG9jaywgbGluZSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBEZWFs
bG9jYXRvcjo6ZGVhbGxvY2F0ZU1lZGl1bUxpbmUocwogTWVkaXVtTGluZSogRGVhbGxvY2F0b3I6
OmFsbG9jYXRlTWVkaXVtTGluZSgpCiB7CiAgICAgaWYgKCFtX21lZGl1bUxpbmVDYWNoZS5zaXpl
KCkpIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVh
cD46Om11dGV4KCkpOworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2so
UGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgICAgIEhlYXAqIGhlYXAgPSBQZXJQcm9j
ZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpOwogCiAgICAgICAgIHdoaWxlIChtX21lZGl1bUxpbmVD
YWNoZS5zaXplKCkgIT0gbV9tZWRpdW1MaW5lQ2FjaGUuY2FwYWNpdHkoKSkKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmgJKHJldmlzaW9uIDE2NzUwNCkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1
LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGRlYWxsb2NhdGVGYXN0Q2FzZSh2b2lkKik7CiAgICAg
dm9pZCBkZWFsbG9jYXRlU2xvd0Nhc2Uodm9pZCopOwogCi0gICAgdm9pZCBkZWFsbG9jYXRlWFNt
YWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgWFNtYWxsTGluZSopOworICAgIHZvaWQg
ZGVhbGxvY2F0ZVhTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIFhTbWFs
bExpbmUqKTsKICAgICBYU21hbGxMaW5lKiBhbGxvY2F0ZVhTbWFsbExpbmUoKTsKIAotICAgIHZv
aWQgZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgU21hbGxMaW5l
Kik7CisgICAgdm9pZCBkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNN
dXRleD4mLCBTbWFsbExpbmUqKTsKICAgICBTbWFsbExpbmUqIGFsbG9jYXRlU21hbGxMaW5lKCk7
CiAKLSAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBNZWRpdW1MaW5lKik7CisgICAgdm9pZCBkZWFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTXV0ZXg+JiwgTWVkaXVtTGluZSopOwogICAgIE1lZGl1bUxpbmUqIGFsbG9j
YXRlTWVkaXVtTGluZSgpOwogICAgIAogICAgIHZvaWQgc2NhdmVuZ2UoKTsKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmNwcAkocmV2aXNpb24gMTY3NTA0KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzbGVlcChzdGQ6OnVuaXF1ZV9sb2Nr
PE11dGV4PiYgbG9jaywgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkdXJhdGlvbikKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzbGVlcChzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaywg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkdXJhdGlvbikKIHsKICAgICBpZiAoZHVyYXRpb24g
PT0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygwKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcs
NyArNDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2xlZXAoc3RkOjp1bmlxdWVfbG9jCiAgICAg
bG9jay5sb2NrKCk7CiB9CiAKLUhlYXA6OkhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitI
ZWFwOjpIZWFwKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQogICAgIDogbV9pc0FsbG9j
YXRpbmdQYWdlcyhmYWxzZSkKICAgICAsIG1fc2NhdmVuZ2VyKCp0aGlzLCAmSGVhcDo6Y29uY3Vy
cmVudFNjYXZlbmdlKQogewpAQCAtNTUsMTEgKzU1LDExIEBAIEhlYXA6OkhlYXAoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCiAKIHZvaWQgSGVhcDo6Y29uY3VycmVudFNjYXZlbmdlKCkKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkp
OworICAgIHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFw
Pjo6bXV0ZXgoKSk7CiAgICAgc2NhdmVuZ2UobG9jaywgc2NhdmVuZ2VTbGVlcER1cmF0aW9uKTsK
IH0KICAgICAKLXZvaWQgSGVhcDo6c2NhdmVuZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxv
Y2ssIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikKK3ZvaWQgSGVhcDo6
c2NhdmVuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikKIHsKICAgICBzY2F2ZW5nZVhTbWFsbFBhZ2Vz
KGxvY2ssIHNsZWVwRHVyYXRpb24pOwogICAgIHNjYXZlbmdlU21hbGxQYWdlcyhsb2NrLCBzbGVl
cER1cmF0aW9uKTsKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OnVu
aXF1ZV9sb2NrPE11dAogICAgIHNsZWVwKGxvY2ssIHNsZWVwRHVyYXRpb24pOwogfQogCi12b2lk
IEhlYXA6OnNjYXZlbmdlU21hbGxQYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uKQordm9pZCBIZWFwOjpzY2F2
ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikKIHsKICAgICB3aGlsZSAoMSkgewog
ICAgICAgICBpZiAobV9pc0FsbG9jYXRpbmdQYWdlcykgewpAQCAtODUsNyArODUsNyBAQCB2b2lk
IEhlYXA6OnNjYXZlbmdlU21hbGxQYWdlcyhzdGQ6OnVuaXF1CiAgICAgfQogfQogCi12b2lkIEhl
YXA6OnNjYXZlbmdlWFNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikKK3ZvaWQgSGVhcDo6c2NhdmVu
Z2VYU21hbGxQYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaywgc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uKQogewogICAgIHdoaWxlICgxKSB7CiAg
ICAgICAgIGlmIChtX2lzQWxsb2NhdGluZ1BhZ2VzKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBIZWFwOjpzY2F2ZW5nZVhTbWFsbFBhZ2VzKHN0ZDo6dW5pcQogICAgIH0KIH0KIAotdm9pZCBI
ZWFwOjpzY2F2ZW5nZU1lZGl1bVBhZ2VzKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHNsZWVwRHVyYXRpb24pCit2b2lkIEhlYXA6OnNjYXZl
bmdlTWVkaXVtUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikKIHsKICAgICB3aGlsZSAoMSkgewog
ICAgICAgICBpZiAobV9pc0FsbG9jYXRpbmdQYWdlcykgewpAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgSGVhcDo6c2NhdmVuZ2VNZWRpdW1QYWdlcyhzdGQ6OnVuaXEKICAgICB9CiB9CiAKLXZvaWQg
SGVhcDo6c2NhdmVuZ2VMYXJnZVJhbmdlcyhzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uKQordm9pZCBIZWFwOjpzY2F2
ZW5nZUxhcmdlUmFuZ2VzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzIHNsZWVwRHVyYXRpb24pCiB7CiAgICAgd2hpbGUgKDEpIHsK
ICAgICAgICAgaWYgKG1faXNBbGxvY2F0aW5nUGFnZXMpIHsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2
b2lkIEhlYXA6OnNjYXZlbmdlTGFyZ2VSYW5nZXMoc3RkOjp1bmlxCiAgICAgfQogfQogCi1YU21h
bGxMaW5lKiBIZWFwOjphbGxvY2F0ZVhTbWFsbExpbmVTbG93Q2FzZShzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiBsb2NrKQorWFNtYWxsTGluZSogSGVhcDo6YWxsb2NhdGVYU21hbGxMaW5lU2xvd0Nh
c2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKIHsKICAgICBtX2lzQWxsb2Nh
dGluZ1BhZ2VzID0gdHJ1ZTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIFhTbWFsbExpbmUqIEhlYXA6
OmFsbG9jYXRlWFNtYWxsTGluZVNsb3cKICAgICByZXR1cm4gbGluZTsKIH0KIAotU21hbGxMaW5l
KiBIZWFwOjphbGxvY2F0ZVNtYWxsTGluZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2spCitTbWFsbExpbmUqIEhlYXA6OmFsbG9jYXRlU21hbGxMaW5lU2xvd0Nhc2Uoc3RkOjps
b2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKIHsKICAgICBtX2lzQWxsb2NhdGluZ1BhZ2Vz
ID0gdHJ1ZTsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIFNtYWxsTGluZSogSGVhcDo6YWxsb2NhdGVT
bWFsbExpbmVTbG93Q2EKICAgICByZXR1cm4gbGluZTsKIH0KIAotTWVkaXVtTGluZSogSGVhcDo6
YWxsb2NhdGVNZWRpdW1MaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaykK
K01lZGl1bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZVNsb3dDYXNlKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCiB7CiAgICAgbV9pc0FsbG9jYXRpbmdQYWdlcyA9IHRy
dWU7CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBNZWRpdW1MaW5lKiBIZWFwOjphbGxvY2F0ZU1lZGl1
bUxpbmVTbG93CiAgICAgcmV0dXJuIGxpbmU7CiB9CiAKLXZvaWQqIEhlYXA6OmFsbG9jYXRlWExh
cmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3Qgc2l6ZSkKK3ZvaWQqIEhlYXA6OmFs
bG9jYXRlWExhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBYTGFyZ2VDaHVuayogY2h1bmsgPSBYTGFyZ2VDaHVuazo6Y3JlYXRlKHNpemUpOwog
CkBAIC0yMDksMTMgKzIwOSwxMyBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZVhMYXJnZShzdGQ6Omxv
Y2tfZ3VhCiAgICAgcmV0dXJuIGNodW5rLT5iZWdpbigpOwogfQogCi12b2lkIEhlYXA6OmRlYWxs
b2NhdGVYTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHZvaWQqIG9iamVjdCkKK3ZvaWQg
SGVhcDo6ZGVhbGxvY2F0ZVhMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgdm9p
ZCogb2JqZWN0KQogewogICAgIFhMYXJnZUNodW5rKiBjaHVuayA9IFhMYXJnZUNodW5rOjpnZXQo
b2JqZWN0KTsKICAgICBYTGFyZ2VDaHVuazo6ZGVzdHJveShjaHVuayk7CiB9CiAKLXZvaWQqIEhl
YXA6OmFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHNpemVfdCBzaXplKQor
dm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQkFTU0VSVChzaXplIDw9IGxhcmdlTWF4KTsKICAgICBCQVNT
RVJUKHNpemUgPj0gbGFyZ2VNaW4pOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQqIEhlYXA6OmFs
bG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXIKICAgICByZXR1cm4gcmFuZ2UuYmVnaW4oKTsKIH0K
IAotdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHZv
aWQqIG9iamVjdCkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgUmFuZ2UgcmFuZ2UgPSBCb3VuZGFy
eVRhZzo6ZGVhbGxvY2F0ZShvYmplY3QpOwogICAgIG1fbGFyZ2VSYW5nZXMuaW5zZXJ0KHJhbmdl
KTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCShyZXZpc2lvbiAxNjc1MDQpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzEgKzQ0LDMxIEBA
IGNsYXNzIEVuZFRhZzsKIAogY2xhc3MgSGVhcCB7CiBwdWJsaWM6Ci0gICAgSGVhcChzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
Jik7CiAgICAgCi0gICAgWFNtYWxsTGluZSogYWxsb2NhdGVYU21hbGxMaW5lKHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKLSAgICB2b2lkIGRlYWxsb2NhdGVYU21hbGxMaW5lKHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBYU21hbGxMaW5lKik7CisgICAgWFNtYWxsTGluZSogYWxsb2NhdGVYU21h
bGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKKyAgICB2b2lkIGRlYWxsb2Nh
dGVYU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBYU21hbGxMaW5lKik7
CiAKLSAgICBTbWFsbExpbmUqIGFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKLSAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIFNtYWxsTGluZSopOworICAgIFNtYWxsTGluZSogYWxsb2NhdGVTbWFsbExpbmUoc3RkOjps
b2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOworICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsTGluZShz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgU21hbGxMaW5lKik7CiAKLSAgICBNZWRpdW1M
aW5lKiBhbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwotICAgIHZv
aWQgZGVhbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIE1lZGl1bUxp
bmUqKTsKKyAgICBNZWRpdW1MaW5lKiBhbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY011dGV4PiYpOworICAgIHZvaWQgZGVhbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYsIE1lZGl1bUxpbmUqKTsKICAgICAKLSAgICB2b2lkKiBhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3QpOwotICAgIHZvaWQgZGVh
bGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCB2b2lkKik7CisgICAgdm9pZCog
YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKKyAg
ICB2b2lkIGRlYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgdm9p
ZCopOwogCi0gICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IHNpemVfdCk7Ci0gICAgdm9pZCBkZWFsbG9jYXRlWExhcmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCB2b2lkKik7CisgICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYsIHNpemVfdCk7CisgICAgdm9pZCBkZWFsbG9jYXRlWExhcmdlKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKik7CiAKLSAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0
aW9uKTsKKyAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uKTsKICAgICAKIHByaXZhdGU6
CiAgICAgfkhlYXAoKSA9IGRlbGV0ZTsKIAotICAgIFhTbWFsbExpbmUqIGFsbG9jYXRlWFNtYWxs
TGluZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKLSAgICBTbWFsbExpbmUqIGFs
bG9jYXRlU21hbGxMaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwotICAgIE1l
ZGl1bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKKyAgICBYU21hbGxMaW5lKiBhbGxvY2F0ZVhTbWFsbExpbmVTbG93Q2FzZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CisgICAgU21hbGxMaW5lKiBhbGxvY2F0ZVNtYWxsTGlu
ZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKKyAgICBNZWRpdW1MaW5l
KiBhbGxvY2F0ZU1lZGl1bUxpbmVTbG93Q2FzZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
Jik7CiAKICAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKFJhbmdlLCBzaXplX3QpOwogICAgIFJhbmdl
IGFsbG9jYXRlTGFyZ2VDaHVuaygpOwpAQCAtNzksMTAgKzc5LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBtZXJnZUxhcmdlUmlnaHQoRW5kVGFnKiYsIEJlZ2luVGFnKiYsIFJhbmdlJiwgYm9vbCYg
aGFzUGh5c2ljYWxQYWdlcyk7CiAgICAgCiAgICAgdm9pZCBjb25jdXJyZW50U2NhdmVuZ2UoKTsK
LSAgICB2b2lkIHNjYXZlbmdlWFNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKLSAgICB2b2lkIHNjYXZlbmdlU21hbGxQYWdlcyhz
dGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpOwotICAg
IHZvaWQgc2NhdmVuZ2VNZWRpdW1QYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMpOwotICAgIHZvaWQgc2NhdmVuZ2VMYXJnZVJhbmdlcyhzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpOworICAgIHZv
aWQgc2NhdmVuZ2VYU21hbGxQYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpOworICAgIHZvaWQgc2NhdmVuZ2VTbWFsbFBhZ2VzKHN0
ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyk7
CisgICAgdm9pZCBzY2F2ZW5nZU1lZGl1bVBhZ2VzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0
ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyk7CisgICAgdm9pZCBzY2F2ZW5nZUxhcmdl
UmFuZ2VzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcyk7CiAKICAgICBWZWN0b3I8WFNtYWxsTGluZSo+IG1feFNtYWxsTGluZXM7CiAgICAg
VmVjdG9yPFNtYWxsTGluZSo+IG1fc21hbGxMaW5lczsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIEFzeW5jVGFzazxIZWFwLCBkZWNsdHlwZSgmSGVhcDo6Y29uY3VycmVudFNjYXZl
bmdlKT4gbV9zY2F2ZW5nZXI7CiB9OwogCi1pbmxpbmUgdm9pZCBIZWFwOjpkZWFsbG9jYXRlWFNt
YWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBYU21hbGxMaW5lKiBsaW5lKQor
aW5saW5lIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVhTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYgbG9jaywgWFNtYWxsTGluZSogbGluZSkKIHsKICAgICBYU21hbGxQYWdlKiBw
YWdlID0gWFNtYWxsUGFnZTo6Z2V0KGxpbmUpOwogICAgIGlmIChwYWdlLT5kZXJlZihsb2NrKSkg
ewpAQCAtMTExLDcgKzExMSw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlYWxsb2NhdGVYU21hbGxM
aW5lKHMKICAgICBtX3hTbWFsbExpbmVzLnB1c2gobGluZSk7CiB9CiAKLWlubGluZSBYU21hbGxM
aW5lKiBIZWFwOjphbGxvY2F0ZVhTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9j
aykKK2lubGluZSBYU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0ZVhTbWFsbExpbmUoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKIHsKICAgICB3aGlsZSAobV94U21hbGxMaW5lcy5z
aXplKCkpIHsKICAgICAgICAgWFNtYWxsTGluZSogbGluZSA9IG1feFNtYWxsTGluZXMucG9wKCk7
CkBAIC0xMjUsNyArMTI1LDcgQEAgaW5saW5lIFhTbWFsbExpbmUqIEhlYXA6OmFsbG9jYXRlWFNt
YWxsTAogICAgIHJldHVybiBhbGxvY2F0ZVhTbWFsbExpbmVTbG93Q2FzZShsb2NrKTsKIH0KIAot
aW5saW5lIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrLCBTbWFsbExpbmUqIGxpbmUpCitpbmxpbmUgdm9pZCBIZWFwOjpkZWFsbG9jYXRl
U21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxsTGluZSog
bGluZSkKIHsKICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBhZ2U6OmdldChsaW5lKTsKICAg
ICBpZiAocGFnZS0+ZGVyZWYobG9jaykpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgdm9p
ZCBIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKHN0CiAgICAgbV9zbWFsbExpbmVzLnB1c2gobGlu
ZSk7CiB9CiAKLWlubGluZSBTbWFsbExpbmUqIEhlYXA6OmFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mIGxvY2spCitpbmxpbmUgU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0
ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQogewogICAgIHdo
aWxlIChtX3NtYWxsTGluZXMuc2l6ZSgpKSB7CiAgICAgICAgIFNtYWxsTGluZSogbGluZSA9IG1f
c21hbGxMaW5lcy5wb3AoKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBpbmxpbmUgU21hbGxMaW5lKiBI
ZWFwOjphbGxvY2F0ZVNtYWxsTGluCiAgICAgcmV0dXJuIGFsbG9jYXRlU21hbGxMaW5lU2xvd0Nh
c2UobG9jayk7CiB9CiAKLWlubGluZSB2b2lkIEhlYXA6OmRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIE1lZGl1bUxpbmUqIGxpbmUpCitpbmxpbmUgdm9p
ZCBIZWFwOjpkZWFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
JiBsb2NrLCBNZWRpdW1MaW5lKiBsaW5lKQogewogICAgIE1lZGl1bVBhZ2UqIHBhZ2UgPSBNZWRp
dW1QYWdlOjpnZXQobGluZSk7CiAgICAgaWYgKHBhZ2UtPmRlcmVmKGxvY2spKSB7CkBAIC0xNjEs
NyArMTYxLDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZU1lZGl1bUxpbmUocwogICAg
IG1fbWVkaXVtTGluZXMucHVzaChsaW5lKTsKIH0KIAotaW5saW5lIE1lZGl1bUxpbmUqIEhlYXA6
OmFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrKQoraW5saW5l
IE1lZGl1bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTXV0ZXg+JiBsb2NrKQogewogICAgIHdoaWxlIChtX21lZGl1bUxpbmVzLnNpemUoKSkgewog
ICAgICAgICBNZWRpdW1MaW5lKiBsaW5lID0gbV9tZWRpdW1MaW5lcy5wb3AoKTsKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvTGluZS5oCShyZXZpc2lvbiAxNjc1MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0xpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIExpbmUqIGdldCh2b2lkKik7CiAKICAgICB2b2lkIGNvbmN1cnJlbnRSZWYodW5zaWdu
ZWQgY2hhciA9IDEpOwotICAgIGJvb2wgZGVyZWYoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHVu
c2lnbmVkIGNoYXIgPSAxKTsKKyAgICBib29sIGRlcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNN
dXRleD4mLCB1bnNpZ25lZCBjaGFyID0gMSk7CiAgICAgCiAgICAgY2hhciogYmVnaW4oKTsKICAg
ICBjaGFyKiBlbmQoKTsKQEAgLTg4LDcgKzg4LDcgQEAgaW5saW5lIHZvaWQgTGluZTxUcmFpdHM+
Ojpjb25jdXJyZW50UmVmKAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgYm9v
bCBMaW5lPFRyYWl0cz46OmRlcmVmKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCB1bnNpZ25lZCBj
aGFyIGNvdW50KQoraW5saW5lIGJvb2wgTGluZTxUcmFpdHM+OjpkZXJlZihzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhciBjb3VudCkKIHsKICAgICBCQVNTRVJUKGNv
dW50IDw9IG1fcmVmQ291bnQpOwogICAgIG1fcmVmQ291bnQgLT0gY291bnQ7CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL011dGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL011dGV4LmNwcAkocmV2aXNpb24gMTY3NTA0KQorKysgU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9NdXRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiTXV0ZXgu
aCIKLSNpbmNsdWRlIDx0aHJlYWQ+Ci0KLW5hbWVzcGFjZSBibWFsbG9jIHsKLQotdm9pZCBNdXRl
eDo6bG9ja1Nsb3dDYXNlKCkKLXsKLSAgICB3aGlsZSAoIXRyeV9sb2NrKCkpCi0gICAgICAgIHN0
ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL011dGV4LmgJKHJldmlzaW9uIDE2NzUyNikKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTXV0ZXguaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDYgKzI2LDIwIEBACiAj
aWZuZGVmIE11dGV4X2gKICNkZWZpbmUgTXV0ZXhfaAogCi0jaW5jbHVkZSAiQkFzc2VydC5oIgot
I2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlICJTdGF0aWNNdXRleC5oIgogCi0vLyBBIHJlcGxh
Y2VtZW50IGZvciBzdGQ6Om11dGV4IHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbiBleGl0LXRpbWUg
ZGVzdHJ1Y3Rvci4KKy8vIEEgZmFzdCByZXBsYWNlbWVudCBmb3Igc3RkOjptdXRleC4KIAogbmFt
ZXNwYWNlIGJtYWxsb2MgewogCi1zdHJ1Y3QgTXV0ZXggeworY2xhc3MgTXV0ZXggOiBwdWJsaWMg
U3RhdGljTXV0ZXggewogcHVibGljOgotICAgIHZvaWQgaW5pdCgpOwotCi0gICAgdm9pZCBsb2Nr
KCk7Ci0gICAgYm9vbCB0cnlfbG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7Ci0gICAgCi1wcml2
YXRlOgotICAgIHZvaWQgbG9ja1Nsb3dDYXNlKCk7Ci0KLSAgICBzdGQ6OmF0b21pY19mbGFnIG1f
ZmxhZzsKKyAgICBNdXRleCgpOwogfTsKIAotaW5saW5lIHZvaWQgTXV0ZXg6OmluaXQoKQotewot
ICAgIG1fZmxhZy5jbGVhcigpOwotfQotCi1pbmxpbmUgYm9vbCBNdXRleDo6dHJ5X2xvY2soKQot
ewotICAgIHJldHVybiAhbV9mbGFnLnRlc3RfYW5kX3NldChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1
aXJlKTsKLX0KLQotaW5saW5lIHZvaWQgTXV0ZXg6OmxvY2soKQotewotICAgIGlmICghdHJ5X2xv
Y2soKSkKLSAgICAgICAgbG9ja1Nsb3dDYXNlKCk7Ci19Ci0KLWlubGluZSB2b2lkIE11dGV4Ojp1
bmxvY2soKQoraW5saW5lIE11dGV4OjpNdXRleCgpCiB7Ci0gICAgbV9mbGFnLmNsZWFyKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgIGluaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWdlLmgJKHJldmlzaW9uIDE2NzUwNCkKKysrIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5
IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgUGFnZSogZ2V0KExpbmUqKTsKIAotICAgIHZv
aWQgcmVmKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKLSAgICBib29sIGRlcmVmKHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKTsKLSAgICB1bnNpZ25lZCByZWZDb3VudChzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+Jik7CisgICAgdm9pZCByZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwor
ICAgIGJvb2wgZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOworICAgIHVuc2ln
bmVkIHJlZkNvdW50KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKICAgICAKICAgICBM
aW5lKiBiZWdpbigpOwogICAgIExpbmUqIGVuZCgpOwpAQCAtNTcsMTQgKzU3LDE0IEBAIHByaXZh
dGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci1pbmxpbmUgdm9pZCBQYWdlPFRy
YWl0cz46OnJlZihzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK2lubGluZSB2b2lkIFBhZ2U8VHJh
aXRzPjo6cmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQogewogICAgIEJBU1NFUlQo
bV9yZWZDb3VudCA8IG1heFJlZkNvdW50KTsKICAgICArK21fcmVmQ291bnQ7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlubGluZSBib29sIFBhZ2U8VHJhaXRzPjo6ZGVyZWYoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCitpbmxpbmUgYm9vbCBQYWdlPFRyYWl0cz46OmRlcmVmKHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQogewogICAgIEJBU1NFUlQobV9yZWZDb3VudCk7
CiAgICAgLS1tX3JlZkNvdW50OwpAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBQYWdlPFRy
YWl0cz46OmRlcmVmKHN0ZDo6bG9jCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlu
bGluZSB1bnNpZ25lZCBQYWdlPFRyYWl0cz46OnJlZkNvdW50KHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKQoraW5saW5lIHVuc2lnbmVkIFBhZ2U8VHJhaXRzPjo6cmVmQ291bnQoc3RkOjpsb2NrX2d1
YXJkPFN0YXRpY011dGV4PiYpCiB7CiAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiB9CkluZGV4OiBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1BlclByb2Nlc3MuaAkocmV2aXNpb24gMTY3NTA0KQorKysgU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9QZXJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3
LDggQEAKICNkZWZpbmUgUGVyUHJvY2Vzc19oCiAKICNpbmNsdWRlICJJbmxpbmUuaCIKLSNpbmNs
dWRlICJNdXRleC5oIgogI2luY2x1ZGUgIlNpemVzLmgiCisjaW5jbHVkZSAiU3RhdGljTXV0ZXgu
aCIKICNpbmNsdWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAvLyB4ID0gb2JqZWN0LT5tX2ZpZWxkOyAvLyBPSwog
Ly8gaWYgKGdvYmFsRmxhZykgeyAuLi4gfSAvLyBVbmRlZmluZWQgYmVoYXZpb3IuCiAvLwotLy8g
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKFBlclByb2Nlc3M8T2JqZWN0Pjo6bXV0ZXgoKSk7
CisvLyBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxPYmplY3Q+
OjptdXRleCgpKTsKIC8vIE9iamVjdCogb2JqZWN0ID0gUGVyUHJvY2VzczxPYmplY3Q+OjpnZXQo
bG9jayk7CiAvLyBpZiAoZ29iYWxGbGFnKSB7IC4uLiB9IC8vIE9LLgogCkBAIC01OCwxMyArNTgs
MTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBUKiBnZXQoKTsKICAgICBzdGF0aWMgVCogZ2V0RmFz
dENhc2UoKTsKICAgICAKLSAgICBzdGF0aWMgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gc19tdXRl
eDsgfQorICAgIHN0YXRpYyBTdGF0aWNNdXRleCYgbXV0ZXgoKSB7IHJldHVybiBzX211dGV4OyB9
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFQqIGdldFNsb3dDYXNlKCk7CiAKICAgICBzdGF0aWMg
c3RkOjphdG9taWM8VCo+IHNfb2JqZWN0OwotICAgIHN0YXRpYyBNdXRleCBzX211dGV4OworICAg
IHN0YXRpYyBTdGF0aWNNdXRleCBzX211dGV4OwogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6
OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46
OnR5cGUgTWVtb3J5OwogICAgIHN0YXRpYyBNZW1vcnkgc19tZW1vcnk7CkBAIC04OCw3ICs4OCw3
IEBAIElOTElORSBUKiBQZXJQcm9jZXNzPFQ+OjpnZXQoKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IE5PX0lOTElORSBUKiBQZXJQcm9jZXNzPFQ+OjpnZXRTbG93Q2FzZSgpCiB7Ci0gICAgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiBsb2NrKHNfbXV0ZXgpOworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4gbG9jayhzX211dGV4KTsKICAgICBpZiAoIXNfb2JqZWN0LmxvYWQoc3RkOjptZW1v
cnlfb3JkZXJfY29uc3VtZSkpIHsKICAgICAgICAgVCogdCA9IG5ldyAoJnNfbWVtb3J5KSBUKGxv
Y2spOwogICAgICAgICBzX29iamVjdC5zdG9yZSh0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNl
KTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RkOjphdG9taWM8
VCo+IFBlclByb2Nlc3M8VD46OnNfb2JqZWN0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotTXV0
ZXggUGVyUHJvY2VzczxUPjo6c19tdXRleDsKK1N0YXRpY011dGV4IFBlclByb2Nlc3M8VD46OnNf
bXV0ZXg7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB0eXBlbmFtZSBQZXJQcm9jZXNzPFQ+OjpN
ZW1vcnkgUGVyUHJvY2VzczxUPjo6c19tZW1vcnk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1N0YXRpY011dGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1N0YXRpY011dGV4LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U3RhdGljTXV0ZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgIlN0YXRpY011
dGV4LmgiCisjaW5jbHVkZSA8dGhyZWFkPgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK3ZvaWQg
U3RhdGljTXV0ZXg6OmxvY2tTbG93Q2FzZSgpCit7CisgICAgd2hpbGUgKCF0cnlfbG9jaygpKQor
ICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1N0YXRpY011dGV4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TdGF0aWNNdXRleC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TdGF0aWNNdXRleC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBTdGF0aWNNdXRleF9oCisjZGVmaW5lIFN0YXRpY011dGV4X2gKKwor
I2luY2x1ZGUgIkJBc3NlcnQuaCIKKyNpbmNsdWRlIDxhdG9taWM+CisKKy8vIEEgZmFzdCByZXBs
YWNlbWVudCBmb3Igc3RkOjptdXRleCBmb3IgdXNlIGluIHN0YXRpYyBzdG9yYWdlLCB3aGVyZSBn
bG9iYWwKKy8vIGNvbnN0cnVjdG9ycyBhbmQgZXhpdC10aW1lIGRlc3RydWN0b3JzIGFyZSBwcm9o
aWJpdGVkLgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK2NsYXNzIFN0YXRpY011dGV4IHsKK3B1
YmxpYzoKKyAgICB2b2lkIGxvY2soKTsKKyAgICBib29sIHRyeV9sb2NrKCk7CisgICAgdm9pZCB1
bmxvY2soKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTXV0ZXg7CisKKyAgICAvLyBT
dGF0aWMgc3RvcmFnZSB3aWxsIHplcm8taW5pdGlhbGl6ZSB1cyBhdXRvbWF0aWNhbGx5LCBidXQg
TXV0ZXggbmVlZHMgYW4KKyAgICAvLyBBUEkgZm9yIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLgor
ICAgIHZvaWQgaW5pdCgpOworCisgICAgdm9pZCBsb2NrU2xvd0Nhc2UoKTsKKworICAgIHN0ZDo6
YXRvbWljX2ZsYWcgbV9mbGFnOworfTsKKworaW5saW5lIHZvaWQgU3RhdGljTXV0ZXg6OmluaXQo
KQoreworICAgIG1fZmxhZy5jbGVhcigpOworfQorCitpbmxpbmUgYm9vbCBTdGF0aWNNdXRleDo6
dHJ5X2xvY2soKQoreworICAgIHJldHVybiAhbV9mbGFnLnRlc3RfYW5kX3NldChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKTsKK30KKworaW5saW5lIHZvaWQgU3RhdGljTXV0ZXg6OmxvY2soKQor
eworICAgIGlmICghdHJ5X2xvY2soKSkKKyAgICAgICAgbG9ja1Nsb3dDYXNlKCk7Cit9CisKK2lu
bGluZSB2b2lkIFN0YXRpY011dGV4Ojp1bmxvY2soKQoreworICAgIG1fZmxhZy5jbGVhcihzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYworCisj
ZW5kaWYgLy8gU3RhdGljTXV0ZXhfaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhl
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCShyZXZp
c2lvbiAxNjc1MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIE1lZGl1bVBhZ2UqIGFsbG9j
YXRlTWVkaXVtUGFnZSgpOwogICAgIFJhbmdlIGFsbG9jYXRlTGFyZ2VSYW5nZShzaXplX3QpOwog
Ci0gICAgdm9pZCBkZWFsbG9jYXRlWFNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYs
IFhTbWFsbFBhZ2UqKTsKLSAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVf
bG9jazxNdXRleD4mLCBTbWFsbFBhZ2UqKTsKLSAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1QYWdl
KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTWVkaXVtUGFnZSopOwotICAgIHZvaWQgZGVhbGxv
Y2F0ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBSYW5nZSk7CisgICAgdm9p
ZCBkZWFsbG9jYXRlWFNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIFhT
bWFsbFBhZ2UqKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9j
azxTdGF0aWNNdXRleD4mLCBTbWFsbFBhZ2UqKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1Q
YWdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiwgTWVkaXVtUGFnZSopOworICAgIHZv
aWQgZGVhbGxvY2F0ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBS
YW5nZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZVhTbWFsbENodW5rKCk7CkBAIC0x
MDAsNyArMTAwLDcgQEAgaW5saW5lIFJhbmdlIFZNSGVhcDo6YWxsb2NhdGVMYXJnZVJhbmdlKAog
ICAgIHJldHVybiByYW5nZTsKIH0KIAotaW5saW5lIHZvaWQgVk1IZWFwOjpkZWFsbG9jYXRlWFNt
YWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgWFNtYWxsUGFnZSogcGFnZSkK
K2lubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZVhTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9j
azxTdGF0aWNNdXRleD4mIGxvY2ssIFhTbWFsbFBhZ2UqIHBhZ2UpCiB7CiAgICAgbG9jay51bmxv
Y2soKTsKICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHBhZ2UtPmJlZ2luKCktPmJlZ2lu
KCksIHZtUGFnZVNpemUpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIGlubGluZSB2b2lkIFZNSGVhcDo6
ZGVhbGxvY2F0ZVhTbWFsbFBhZ2UKICAgICBtX3hTbWFsbFBhZ2VzLnB1c2gocGFnZSk7CiB9CiAK
LWlubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2Nr
PE11dGV4PiYgbG9jaywgU21hbGxQYWdlKiBwYWdlKQoraW5saW5lIHZvaWQgVk1IZWFwOjpkZWFs
bG9jYXRlU21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBTbWFs
bFBhZ2UqIHBhZ2UpCiB7CiAgICAgbG9jay51bmxvY2soKTsKICAgICB2bURlYWxsb2NhdGVQaHlz
aWNhbFBhZ2VzKHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHZtUGFnZVNpemUpOwpAQCAtMTE4LDcg
KzExOCw3IEBAIGlubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsUGFnZSgKICAgICBt
X3NtYWxsUGFnZXMucHVzaChwYWdlKTsKIH0KIAotaW5saW5lIHZvaWQgVk1IZWFwOjpkZWFsbG9j
YXRlTWVkaXVtUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgTWVkaXVtUGFnZSog
cGFnZSkKK2lubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZU1lZGl1bVBhZ2Uoc3RkOjp1bmlx
dWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIE1lZGl1bVBhZ2UqIHBhZ2UpCiB7CiAgICAgbG9j
ay51bmxvY2soKTsKICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHBhZ2UtPmJlZ2luKCkt
PmJlZ2luKCksIHZtUGFnZVNpemUpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSB2b2lkIFZN
SGVhcDo6ZGVhbGxvY2F0ZU1lZGl1bVBhZ2UKICAgICBtX21lZGl1bVBhZ2VzLnB1c2gocGFnZSk7
CiB9CiAKLWlubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4mIGxvY2ssIFJhbmdlIHJhbmdlKQoraW5saW5lIHZvaWQgVk1IZWFwOjpk
ZWFsbG9jYXRlTGFyZ2VSYW5nZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaywg
UmFuZ2UgcmFuZ2UpCiB7CiAgICAgQmVnaW5UYWcqIGJlZ2luVGFnID0gTGFyZ2VDaHVuazo6YmVn
aW5UYWcocmFuZ2UuYmVnaW4oKSk7CiAgICAgRW5kVGFnKiBlbmRUYWcgPSBMYXJnZUNodW5rOjpl
bmRUYWcocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvYm1hbGxvYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Ym1hbGxvYy5oCShyZXZpc2lvbiAxNjc1MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL2Jt
YWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBpbmxpbmUgdm9pZCBzY2F2
ZW5nZSgpCiB7CiAgICAgUGVyVGhyZWFkPENhY2hlPjo6Z2V0KCktPnNjYXZlbmdlKCk7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRl
eCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8
SGVhcD46Om11dGV4KCkpOwogICAgIFBlclByb2Nlc3M8SGVhcD46OmdldCgpLT5zY2F2ZW5nZShs
b2NrLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDApKTsKIH0KIAo=
</data>
<flag name="review"
          id="254081"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>