<?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>194836</bug_id>
          
          <creation_ts>2019-02-19 15:29:33 -0800</creation_ts>
          <short_desc>[bmalloc] bmalloc::Heap is allocated even though we use system malloc mode</short_desc>
          <delta_ts>2019-02-20 16:04:40 -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>bmalloc</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1507880</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 15:29:33 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508001</commentid>
    <comment_count>1</comment_count>
      <attachid>362481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 21:22:10 -0800</bug_when>
    <thetext>Created attachment 362481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508004</commentid>
    <comment_count>2</comment_count>
      <attachid>362482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 21:43:56 -0800</bug_when>
    <thetext>Created attachment 362482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508006</commentid>
    <comment_count>3</comment_count>
      <attachid>362482</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-19 22:04:41 -0800</bug_when>
    <thetext>Comment on attachment 362482
Patch

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

r=me.  Can you run PerformanceTests/MallocBench just to be sure that there&apos;s no significant perf difference?

&gt; Source/bmalloc/bmalloc/bmalloc.cpp:71
&gt; +        {
&gt; +            std::unique_lock&lt;Mutex&gt; lock(Heap::mutex());
&gt; +            result = heap.tryAllocateLarge(lock, alignment, size);
&gt; +            if (result) {
&gt; +                // Don&apos;t track this as dirty memory that dictates how we drive the scavenger.
&gt; +                // FIXME: We should make it so that users of this API inform bmalloc which
&gt; +                // pages they dirty:
&gt; +                // https://bugs.webkit.org/show_bug.cgi?id=184207
&gt; +                heap.externalDecommit(lock, result, size);
&gt; +            }
&gt;          }

No need to indent one more level here.  You&apos;re already inside a scope unlike before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508311</commentid>
    <comment_count>4</comment_count>
      <attachid>362482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-20 15:39:20 -0800</bug_when>
    <thetext>Comment on attachment 362482
Patch

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

I ran MallocBench and it was performance neutral.

&gt;&gt; Source/bmalloc/bmalloc/bmalloc.cpp:71
&gt;&gt;          }
&gt; 
&gt; No need to indent one more level here.  You&apos;re already inside a scope unlike before.

Fixed, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508325</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-20 16:03:27 -0800</bug_when>
    <thetext>Committed r241847: &lt;https://trac.webkit.org/changeset/241847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508326</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-20 16:04:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/48256231&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362481</attachid>
            <date>2019-02-19 21:22:10 -0800</date>
            <delta_ts>2019-02-19 21:43:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194836-20190219212209.patch</filename>
            <type>text/plain</type>
            <size>23598</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZmY5YTg4YTY5ZWM1Y2Rj
YmIwNTE0MjViYjQwODE0MTRlNTI1ZjY5OS4uY2FjZDAyNTVkNTE5MDg4NTRmNDc4YWJmM2JhZmFj
ODExOTIyZWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE5LTAyLTE5ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIGJtYWxs
b2M6OkhlYXAgaXMgYWxsb2NhdGVkIGV2ZW4gdGhvdWdoIHdlIHVzZSBzeXN0ZW0gbWFsbG9jIG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDgz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZp
b3VzbHksIGJtYWxsb2M6OkhlYXAgaG9sZHMgRGVidWdIZWFwLCBhbmQgZGVsZWdhdGVzIGFsbG9j
YXRpb24gYW5kIGRlYWxsb2NhdGlvbiB0byBkZWJ1ZyBoZWFwLgorICAgICAgICBIb3dldmVyLCBi
bWFsbG9jOjpIZWFwIGlzIGxhcmdlLiBXZSB3b3VsZCBsaWtlIHRvIGF2b2lkIGluaXRpYWxpemF0
aW9uIG9mIGJtYWxsb2M6OkhlYXAgdW5kZXIgdGhlCisgICAgICAgIHN5c3RlbSBtYWxsb2MgbW9k
ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dHJhY3RzIG91dCBEZWJ1Z0hlYXAgZnJvbSBibWFs
bG9jOjpIZWFwLCBhbmQgbG9naWNhbGx5IHB1dHMgdGhpcyBpbiBhIGJvdW5kYXJ5IG9mCisgICAg
ICAgIGJtYWxsb2M6OmFwaS4gYm1hbGxvYzo6YXBpIGRlbGVnYXRlcyBhbGxvY2F0aW9uIGFuZCBk
ZWFsbG9jYXRpb24gdG8gRGVidWdIZWFwIGlmIERlYnVnSGVhcCBpcyBlbmFibGVkLgorICAgICAg
ICBPdGhlcndpc2UsIHVzaW5nIGJtYWxsb2MncyB1c3VhbCBtZWNoYW5pc20uIFRoZSBjaGFsbGVu
Z2UgaXMgdGhhdCB3ZSB3b3VsZCBsaWtlIHRvIGtlZXAgYm1hbGxvYyBmYXN0CisgICAgICAgIHBh
dGggZmFzdC4KKworICAgICAgICAxLiBGb3IgSXNvSGVhcHMsIHdlIHVzZSB0aGUgc2ltaWxhciB0
ZWNobmlxdWVzIGRvbmUgaW4gQ2FjaGUuIElmIHRoZSBkZWJ1ZyBtb2RlIGlzIGVuYWJsZWQsIHdl
IGFsd2F5cyBnbworICAgICAgICAgICB0byB0aGUgc2xvdyBwYXRoIG9mIHRoZSBJc29IZWFwIGFs
bG9jYXRpb24sIGFuZCBrZWVwIElzb1RMUzo6Z2V0KCkgcmV0dXJuaW5nIG51bGxwdHIuIEluIHRo
ZSBzbG93IHBhdGgsCisgICAgICAgICAgIHdlIGp1c3QgZmFsbGJhY2sgdG8gdGhlIHVzdWFsIGJt
YWxsb2M6OmFwaTo6dHJ5TWFsbG9jIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGVmZmljaWVudCBi
ZWNhdXNlIGJtYWxsb2MKKyAgICAgICAgICAgY29udGludWVzIHVzaW5nIHRoZSBmYXN0IHBhdGgu
CisKKyAgICAgICAgMi4gRm9yIHRoZSBvdGhlciBBUElzLCBsaWtlIGZyZWVMYXJnZVZpcnR1YWws
IHdlIGp1c3QgcHV0IERlYnVnSGVhcCBjaGVjayBiZWNhdXNlIHRoaXMgQVBJIGl0c2VsZiB0YWtl
cyBmYWlyCisgICAgICAgICAgIGFtb3VudCBvZiB0aW1lLiBUaGVuIGRlYnVnIGhlYXAgY2hlY2sg
ZG9lcyBub3QgbWF0dGVyLgorCisgICAgICAgICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgorICAg
ICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpyZWFsbG9jYXRlSW1wbCk6CisgICAgICAgICogYm1h
bGxvYy9DYWNoZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6dHJ5QWxsb2NhdGVTbG93
Q2FzZU51bGxDYWNoZSk6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6YWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZSk6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6ZGVhbGxvY2F0ZVNsb3dDYXNl
TnVsbENhY2hlKToKKyAgICAgICAgKGJtYWxsb2M6OkNhY2hlOjp0cnlSZWFsbG9jYXRlU2xvd0Nh
c2VOdWxsQ2FjaGUpOgorICAgICAgICAoYm1hbGxvYzo6Q2FjaGU6OnJlYWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6ZGVi
dWdIZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAg
ICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6
dHJ5R2V0KToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6SGVhcCk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmb290cHJpbnQpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6dHJ5QWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6ZGVidWdIZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9j
L0lzb1RMUy5jcHA6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6Oklzb1RMUyk6CisgICAgICAg
IChibWFsbG9jOjpJc29UTFM6OmlzVXNpbmdEZWJ1Z0hlYXApOiBEZWxldGVkLgorICAgICAgICAo
Ym1hbGxvYzo6SXNvVExTOjpkZWJ1Z01hbGxvYyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9j
OjpJc29UTFM6OmRlYnVnRnJlZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9Jc29UTFMu
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMUzo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6ZGVhbGxv
Y2F0ZVNsb3cpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGUuaDoKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5jcHA6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5n
ZXI6OlNjYXZlbmdlcik6CisgICAgICAgICogYm1hbGxvYy9ibWFsbG9jLmNwcDoKKyAgICAgICAg
KGJtYWxsb2M6OmFwaTo6dHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwpOgorICAgICAgICAo
Ym1hbGxvYzo6YXBpOjpmcmVlTGFyZ2VWaXJ0dWFsKToKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6
c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6YXBpOjppc0VuYWJsZWQpOgorICAgICAgICAo
Ym1hbGxvYzo6YXBpOjpzZXRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyk6CisgICAgICAgIChibWFs
bG9jOjphcGk6OmNvbW1pdEFsaWduZWRQaHlzaWNhbCk6CisgICAgICAgIChibWFsbG9jOjphcGk6
OmRlY29tbWl0QWxpZ25lZFBoeXNpY2FsKToKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6ZW5hYmxl
TWluaU1vZGUpOgorCiAyMDE5LTAyLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW2JtYWxsb2NdIGJtYWxsb2M6OkNhY2hlIHNob3VsZCBub3QgYmUgaW5z
dGFudGlhdGVkIGlmIHdlIGFyZSB1c2luZyBzeXN0ZW0gbWFsbG9jCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0FsbG9jYXRvci5jcHAKaW5kZXggY2ZkMDFmZTNlZDZmZGE4ZjQ0MzE3MjM5NGY0NDgxOTVmMjMx
NjliYS4uNDA5MTQwZWIwZTc4NDY2Mjk1NDJhMmM1OTEyOWQxYTk3NDA3M2JlMyAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcApAQCAtMTAyLDkgKzEwMiw5IEBAIHZvaWQqIEFsbG9j
YXRvcjo6dHJ5UmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQogdm9pZCog
QWxsb2NhdG9yOjpyZWFsbG9jYXRlSW1wbCh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplLCBi
b29sIGNyYXNoT25GYWlsdXJlKQogewogICAgIHNpemVfdCBvbGRTaXplID0gMDsKLSAgICBzd2l0
Y2ggKG9iamVjdFR5cGUobV9oZWFwLmtpbmQoKSwgb2JqZWN0KSkgeworICAgIHN3aXRjaCAob2Jq
ZWN0VHlwZShtX2hlYXAsIG9iamVjdCkpIHsKICAgICBjYXNlIE9iamVjdFR5cGU6OlNtYWxsOiB7
Ci0gICAgICAgIEJBU1NFUlQob2JqZWN0VHlwZShtX2hlYXAua2luZCgpLCBudWxscHRyKSA9PSBP
YmplY3RUeXBlOjpTbWFsbCk7CisgICAgICAgIEJBU1NFUlQob2JqZWN0VHlwZShtX2hlYXAsIG51
bGxwdHIpID09IE9iamVjdFR5cGU6OlNtYWxsKTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAg
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DYWNo
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcAppbmRleCAyOWFkMTMwOTg2
NmYxMmQ4MDlmNmYxMjFkOWY2NTExZWQ3MzUzNjJhLi43MGQ0ODgyZTVjMDY2MzljNzdkZTQ5NThl
OTk4Y2NjMDhhZmI4NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcApAQCAtMzIsOCArMzIs
NiBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLXN0YXRpYyBEZWJ1Z0hlYXAqIGRlYnVnSGVh
cENhY2hlIHsgbnVsbHB0ciB9OwotCiB2b2lkIENhY2hlOjpzY2F2ZW5nZShIZWFwS2luZCBoZWFw
S2luZCkKIHsKICAgICBQZXJIZWFwS2luZDxDYWNoZT4qIGNhY2hlcyA9IFBlclRocmVhZDxQZXJI
ZWFwS2luZDxDYWNoZT4+OjpnZXRGYXN0Q2FzZSgpOwpAQCAtNDYsMTcgKzQ0LDYgQEAgdm9pZCBD
YWNoZTo6c2NhdmVuZ2UoSGVhcEtpbmQgaGVhcEtpbmQpCiAgICAgY2FjaGVzLT5hdChoZWFwS2lu
ZCkuZGVhbGxvY2F0b3IoKS5zY2F2ZW5nZSgpOwogfQogCi1zdGF0aWMgQklOTElORSBEZWJ1Z0hl
YXAqIGRlYnVnSGVhcCgpCi17Ci0gICAgaWYgKGRlYnVnSGVhcENhY2hlKQotICAgICAgICByZXR1
cm4gZGVidWdIZWFwQ2FjaGU7Ci0gICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQo
KS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdIZWFwQ2FjaGUgPSBQZXJQ
cm9jZXNzPERlYnVnSGVhcD46OmdldCgpOwotICAgICAgICByZXR1cm4gZGVidWdIZWFwQ2FjaGU7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBDYWNoZTo6Q2FjaGUoSGVhcEtpbmQg
aGVhcEtpbmQpCiAgICAgOiBtX2RlYWxsb2NhdG9yKFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVh
cD4+OjpnZXQoKS0+YXQoaGVhcEtpbmQpKQogICAgICwgbV9hbGxvY2F0b3IoUGVyUHJvY2VzczxQ
ZXJIZWFwS2luZDxIZWFwPj46OmdldCgpLT5hdChoZWFwS2luZCksIG1fZGVhbGxvY2F0b3IpCkBA
IC02OCw0MCArNTUsNDAgQEAgQk5PX0lOTElORSB2b2lkKiBDYWNoZTo6dHJ5QWxsb2NhdGVTbG93
Q2FzZU51bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgc2l6ZV90IHMKIHsKICAgICAvLyBGSVhN
RTogRGVidWdIZWFwIGRvZXMgbm90IGhhdmUgdHJ5QWxsb2NhdGUgZmVhdHVyZS4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODM3Ci0gICAgaWYgKGF1
dG8qIGhlYXAgPSBkZWJ1Z0hlYXAoKSkKLSAgICAgICAgcmV0dXJuIGhlYXAtPm1hbGxvYyhzaXpl
KTsKKyAgICBpZiAoYXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkKKyAgICAg
ICAgcmV0dXJuIGRlYnVnSGVhcC0+bWFsbG9jKHNpemUpOwogICAgIHJldHVybiBQZXJUaHJlYWQ8
UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9BY3RpdmVIZWFwS2lu
ZChoZWFwS2luZCkpLmFsbG9jYXRvcigpLnRyeUFsbG9jYXRlKHNpemUpOwogfQogCiBCTk9fSU5M
SU5FIHZvaWQqIENhY2hlOjphbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBL
aW5kLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKQot
ICAgICAgICByZXR1cm4gaGVhcC0+bWFsbG9jKHNpemUpOworICAgIGlmIChhdXRvKiBkZWJ1Z0hl
YXAgPSBEZWJ1Z0hlYXA6OnRyeUdldCgpKQorICAgICAgICByZXR1cm4gZGVidWdIZWFwLT5tYWxs
b2Moc2l6ZSk7CiAgICAgcmV0dXJuIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRT
bG93Q2FzZSgpLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kKGhlYXBLaW5kKSkuYWxsb2NhdG9yKCku
YWxsb2NhdGUoc2l6ZSk7CiB9CiAKIEJOT19JTkxJTkUgdm9pZCogQ2FjaGU6OnRyeUFsbG9jYXRl
U2xvd0Nhc2VOdWxsQ2FjaGUoSGVhcEtpbmQgaGVhcEtpbmQsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCBzaXplKQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKKyAgICBp
ZiAoYXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkgewogICAgICAgICBjb25z
dGV4cHIgYm9vbCBjcmFzaE9uRmFpbHVyZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gaGVhcC0+
bWVtYWxpZ24oYWxpZ25tZW50LCBzaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVy
biBkZWJ1Z0hlYXAtPm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOwog
ICAgIH0KICAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldFNsb3dD
YXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS50cnlB
bGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOwogfQogCiBCTk9fSU5MSU5FIHZvaWQqIENhY2hlOjph
bGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCBzaXplX3QgYWxpZ25t
ZW50LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKSB7
CisgICAgaWYgKGF1dG8qIGRlYnVnSGVhcCA9IERlYnVnSGVhcDo6dHJ5R2V0KCkpIHsKICAgICAg
ICAgY29uc3RleHByIGJvb2wgY3Jhc2hPbkZhaWx1cmUgPSB0cnVlOwotICAgICAgICByZXR1cm4g
aGVhcC0+bWVtYWxpZ24oYWxpZ25tZW50LCBzaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAg
IHJldHVybiBkZWJ1Z0hlYXAtPm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSwgY3Jhc2hPbkZhaWx1
cmUpOwogICAgIH0KICAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46Omdl
dFNsb3dDYXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3Io
KS5hbGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOwogfQogCiBCTk9fSU5MSU5FIHZvaWQgQ2FjaGU6
OmRlYWxsb2NhdGVTbG93Q2FzZU51bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2Jq
ZWN0KQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKLSAgICAgICAgaGVh
cC0+ZnJlZShvYmplY3QpOworICAgIGlmIChhdXRvKiBkZWJ1Z0hlYXAgPSBEZWJ1Z0hlYXA6OnRy
eUdldCgpKSB7CisgICAgICAgIGRlYnVnSGVhcC0+ZnJlZShvYmplY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRTbG93Q2Fz
ZSgpLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kKGhlYXBLaW5kKSkuZGVhbGxvY2F0b3IoKS5kZWFs
bG9jYXRlKG9iamVjdCk7CkBAIC0xMDksMTggKzk2LDE4IEBAIEJOT19JTkxJTkUgdm9pZCBDYWNo
ZTo6ZGVhbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCB2b2lkKiBv
YmplCiAKIEJOT19JTkxJTkUgdm9pZCogQ2FjaGU6OnRyeVJlYWxsb2NhdGVTbG93Q2FzZU51bGxD
YWNoZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKIHsK
LSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKSB7CisgICAgaWYgKGF1dG8qIGRlYnVn
SGVhcCA9IERlYnVnSGVhcDo6dHJ5R2V0KCkpIHsKICAgICAgICAgY29uc3RleHByIGJvb2wgY3Jh
c2hPbkZhaWx1cmUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGhlYXAtPnJlYWxsb2Mob2JqZWN0
LCBuZXdTaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVybiBkZWJ1Z0hlYXAtPnJl
YWxsb2Mob2JqZWN0LCBuZXdTaXplLCBjcmFzaE9uRmFpbHVyZSk7CiAgICAgfQogICAgIHJldHVy
biBQZXJUaHJlYWQ8UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9B
Y3RpdmVIZWFwS2luZChoZWFwS2luZCkpLmFsbG9jYXRvcigpLnRyeVJlYWxsb2NhdGUob2JqZWN0
LCBuZXdTaXplKTsKIH0KIAogQk5PX0lOTElORSB2b2lkKiBDYWNoZTo6cmVhbGxvY2F0ZVNsb3dD
YXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCB2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdT
aXplKQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKKyAgICBpZiAoYXV0
byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkgewogICAgICAgICBjb25zdGV4cHIg
Ym9vbCBjcmFzaE9uRmFpbHVyZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBoZWFwLT5yZWFsbG9j
KG9iamVjdCwgbmV3U2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOworICAgICAgICByZXR1cm4gZGVidWdI
ZWFwLT5yZWFsbG9jKG9iamVjdCwgbmV3U2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOwogICAgIH0KICAg
ICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldFNsb3dDYXNlKCktPmF0
KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS5yZWFsbG9jYXRlKG9i
amVjdCwgbmV3U2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
YnVnSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXgg
ZjIxZjVhNTJmNWMyYTY1ZWVhMGVmYmU4YzYxOTE3NTFiNTkwNDk5MC4uNGQ5MjkyYzdkODJmYmNl
MWY3MjA5MzdmYThhMGJhYTUxMDNmYzdhNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWJ1Z0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFw
LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPHRocmVhZD4KIAogbmFtZXNwYWNlIGJt
YWxsb2MgeworCitEZWJ1Z0hlYXAqIGRlYnVnSGVhcENhY2hlIHsgbnVsbHB0ciB9OwogICAgIAog
I2lmIEJPUyhEQVJXSU4pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVi
dWdIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCmluZGV4IDIxOWY4
Mzc0ZTU3OWYxOWM0NWQ4NjQ1ZjBmNGU4OTBkZGQ4MmI5OGQuLmQxZTBlOWJmNTY5YmE1NGFiZDZl
NjFiZTgzNjZjNjdiYWNiZDUwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVidWdIZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaApAQCAt
MjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KIApAQCAtNDcsNiArNDksOCBAQCBjbGFz
cyBEZWJ1Z0hlYXAgewogICAgIHZvaWQqIG1lbWFsaWduTGFyZ2Uoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsKICAgICB2b2lkIGZyZWVMYXJnZSh2b2lkKiBiYXNlKTsKIAorICAgIHN0YXRpYyBE
ZWJ1Z0hlYXAqIHRyeUdldCgpOworCiBwcml2YXRlOgogI2lmIEJPUyhEQVJXSU4pCiAgICAgbWFs
bG9jX3pvbmVfdCogbV96b25lOwpAQCAtNTgsNCArNjIsMTYgQEAgY2xhc3MgRGVidWdIZWFwIHsK
ICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8dm9pZCosIHNpemVfdD4gbV9zaXplTWFwOwogfTsKIAor
ZXh0ZXJuIEJFWFBPUlQgRGVidWdIZWFwKiBkZWJ1Z0hlYXBDYWNoZTsKK0JJTkxJTkUgRGVidWdI
ZWFwKiBEZWJ1Z0hlYXA6OnRyeUdldCgpCit7CisgICAgaWYgKGRlYnVnSGVhcENhY2hlKQorICAg
ICAgICByZXR1cm4gZGVidWdIZWFwQ2FjaGU7CisgICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1l
bnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKKyAgICAgICAgZGVidWdIZWFwQ2Fj
aGUgPSBQZXJQcm9jZXNzPERlYnVnSGVhcD46OmdldCgpOworICAgICAgICByZXR1cm4gZGVidWdI
ZWFwQ2FjaGU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCA1MjhjZmViZjk3M2QyM2Q4YzM0
NTNlMjc5Mzk2YjIyZGE3MjZjYzBjLi4yNWEyOWFiNDRiN2E2M2FjZWJjNDhlNGNkZTIxZGJlNTk3
YTk2YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIGJtYWxsb2MgewogSGVhcDo6SGVhcChIZWFwS2luZCBraW5kLCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKICAgICA6IG1fa2luZChraW5kKQogICAgICwgbV92bVBhZ2VTaXplUGh5c2ljYWwo
dm1QYWdlU2l6ZVBoeXNpY2FsKCkpCi0gICAgLCBtX2RlYnVnSGVhcChudWxscHRyKQogewogICAg
IFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplUGh5c2ljYWwoKSA+PSBzbWFsbFBhZ2VTaXplKTsK
ICAgICBSRUxFQVNFX0JBU1NFUlQodm1QYWdlU2l6ZSgpID49IHZtUGFnZVNpemVQaHlzaWNhbCgp
KTsKQEAgLTU1LDIyICs1NCwyMCBAQCBIZWFwOjpIZWFwKEhlYXBLaW5kIGtpbmQsIHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKQogICAgIGluaXRpYWxpemVMaW5lTWV0YWRhdGEoKTsKICAgICBpbml0
aWFsaXplUGFnZU1ldGFkYXRhKCk7CiAgICAgCi0gICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1l
bnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpCi0gICAgICAgIG1fZGVidWdIZWFwID0g
UGVyUHJvY2VzczxEZWJ1Z0hlYXA+OjpnZXQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgR2lnYWNh
Z2U6OmVuc3VyZUdpZ2FjYWdlKCk7CisgICAgQkFTU0VSVCghUGVyUHJvY2VzczxFbnZpcm9ubWVu
dD46OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CisKKyAgICBHaWdhY2FnZTo6ZW5zdXJl
R2lnYWNhZ2UoKTsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGlmICh1c2luZ0dpZ2Fj
YWdlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZUJhc2VQdHIoKSk7
Ci0gICAgICAgICAgICB1aW50NjRfdCByYW5kb21bMl07Ci0gICAgICAgICAgICBjcnlwdG9SYW5k
b20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocmFuZG9tKSwgc2l6ZW9mKHJhbmRv
bSkpOwotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1Q
YWdlU2l6ZSgpLCBnaWdhY2FnZVNpemUoKSAtIChyYW5kb21bMF0gJSBHaWdhY2FnZTo6bWF4aW11
bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUpKTsKLSAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCByYW5kb21bMV0gJSAoZ2ln
YWNhZ2VTaXplKCkgLSBzaXplKSk7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZ2lnYWNhZ2VCYXNlUHRyKCkpICsgb2Zmc2V0OwotICAg
ICAgICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoYmFzZSwgc2l6ZSwgMCwgMCkpOwot
ICAgICAgICB9Ci0jZW5kaWYKKyAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CisgICAgICAgIFJF
TEVBU0VfQkFTU0VSVChnaWdhY2FnZUJhc2VQdHIoKSk7CisgICAgICAgIHVpbnQ2NF90IHJhbmRv
bVsyXTsKKyAgICAgICAgY3J5cHRvUmFuZG9tKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KHJhbmRvbSksIHNpemVvZihyYW5kb20pKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSByb3Vu
ZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCBnaWdhY2FnZVNpemUoKSAtIChyYW5kb21b
MF0gJSBHaWdhY2FnZTo6bWF4aW11bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUpKTsKKyAgICAg
ICAgcHRyZGlmZl90IG9mZnNldCA9IHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBhZ2VTaXplKCks
IHJhbmRvbVsxXSAlIChnaWdhY2FnZVNpemUoKSAtIHNpemUpKTsKKyAgICAgICAgdm9pZCogYmFz
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSAr
IG9mZnNldDsKKyAgICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoYmFzZSwgc2l6ZSwg
MCwgMCkpOwogICAgIH0KKyNlbmRpZgogICAgIAogICAgIG1fc2NhdmVuZ2VyID0gUGVyUHJvY2Vz
czxTY2F2ZW5nZXI+OjpnZXQoKTsKIH0KQEAgLTE1Myw3ICsxNTAsNiBAQCBzaXplX3QgSGVhcDo6
ZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAKIHNpemVfdCBIZWFwOjpm
b290cHJpbnQoKQogewotICAgIEJBU1NFUlQoIW1fZGVidWdIZWFwKTsKICAgICByZXR1cm4gbV9m
b290cHJpbnQ7CiB9CiAKQEAgLTU1NSw5ICs1NTEsNiBAQCB2b2lkKiBIZWFwOjp0cnlBbGxvY2F0
ZUxhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzaXplX3QgYWxpZ25tZW50LCBz
aQogCiAgICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7CiAgICAgCi0gICAgaWYg
KG1fZGVidWdIZWFwKQotICAgICAgICByZXR1cm4gbV9kZWJ1Z0hlYXAtPm1lbWFsaWduTGFyZ2Uo
YWxpZ25tZW50LCBzaXplKTsKLSAgICAKICAgICBtX3NjYXZlbmdlci0+ZGlkU3RhcnRHcm93aW5n
KCk7CiAgICAgCiAgICAgc2l6ZV90IHJvdW5kZWRTaXplID0gc2l6ZSA/IHJvdW5kVXBUb011bHRp
cGxlT2YobGFyZ2VBbGlnbm1lbnQsIHNpemUpIDogbGFyZ2VBbGlnbm1lbnQ7CkBAIC02MjYsOSAr
NjE5LDYgQEAgdm9pZCBIZWFwOjpzaHJpbmtMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYg
bG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV8KIAogdm9pZCBIZWFwOjpkZWFsbG9jYXRl
TGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBvYmplY3QpCiB7Ci0gICAgaWYg
KG1fZGVidWdIZWFwKQotICAgICAgICByZXR1cm4gbV9kZWJ1Z0hlYXAtPmZyZWVMYXJnZShvYmpl
Y3QpOwotCiAgICAgc2l6ZV90IHNpemUgPSBtX2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3Qp
OwogICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKG9iamVjdCwgc2l6ZSwgc2l6ZSwgc2l6
ZSkpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5k
ZXggNzE0NmRkN2IxZDdhNTc4OGI4OWU3ZDEyNGZiMWI0NzNlMTRmMTg5Zi4uMzhhZTcyNDg5NmY0
ZDhjZjBhOWQ1ODA1YTAyMTJhOTQ2ZmYwNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKQEAgLTYz
LDggKzYzLDYgQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgSGVhcEtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIAotICAgIERlYnVnSGVhcCogZGVidWdIZWFwKCkgeyBy
ZXR1cm4gbV9kZWJ1Z0hlYXA7IH0KLQogICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMo
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLAogICAgICAgICBCdW1w
QWxsb2NhdG9yJiwgQnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUmKTsKICAgICB2b2lkIGRlcmVm
U21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgT2JqZWN0LCBMaW5lQ2FjaGUmKTsK
QEAgLTE0NSw3ICsxNDMsNiBAQCBjbGFzcyBIZWFwIHsKICAgICBNYXA8Q2h1bmsqLCBPYmplY3RU
eXBlLCBDaHVua0hhc2g+IG1fb2JqZWN0VHlwZXM7CiAKICAgICBTY2F2ZW5nZXIqIG1fc2NhdmVu
Z2VyIHsgbnVsbHB0ciB9OwotICAgIERlYnVnSGVhcCogbV9kZWJ1Z0hlYXAgeyBudWxscHRyIH07
CiAKICAgICBzaXplX3QgbV9mb290cHJpbnQgeyAwIH07CiAgICAgc2l6ZV90IG1fZnJlZWFibGVN
ZW1vcnkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5j
cHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAKaW5kZXggYzk2ZjIyMjc3NzY3
ZTU3YmQwZGZmMmZmZDg1NGY2NmY5ZDZmZTI2NS4uMjhlMDA1YTMxYjcwNDUyZWI2N2E0ZDE5YzQ5
YjI5OGY5MWVmZDQwMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMu
Y3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmNwcApAQCAtMjUsNyArMjUs
NiBAQAogCiAjaW5jbHVkZSAiSXNvVExTLmgiCiAKLSNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKICNp
bmNsdWRlICJFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkdpZ2FjYWdlLmgiCiAjaW5jbHVkZSAi
SXNvVExTRW50cnlJbmxpbmVzLmgiCkBAIC01NSw2ICs1NCw3IEBAIHZvaWQgSXNvVExTOjpzY2F2
ZW5nZSgpCiAKIElzb1RMUzo6SXNvVExTKCkKIHsKKyAgICBCQVNTRVJUKCFQZXJQcm9jZXNzPEVu
dmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKTsKIH0KIAogSXNvVExTKiBJ
c29UTFM6OmVuc3VyZUVudHJpZXModW5zaWduZWQgb2Zmc2V0KQpAQCAtMTc0LDI4ICsxNzQsNiBA
QCB2b2lkIElzb1RMUzo6Zm9yRWFjaEVudHJ5KGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIH0p
OwogfQogCi1ib29sIElzb1RMUzo6aXNVc2luZ0RlYnVnSGVhcCgpCi17Ci0gICAgcmV0dXJuIFBl
clByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCk7Ci19Ci0K
LWF1dG8gSXNvVExTOjpkZWJ1Z01hbGxvYyhzaXplX3Qgc2l6ZSkgLT4gRGVidWdNYWxsb2NSZXN1
bHQKLXsKLSAgICBEZWJ1Z01hbGxvY1Jlc3VsdCByZXN1bHQ7Ci0gICAgaWYgKChyZXN1bHQudXNp
bmdEZWJ1Z0hlYXAgPSBpc1VzaW5nRGVidWdIZWFwKCkpKQotICAgICAgICByZXN1bHQucHRyID0g
UGVyUHJvY2VzczxEZWJ1Z0hlYXA+OjpnZXQoKS0+bWFsbG9jKHNpemUpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWJvb2wgSXNvVExTOjpkZWJ1Z0ZyZWUodm9pZCogcCkKLXsKLSAgICBpZiAo
aXNVc2luZ0RlYnVnSGVhcCgpKSB7Ci0gICAgICAgIFBlclByb2Nlc3M8RGVidWdIZWFwPjo6Z2V0
KCktPmZyZWUocCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KIHZvaWQgSXNvVExTOjpkZXRlcm1pbmVNYWxsb2NGYWxsYmFja1N0YXRlKCkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMu
aAppbmRleCAxYjM4Y2NlNDIzODBkMzUyNDQyMmJjNzg2ZGJmMDNiYmQ4ZTU2MzYxLi4yN2VmZmMy
YmQzNjA3ODlmNjkzMjVhNWRhNWQxY2IzYTc2YTJhNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMUy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
LmgKQEAgLTEwMywxNiArMTAzLDYgQEAgY2xhc3MgSXNvVExTIHsKICAgICAKICAgICBCRVhQT1JU
IHN0YXRpYyB2b2lkIGRldGVybWluZU1hbGxvY0ZhbGxiYWNrU3RhdGUoKTsKICAgICAKLSAgICBz
dGF0aWMgYm9vbCBpc1VzaW5nRGVidWdIZWFwKCk7Ci0gICAgCi0gICAgc3RydWN0IERlYnVnTWFs
bG9jUmVzdWx0IHsKLSAgICAgICAgdm9pZCogcHRyIHsgbnVsbHB0ciB9OwotICAgICAgICBib29s
IHVzaW5nRGVidWdIZWFwIHsgZmFsc2UgfTsKLSAgICB9OwotICAgIAotICAgIEJFWFBPUlQgc3Rh
dGljIERlYnVnTWFsbG9jUmVzdWx0IGRlYnVnTWFsbG9jKHNpemVfdCk7Ci0gICAgQkVYUE9SVCBz
dGF0aWMgYm9vbCBkZWJ1Z0ZyZWUodm9pZCopOwotICAgIAogICAgIElzb1RMU0VudHJ5KiBtX2xh
c3RFbnRyeSB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2V4dGVudCB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX2NhcGFjaXR5IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGlu
ZXMuaAppbmRleCAyMGY2YWZlYWNkOWQ5YWU5N2FmMGJmMGM2ZGM1MTg1NTFjN2VlYTA5Li5hMTIw
YzZmNzQ1MDViNDEwOTIxMmM4NGRiYmI4ODNiZDI0N2M2ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0lubGluZXMuaApAQCAtOTQsOSArOTQsOCBAQCBCTk9fSU5MSU5FIHZvaWQqIElz
b1RMUzo6YWxsb2NhdGVTbG93KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCBib29sIGFib3J0
T25GYQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYXV0byBkZWJ1Z01hbGxvY1Jl
c3VsdCA9IGRlYnVnTWFsbG9jKENvbmZpZzo6b2JqZWN0U2l6ZSk7Ci0gICAgaWYgKGRlYnVnTWFs
bG9jUmVzdWx0LnVzaW5nRGVidWdIZWFwKQotICAgICAgICByZXR1cm4gZGVidWdNYWxsb2NSZXN1
bHQucHRyOworICAgIC8vIElmIGRlYnVnIGhlYXAgaXMgZW5hYmxlZCwgc19tYWxsb2NGYWxsYmFj
a1N0YXRlIGJlY29tZXMgTWFsbG9jRmFsbGJhY2tTdGF0ZTo6RmFsbEJhY2tUb01hbGxvYy4KKyAg
ICBCQVNTRVJUKCFQZXJQcm9jZXNzPEVudmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5h
YmxlZCgpKTsKICAgICAKICAgICBJc29UTFMqIHRscyA9IGVuc3VyZUhlYXBBbmRFbnRyaWVzKGhh
bmRsZSk7CiAgICAgCkBAIC0xMzgsOCArMTM3LDggQEAgQk5PX0lOTElORSB2b2lkIElzb1RMUzo6
ZGVhbGxvY2F0ZVNsb3coYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUsIHZvaWQqIHApCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAoZGVidWdGcmVlKHApKQotICAgICAgICBy
ZXR1cm47CisgICAgLy8gSWYgZGVidWcgaGVhcCBpcyBlbmFibGVkLCBzX21hbGxvY0ZhbGxiYWNr
U3RhdGUgYmVjb21lcyBNYWxsb2NGYWxsYmFja1N0YXRlOjpGYWxsQmFja1RvTWFsbG9jLgorICAg
IEJBU1NFUlQoIVBlclByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFi
bGVkKCkpOwogICAgIAogICAgIFJFTEVBU0VfQkFTU0VSVChoYW5kbGUuaXNJbml0aWFsaXplZCgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5j
cHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmluZGV4IGMwNmU1Nzg1
Y2U4MmU3NWIxYzRlYTRmMzdlODUwYThiMmEzMjdiN2YuLjE2ODc2MTk4MGZhMDdkMTllOWMxOTdj
NWU3MWMzNzI5NWY5MjhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNwcApA
QCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotT2JqZWN0VHlwZSBv
YmplY3RUeXBlKEhlYXBLaW5kIGtpbmQsIHZvaWQqIG9iamVjdCkKK09iamVjdFR5cGUgb2JqZWN0
VHlwZShIZWFwJiBoZWFwLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgaWYgKG1pZ2h0QmVMYXJnZShv
YmplY3QpKSB7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIE9iamVj
dFR5cGU6OlNtYWxsOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVh
cDo6bXV0ZXgoKSk7Ci0gICAgICAgIGlmIChQZXJQcm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6
Z2V0RmFzdENhc2UoKS0+YXQoa2luZCkuaXNMYXJnZShsb2NrLCBvYmplY3QpKQorICAgICAgICBp
ZiAoaGVhcC5pc0xhcmdlKGxvY2ssIG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
VHlwZTo6TGFyZ2U7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9PYmplY3RUeXBlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaApp
bmRleCAwOTdmOTg3MmU1NGYyYjQwOWExOWZjM2Y2Y2EwM2Y3YWVlOTI5ODQ2Li43NGMxMzQ2NWVi
YTc4ZjdmOGE3ODQ5OTY3NmU2Yzg0YzlhZDkxNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL09iamVjdFR5cGUuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGUuaApAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCitjbGFz
cyBIZWFwOworCiBlbnVtIGNsYXNzIE9iamVjdFR5cGUgOiB1bnNpZ25lZCBjaGFyIHsgU21hbGws
IExhcmdlIH07CiAKLU9iamVjdFR5cGUgb2JqZWN0VHlwZShIZWFwS2luZCwgdm9pZCopOworT2Jq
ZWN0VHlwZSBvYmplY3RUeXBlKEhlYXAmLCB2b2lkKik7CiAKIGlubGluZSBib29sIG1pZ2h0QmVM
YXJnZSh2b2lkKiBvYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKaW5k
ZXggY2EzMzYyNjU3YmZhMDFmMTA5MGY5MWFjODFlYWUxNGExM2ZhYmNlMS4uZjllZThjMGQ5ZDVj
ZDU0YTQ4NjU0Y2NiYTRlYjA0MzRkZDgxNTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVu
Z2VyLmNwcApAQCAtNjcsOCArNjcsNyBAQCBzdHJ1Y3QgUHJpbnRUaW1lIHsKIAogU2NhdmVuZ2Vy
OjpTY2F2ZW5nZXIoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7Ci0gICAgaWYgKFBlclByb2Nl
c3M8RW52aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICBCQVNTRVJUKCFQZXJQcm9jZXNzPEVudmlyb25tZW50Pjo6Z2V0KCktPmlzRGVi
dWdIZWFwRW5hYmxlZCgpKTsKIAogI2lmIEJPUyhEQVJXSU4pCiAgICAgYXV0byBxdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViS2l0IE1hbGxvYyBNZW1vcnkgUHJlc3N1cmUgSGFuZGxl
ciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL2JtYWxsb2MuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9jLmNwcApp
bmRleCA2MjBkYmZjNDQ2Y2QyMjA1NTlkMTBmNjhjZmU1ZTBlNWM1NjYzOWM1Li5jYTgyNDJjMjE3
YmUwYWVlYWQyNGZlMjg1MTZmZTAxMzgxZDY3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL2JtYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxv
Yy5jcHAKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgImJtYWxsb2MuaCIKIAorI2luY2x1
ZGUgIkRlYnVnSGVhcC5oIgorI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiUGVy
UHJvY2Vzcy5oIgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7IG5hbWVzcGFjZSBhcGkgewpAQCAtNDks
MTkgKzUxLDIzIEBAIHZvaWQqIHRyeUxhcmdlWmVyb2VkTWVtYWxpZ25WaXJ0dWFsKHNpemVfdCBy
ZXF1aXJlZEFsaWdubWVudCwgc2l6ZV90IHJlcXVlc3RlZFNpCiAgICAgUkVMRUFTRV9CQVNTRVJU
KGFsaWdubWVudCA+PSByZXF1aXJlZEFsaWdubWVudCk7CiAgICAgUkVMRUFTRV9CQVNTRVJUKHNp
emUgPj0gcmVxdWVzdGVkU2l6ZSk7CiAKLSAgICBraW5kID0gbWFwVG9BY3RpdmVIZWFwS2luZChr
aW5kKTsKLSAgICBIZWFwJiBoZWFwID0gUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFwPj46Omdl
dCgpLT5hdChraW5kKTsKLQogICAgIHZvaWQqIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7Ci0gICAgICAgIHJlc3VsdCA9
IGhlYXAudHJ5QWxsb2NhdGVMYXJnZShsb2NrLCBhbGlnbm1lbnQsIHNpemUpOwotICAgICAgICBp
ZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAvLyBEb24ndCB0cmFjayB0aGlzIGFzIGRpcnR5IG1l
bW9yeSB0aGF0IGRpY3RhdGVzIGhvdyB3ZSBkcml2ZSB0aGUgc2NhdmVuZ2VyLgotICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIGl0IHNvIHRoYXQgdXNlcnMgb2YgdGhpcyBBUEkg
aW5mb3JtIGJtYWxsb2Mgd2hpY2gKLSAgICAgICAgICAgIC8vIHBhZ2VzIHRoZXkgZGlydHk6Ci0g
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
MjA3Ci0gICAgICAgICAgICBoZWFwLmV4dGVybmFsRGVjb21taXQobG9jaywgcmVzdWx0LCBzaXpl
KTsKKyAgICBpZiAoYXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkKKyAgICAg
ICAgcmVzdWx0ID0gZGVidWdIZWFwLT5tZW1hbGlnbkxhcmdlKGFsaWdubWVudCwgc2l6ZSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBtYXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQpOworICAg
ICAgICBIZWFwJiBoZWFwID0gUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFwPj46OmdldCgpLT5h
dChraW5kKTsKKworICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4
PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgcmVzdWx0ID0gaGVhcC50cnlBbGxv
Y2F0ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJhY2sgdGhpcyBhcyBkaXJ0eSBtZW1vcnkg
dGhhdCBkaWN0YXRlcyBob3cgd2UgZHJpdmUgdGhlIHNjYXZlbmdlci4KKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgaXQgc28gdGhhdCB1c2VycyBvZiB0aGlzIEFQSSBp
bmZvcm0gYm1hbGxvYyB3aGljaAorICAgICAgICAgICAgICAgIC8vIHBhZ2VzIHRoZXkgZGlydHk6
CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDIwNworICAgICAgICAgICAgICAgIGhlYXAuZXh0ZXJuYWxEZWNvbW1pdChsb2NrLCBy
ZXN1bHQsIHNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC03Miw2
ICs3OCwxMCBAQCB2b2lkKiB0cnlMYXJnZVplcm9lZE1lbWFsaWduVmlydHVhbChzaXplX3QgcmVx
dWlyZWRBbGlnbm1lbnQsIHNpemVfdCByZXF1ZXN0ZWRTaQogCiB2b2lkIGZyZWVMYXJnZVZpcnR1
YWwodm9pZCogb2JqZWN0LCBzaXplX3Qgc2l6ZSwgSGVhcEtpbmQga2luZCkKIHsKKyAgICBpZiAo
YXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkgeworICAgICAgICBkZWJ1Z0hl
YXAtPmZyZWVMYXJnZShvYmplY3QpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGtpbmQg
PSBtYXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwogICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNz
PFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwogICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CkBAIC04NCwxOSArOTQsMjIgQEAgdm9pZCBz
Y2F2ZW5nZSgpCiB7CiAgICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7CiAKLSAgICBQZXJQcm9jZXNz
PFNjYXZlbmdlcj46OmdldCgpLT5zY2F2ZW5nZSgpOworICAgIGlmICghRGVidWdIZWFwOjp0cnlH
ZXQoKSkKKyAgICAgICAgUGVyUHJvY2VzczxTY2F2ZW5nZXI+OjpnZXQoKS0+c2NhdmVuZ2UoKTsK
IH0KIAogYm9vbCBpc0VuYWJsZWQoSGVhcEtpbmQga2luZCkKIHsKICAgICBraW5kID0gbWFwVG9B
Y3RpdmVIZWFwS2luZChraW5kKTsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhl
YXA6Om11dGV4KCkpOwotICAgIHJldHVybiAhUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFwPj46
OmdldEZhc3RDYXNlKCktPmF0KGtpbmQpLmRlYnVnSGVhcCgpOworICAgIHJldHVybiAhUGVyUHJv
Y2VzczxFbnZpcm9ubWVudD46OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKTsKIH0KIAogI2lm
IEJPUyhEQVJXSU4pCiB2b2lkIHNldFNjYXZlbmdlclRocmVhZFFPU0NsYXNzKHFvc19jbGFzc190
IG92ZXJyaWRlQ2xhc3MpCiB7CisgICAgaWYgKERlYnVnSGVhcDo6dHJ5R2V0KCkpCisgICAgICAg
IHJldHVybjsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkp
OwogICAgIFBlclByb2Nlc3M8U2NhdmVuZ2VyPjo6Z2V0KCktPnNldFNjYXZlbmdlclRocmVhZFFP
U0NsYXNzKG92ZXJyaWRlQ2xhc3MpOwogfQpAQCAtMTA2LDIxICsxMTksMjIgQEAgdm9pZCBjb21t
aXRBbGlnbmVkUGh5c2ljYWwodm9pZCogb2JqZWN0LCBzaXplX3Qgc2l6ZSwgSGVhcEtpbmQga2lu
ZCkKIHsKICAgICB2bVZhbGlkYXRlUGh5c2ljYWwob2JqZWN0LCBzaXplKTsKICAgICB2bUFsbG9j
YXRlUGh5c2ljYWxQYWdlcyhvYmplY3QsIHNpemUpOwotICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9j
ZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwotICAgIGhlYXAuZXh0ZXJu
YWxDb21taXQob2JqZWN0LCBzaXplKTsKKyAgICBpZiAoIURlYnVnSGVhcDo6dHJ5R2V0KCkpCisg
ICAgICAgIFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQoa2luZCkuZXh0
ZXJuYWxDb21taXQob2JqZWN0LCBzaXplKTsKIH0KIAogdm9pZCBkZWNvbW1pdEFsaWduZWRQaHlz
aWNhbCh2b2lkKiBvYmplY3QsIHNpemVfdCBzaXplLCBIZWFwS2luZCBraW5kKQogewogICAgIHZt
VmFsaWRhdGVQaHlzaWNhbChvYmplY3QsIHNpemUpOwogICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2Fs
UGFnZXMob2JqZWN0LCBzaXplKTsKLSAgICBIZWFwJiBoZWFwID0gUGVyUHJvY2VzczxQZXJIZWFw
S2luZDxIZWFwPj46OmdldCgpLT5hdChraW5kKTsKLSAgICBoZWFwLmV4dGVybmFsRGVjb21taXQo
b2JqZWN0LCBzaXplKTsKKyAgICBpZiAoIURlYnVnSGVhcDo6dHJ5R2V0KCkpCisgICAgICAgIFBl
clByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQoa2luZCkuZXh0ZXJuYWxEZWNv
bW1pdChvYmplY3QsIHNpemUpOwogfQogCiB2b2lkIGVuYWJsZU1pbmlNb2RlKCkKIHsKLSAgICBQ
ZXJQcm9jZXNzPFNjYXZlbmdlcj46OmdldCgpLT5lbmFibGVNaW5pTW9kZSgpOworICAgIGlmICgh
RGVidWdIZWFwOjp0cnlHZXQoKSkKKyAgICAgICAgUGVyUHJvY2VzczxTY2F2ZW5nZXI+OjpnZXQo
KS0+ZW5hYmxlTWluaU1vZGUoKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBibWFsbG9jOjphcGkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362482</attachid>
            <date>2019-02-19 21:43:56 -0800</date>
            <delta_ts>2019-02-19 22:04:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194836-20190219214355.patch</filename>
            <type>text/plain</type>
            <size>23729</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZmY5YTg4YTY5ZWM1Y2Rj
YmIwNTE0MjViYjQwODE0MTRlNTI1ZjY5OS4uY2FjZDAyNTVkNTE5MDg4NTRmNDc4YWJmM2JhZmFj
ODExOTIyZWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE5LTAyLTE5ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIGJtYWxs
b2M6OkhlYXAgaXMgYWxsb2NhdGVkIGV2ZW4gdGhvdWdoIHdlIHVzZSBzeXN0ZW0gbWFsbG9jIG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDgz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZp
b3VzbHksIGJtYWxsb2M6OkhlYXAgaG9sZHMgRGVidWdIZWFwLCBhbmQgZGVsZWdhdGVzIGFsbG9j
YXRpb24gYW5kIGRlYWxsb2NhdGlvbiB0byBkZWJ1ZyBoZWFwLgorICAgICAgICBIb3dldmVyLCBi
bWFsbG9jOjpIZWFwIGlzIGxhcmdlLiBXZSB3b3VsZCBsaWtlIHRvIGF2b2lkIGluaXRpYWxpemF0
aW9uIG9mIGJtYWxsb2M6OkhlYXAgdW5kZXIgdGhlCisgICAgICAgIHN5c3RlbSBtYWxsb2MgbW9k
ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dHJhY3RzIG91dCBEZWJ1Z0hlYXAgZnJvbSBibWFs
bG9jOjpIZWFwLCBhbmQgbG9naWNhbGx5IHB1dHMgdGhpcyBpbiBhIGJvdW5kYXJ5IG9mCisgICAg
ICAgIGJtYWxsb2M6OmFwaS4gYm1hbGxvYzo6YXBpIGRlbGVnYXRlcyBhbGxvY2F0aW9uIGFuZCBk
ZWFsbG9jYXRpb24gdG8gRGVidWdIZWFwIGlmIERlYnVnSGVhcCBpcyBlbmFibGVkLgorICAgICAg
ICBPdGhlcndpc2UsIHVzaW5nIGJtYWxsb2MncyB1c3VhbCBtZWNoYW5pc20uIFRoZSBjaGFsbGVu
Z2UgaXMgdGhhdCB3ZSB3b3VsZCBsaWtlIHRvIGtlZXAgYm1hbGxvYyBmYXN0CisgICAgICAgIHBh
dGggZmFzdC4KKworICAgICAgICAxLiBGb3IgSXNvSGVhcHMsIHdlIHVzZSB0aGUgc2ltaWxhciB0
ZWNobmlxdWVzIGRvbmUgaW4gQ2FjaGUuIElmIHRoZSBkZWJ1ZyBtb2RlIGlzIGVuYWJsZWQsIHdl
IGFsd2F5cyBnbworICAgICAgICAgICB0byB0aGUgc2xvdyBwYXRoIG9mIHRoZSBJc29IZWFwIGFs
bG9jYXRpb24sIGFuZCBrZWVwIElzb1RMUzo6Z2V0KCkgcmV0dXJuaW5nIG51bGxwdHIuIEluIHRo
ZSBzbG93IHBhdGgsCisgICAgICAgICAgIHdlIGp1c3QgZmFsbGJhY2sgdG8gdGhlIHVzdWFsIGJt
YWxsb2M6OmFwaTo6dHJ5TWFsbG9jIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGVmZmljaWVudCBi
ZWNhdXNlIGJtYWxsb2MKKyAgICAgICAgICAgY29udGludWVzIHVzaW5nIHRoZSBmYXN0IHBhdGgu
CisKKyAgICAgICAgMi4gRm9yIHRoZSBvdGhlciBBUElzLCBsaWtlIGZyZWVMYXJnZVZpcnR1YWws
IHdlIGp1c3QgcHV0IERlYnVnSGVhcCBjaGVjayBiZWNhdXNlIHRoaXMgQVBJIGl0c2VsZiB0YWtl
cyBmYWlyCisgICAgICAgICAgIGFtb3VudCBvZiB0aW1lLiBUaGVuIGRlYnVnIGhlYXAgY2hlY2sg
ZG9lcyBub3QgbWF0dGVyLgorCisgICAgICAgICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgorICAg
ICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpyZWFsbG9jYXRlSW1wbCk6CisgICAgICAgICogYm1h
bGxvYy9DYWNoZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6dHJ5QWxsb2NhdGVTbG93
Q2FzZU51bGxDYWNoZSk6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6YWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZSk6CisgICAgICAgIChibWFsbG9jOjpDYWNoZTo6ZGVhbGxvY2F0ZVNsb3dDYXNl
TnVsbENhY2hlKToKKyAgICAgICAgKGJtYWxsb2M6OkNhY2hlOjp0cnlSZWFsbG9jYXRlU2xvd0Nh
c2VOdWxsQ2FjaGUpOgorICAgICAgICAoYm1hbGxvYzo6Q2FjaGU6OnJlYWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6ZGVi
dWdIZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAg
ICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6
dHJ5R2V0KToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6SGVhcCk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmb290cHJpbnQpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6dHJ5QWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6ZGVidWdIZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9j
L0lzb1RMUy5jcHA6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6Oklzb1RMUyk6CisgICAgICAg
IChibWFsbG9jOjpJc29UTFM6OmlzVXNpbmdEZWJ1Z0hlYXApOiBEZWxldGVkLgorICAgICAgICAo
Ym1hbGxvYzo6SXNvVExTOjpkZWJ1Z01hbGxvYyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9j
OjpJc29UTFM6OmRlYnVnRnJlZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9Jc29UTFMu
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMUzo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6ZGVhbGxv
Y2F0ZVNsb3cpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGUuaDoKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5jcHA6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5n
ZXI6OlNjYXZlbmdlcik6CisgICAgICAgICogYm1hbGxvYy9ibWFsbG9jLmNwcDoKKyAgICAgICAg
KGJtYWxsb2M6OmFwaTo6dHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwpOgorICAgICAgICAo
Ym1hbGxvYzo6YXBpOjpmcmVlTGFyZ2VWaXJ0dWFsKToKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6
c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6YXBpOjppc0VuYWJsZWQpOgorICAgICAgICAo
Ym1hbGxvYzo6YXBpOjpzZXRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyk6CisgICAgICAgIChibWFs
bG9jOjphcGk6OmNvbW1pdEFsaWduZWRQaHlzaWNhbCk6CisgICAgICAgIChibWFsbG9jOjphcGk6
OmRlY29tbWl0QWxpZ25lZFBoeXNpY2FsKToKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6ZW5hYmxl
TWluaU1vZGUpOgorCiAyMDE5LTAyLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW2JtYWxsb2NdIGJtYWxsb2M6OkNhY2hlIHNob3VsZCBub3QgYmUgaW5z
dGFudGlhdGVkIGlmIHdlIGFyZSB1c2luZyBzeXN0ZW0gbWFsbG9jCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0FsbG9jYXRvci5jcHAKaW5kZXggY2ZkMDFmZTNlZDZmZGE4ZjQ0MzE3MjM5NGY0NDgxOTVmMjMx
NjliYS4uNDA5MTQwZWIwZTc4NDY2Mjk1NDJhMmM1OTEyOWQxYTk3NDA3M2JlMyAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcApAQCAtMTAyLDkgKzEwMiw5IEBAIHZvaWQqIEFsbG9j
YXRvcjo6dHJ5UmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQogdm9pZCog
QWxsb2NhdG9yOjpyZWFsbG9jYXRlSW1wbCh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplLCBi
b29sIGNyYXNoT25GYWlsdXJlKQogewogICAgIHNpemVfdCBvbGRTaXplID0gMDsKLSAgICBzd2l0
Y2ggKG9iamVjdFR5cGUobV9oZWFwLmtpbmQoKSwgb2JqZWN0KSkgeworICAgIHN3aXRjaCAob2Jq
ZWN0VHlwZShtX2hlYXAsIG9iamVjdCkpIHsKICAgICBjYXNlIE9iamVjdFR5cGU6OlNtYWxsOiB7
Ci0gICAgICAgIEJBU1NFUlQob2JqZWN0VHlwZShtX2hlYXAua2luZCgpLCBudWxscHRyKSA9PSBP
YmplY3RUeXBlOjpTbWFsbCk7CisgICAgICAgIEJBU1NFUlQob2JqZWN0VHlwZShtX2hlYXAsIG51
bGxwdHIpID09IE9iamVjdFR5cGU6OlNtYWxsKTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAg
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DYWNo
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcAppbmRleCAyOWFkMTMwOTg2
NmYxMmQ4MDlmNmYxMjFkOWY2NTExZWQ3MzUzNjJhLi43MGQ0ODgyZTVjMDY2MzljNzdkZTQ5NThl
OTk4Y2NjMDhhZmI4NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcApAQCAtMzIsOCArMzIs
NiBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLXN0YXRpYyBEZWJ1Z0hlYXAqIGRlYnVnSGVh
cENhY2hlIHsgbnVsbHB0ciB9OwotCiB2b2lkIENhY2hlOjpzY2F2ZW5nZShIZWFwS2luZCBoZWFw
S2luZCkKIHsKICAgICBQZXJIZWFwS2luZDxDYWNoZT4qIGNhY2hlcyA9IFBlclRocmVhZDxQZXJI
ZWFwS2luZDxDYWNoZT4+OjpnZXRGYXN0Q2FzZSgpOwpAQCAtNDYsMTcgKzQ0LDYgQEAgdm9pZCBD
YWNoZTo6c2NhdmVuZ2UoSGVhcEtpbmQgaGVhcEtpbmQpCiAgICAgY2FjaGVzLT5hdChoZWFwS2lu
ZCkuZGVhbGxvY2F0b3IoKS5zY2F2ZW5nZSgpOwogfQogCi1zdGF0aWMgQklOTElORSBEZWJ1Z0hl
YXAqIGRlYnVnSGVhcCgpCi17Ci0gICAgaWYgKGRlYnVnSGVhcENhY2hlKQotICAgICAgICByZXR1
cm4gZGVidWdIZWFwQ2FjaGU7Ci0gICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQo
KS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdIZWFwQ2FjaGUgPSBQZXJQ
cm9jZXNzPERlYnVnSGVhcD46OmdldCgpOwotICAgICAgICByZXR1cm4gZGVidWdIZWFwQ2FjaGU7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBDYWNoZTo6Q2FjaGUoSGVhcEtpbmQg
aGVhcEtpbmQpCiAgICAgOiBtX2RlYWxsb2NhdG9yKFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVh
cD4+OjpnZXQoKS0+YXQoaGVhcEtpbmQpKQogICAgICwgbV9hbGxvY2F0b3IoUGVyUHJvY2VzczxQ
ZXJIZWFwS2luZDxIZWFwPj46OmdldCgpLT5hdChoZWFwS2luZCksIG1fZGVhbGxvY2F0b3IpCkBA
IC02OCw0MCArNTUsNDAgQEAgQk5PX0lOTElORSB2b2lkKiBDYWNoZTo6dHJ5QWxsb2NhdGVTbG93
Q2FzZU51bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgc2l6ZV90IHMKIHsKICAgICAvLyBGSVhN
RTogRGVidWdIZWFwIGRvZXMgbm90IGhhdmUgdHJ5QWxsb2NhdGUgZmVhdHVyZS4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODM3Ci0gICAgaWYgKGF1
dG8qIGhlYXAgPSBkZWJ1Z0hlYXAoKSkKLSAgICAgICAgcmV0dXJuIGhlYXAtPm1hbGxvYyhzaXpl
KTsKKyAgICBpZiAoYXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkKKyAgICAg
ICAgcmV0dXJuIGRlYnVnSGVhcC0+bWFsbG9jKHNpemUpOwogICAgIHJldHVybiBQZXJUaHJlYWQ8
UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9BY3RpdmVIZWFwS2lu
ZChoZWFwS2luZCkpLmFsbG9jYXRvcigpLnRyeUFsbG9jYXRlKHNpemUpOwogfQogCiBCTk9fSU5M
SU5FIHZvaWQqIENhY2hlOjphbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBL
aW5kLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKQot
ICAgICAgICByZXR1cm4gaGVhcC0+bWFsbG9jKHNpemUpOworICAgIGlmIChhdXRvKiBkZWJ1Z0hl
YXAgPSBEZWJ1Z0hlYXA6OnRyeUdldCgpKQorICAgICAgICByZXR1cm4gZGVidWdIZWFwLT5tYWxs
b2Moc2l6ZSk7CiAgICAgcmV0dXJuIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRT
bG93Q2FzZSgpLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kKGhlYXBLaW5kKSkuYWxsb2NhdG9yKCku
YWxsb2NhdGUoc2l6ZSk7CiB9CiAKIEJOT19JTkxJTkUgdm9pZCogQ2FjaGU6OnRyeUFsbG9jYXRl
U2xvd0Nhc2VOdWxsQ2FjaGUoSGVhcEtpbmQgaGVhcEtpbmQsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCBzaXplKQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKKyAgICBp
ZiAoYXV0byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkgewogICAgICAgICBjb25z
dGV4cHIgYm9vbCBjcmFzaE9uRmFpbHVyZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gaGVhcC0+
bWVtYWxpZ24oYWxpZ25tZW50LCBzaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVy
biBkZWJ1Z0hlYXAtPm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOwog
ICAgIH0KICAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldFNsb3dD
YXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS50cnlB
bGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOwogfQogCiBCTk9fSU5MSU5FIHZvaWQqIENhY2hlOjph
bGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCBzaXplX3QgYWxpZ25t
ZW50LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKSB7
CisgICAgaWYgKGF1dG8qIGRlYnVnSGVhcCA9IERlYnVnSGVhcDo6dHJ5R2V0KCkpIHsKICAgICAg
ICAgY29uc3RleHByIGJvb2wgY3Jhc2hPbkZhaWx1cmUgPSB0cnVlOwotICAgICAgICByZXR1cm4g
aGVhcC0+bWVtYWxpZ24oYWxpZ25tZW50LCBzaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAg
IHJldHVybiBkZWJ1Z0hlYXAtPm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSwgY3Jhc2hPbkZhaWx1
cmUpOwogICAgIH0KICAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46Omdl
dFNsb3dDYXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3Io
KS5hbGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOwogfQogCiBCTk9fSU5MSU5FIHZvaWQgQ2FjaGU6
OmRlYWxsb2NhdGVTbG93Q2FzZU51bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2Jq
ZWN0KQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKLSAgICAgICAgaGVh
cC0+ZnJlZShvYmplY3QpOworICAgIGlmIChhdXRvKiBkZWJ1Z0hlYXAgPSBEZWJ1Z0hlYXA6OnRy
eUdldCgpKSB7CisgICAgICAgIGRlYnVnSGVhcC0+ZnJlZShvYmplY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRTbG93Q2Fz
ZSgpLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kKGhlYXBLaW5kKSkuZGVhbGxvY2F0b3IoKS5kZWFs
bG9jYXRlKG9iamVjdCk7CkBAIC0xMDksMTggKzk2LDE4IEBAIEJOT19JTkxJTkUgdm9pZCBDYWNo
ZTo6ZGVhbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCB2b2lkKiBv
YmplCiAKIEJOT19JTkxJTkUgdm9pZCogQ2FjaGU6OnRyeVJlYWxsb2NhdGVTbG93Q2FzZU51bGxD
YWNoZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKIHsK
LSAgICBpZiAoYXV0byogaGVhcCA9IGRlYnVnSGVhcCgpKSB7CisgICAgaWYgKGF1dG8qIGRlYnVn
SGVhcCA9IERlYnVnSGVhcDo6dHJ5R2V0KCkpIHsKICAgICAgICAgY29uc3RleHByIGJvb2wgY3Jh
c2hPbkZhaWx1cmUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGhlYXAtPnJlYWxsb2Mob2JqZWN0
LCBuZXdTaXplLCBjcmFzaE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVybiBkZWJ1Z0hlYXAtPnJl
YWxsb2Mob2JqZWN0LCBuZXdTaXplLCBjcmFzaE9uRmFpbHVyZSk7CiAgICAgfQogICAgIHJldHVy
biBQZXJUaHJlYWQ8UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9B
Y3RpdmVIZWFwS2luZChoZWFwS2luZCkpLmFsbG9jYXRvcigpLnRyeVJlYWxsb2NhdGUob2JqZWN0
LCBuZXdTaXplKTsKIH0KIAogQk5PX0lOTElORSB2b2lkKiBDYWNoZTo6cmVhbGxvY2F0ZVNsb3dD
YXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCB2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdT
aXplKQogewotICAgIGlmIChhdXRvKiBoZWFwID0gZGVidWdIZWFwKCkpIHsKKyAgICBpZiAoYXV0
byogZGVidWdIZWFwID0gRGVidWdIZWFwOjp0cnlHZXQoKSkgewogICAgICAgICBjb25zdGV4cHIg
Ym9vbCBjcmFzaE9uRmFpbHVyZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBoZWFwLT5yZWFsbG9j
KG9iamVjdCwgbmV3U2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOworICAgICAgICByZXR1cm4gZGVidWdI
ZWFwLT5yZWFsbG9jKG9iamVjdCwgbmV3U2l6ZSwgY3Jhc2hPbkZhaWx1cmUpOwogICAgIH0KICAg
ICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldFNsb3dDYXNlKCktPmF0
KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS5yZWFsbG9jYXRlKG9i
amVjdCwgbmV3U2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
YnVnSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXgg
ZjIxZjVhNTJmNWMyYTY1ZWVhMGVmYmU4YzYxOTE3NTFiNTkwNDk5MC4uNGQ5MjkyYzdkODJmYmNl
MWY3MjA5MzdmYThhMGJhYTUxMDNmYzdhNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWJ1Z0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFw
LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPHRocmVhZD4KIAogbmFtZXNwYWNlIGJt
YWxsb2MgeworCitEZWJ1Z0hlYXAqIGRlYnVnSGVhcENhY2hlIHsgbnVsbHB0ciB9OwogICAgIAog
I2lmIEJPUyhEQVJXSU4pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVi
dWdIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCmluZGV4IDIxOWY4
Mzc0ZTU3OWYxOWM0NWQ4NjQ1ZjBmNGU4OTBkZGQ4MmI5OGQuLmQxZTBlOWJmNTY5YmE1NGFiZDZl
NjFiZTgzNjZjNjdiYWNiZDUwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVidWdIZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaApAQCAt
MjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KIApAQCAtNDcsNiArNDksOCBAQCBjbGFz
cyBEZWJ1Z0hlYXAgewogICAgIHZvaWQqIG1lbWFsaWduTGFyZ2Uoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsKICAgICB2b2lkIGZyZWVMYXJnZSh2b2lkKiBiYXNlKTsKIAorICAgIHN0YXRpYyBE
ZWJ1Z0hlYXAqIHRyeUdldCgpOworCiBwcml2YXRlOgogI2lmIEJPUyhEQVJXSU4pCiAgICAgbWFs
bG9jX3pvbmVfdCogbV96b25lOwpAQCAtNTgsNCArNjIsMTYgQEAgY2xhc3MgRGVidWdIZWFwIHsK
ICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8dm9pZCosIHNpemVfdD4gbV9zaXplTWFwOwogfTsKIAor
ZXh0ZXJuIEJFWFBPUlQgRGVidWdIZWFwKiBkZWJ1Z0hlYXBDYWNoZTsKK0JJTkxJTkUgRGVidWdI
ZWFwKiBEZWJ1Z0hlYXA6OnRyeUdldCgpCit7CisgICAgaWYgKGRlYnVnSGVhcENhY2hlKQorICAg
ICAgICByZXR1cm4gZGVidWdIZWFwQ2FjaGU7CisgICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1l
bnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKKyAgICAgICAgZGVidWdIZWFwQ2Fj
aGUgPSBQZXJQcm9jZXNzPERlYnVnSGVhcD46OmdldCgpOworICAgICAgICByZXR1cm4gZGVidWdI
ZWFwQ2FjaGU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCA1MjhjZmViZjk3M2QyM2Q4YzM0
NTNlMjc5Mzk2YjIyZGE3MjZjYzBjLi4yNWEyOWFiNDRiN2E2M2FjZWJjNDhlNGNkZTIxZGJlNTk3
YTk2YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIGJtYWxsb2MgewogSGVhcDo6SGVhcChIZWFwS2luZCBraW5kLCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKICAgICA6IG1fa2luZChraW5kKQogICAgICwgbV92bVBhZ2VTaXplUGh5c2ljYWwo
dm1QYWdlU2l6ZVBoeXNpY2FsKCkpCi0gICAgLCBtX2RlYnVnSGVhcChudWxscHRyKQogewogICAg
IFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplUGh5c2ljYWwoKSA+PSBzbWFsbFBhZ2VTaXplKTsK
ICAgICBSRUxFQVNFX0JBU1NFUlQodm1QYWdlU2l6ZSgpID49IHZtUGFnZVNpemVQaHlzaWNhbCgp
KTsKQEAgLTU1LDIyICs1NCwyMCBAQCBIZWFwOjpIZWFwKEhlYXBLaW5kIGtpbmQsIHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKQogICAgIGluaXRpYWxpemVMaW5lTWV0YWRhdGEoKTsKICAgICBpbml0
aWFsaXplUGFnZU1ldGFkYXRhKCk7CiAgICAgCi0gICAgaWYgKFBlclByb2Nlc3M8RW52aXJvbm1l
bnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpCi0gICAgICAgIG1fZGVidWdIZWFwID0g
UGVyUHJvY2VzczxEZWJ1Z0hlYXA+OjpnZXQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgR2lnYWNh
Z2U6OmVuc3VyZUdpZ2FjYWdlKCk7CisgICAgQkFTU0VSVCghUGVyUHJvY2VzczxFbnZpcm9ubWVu
dD46OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CisKKyAgICBHaWdhY2FnZTo6ZW5zdXJl
R2lnYWNhZ2UoKTsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGlmICh1c2luZ0dpZ2Fj
YWdlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZUJhc2VQdHIoKSk7
Ci0gICAgICAgICAgICB1aW50NjRfdCByYW5kb21bMl07Ci0gICAgICAgICAgICBjcnlwdG9SYW5k
b20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocmFuZG9tKSwgc2l6ZW9mKHJhbmRv
bSkpOwotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1Q
YWdlU2l6ZSgpLCBnaWdhY2FnZVNpemUoKSAtIChyYW5kb21bMF0gJSBHaWdhY2FnZTo6bWF4aW11
bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUpKTsKLSAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCByYW5kb21bMV0gJSAoZ2ln
YWNhZ2VTaXplKCkgLSBzaXplKSk7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZ2lnYWNhZ2VCYXNlUHRyKCkpICsgb2Zmc2V0OwotICAg
ICAgICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoYmFzZSwgc2l6ZSwgMCwgMCkpOwot
ICAgICAgICB9Ci0jZW5kaWYKKyAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CisgICAgICAgIFJF
TEVBU0VfQkFTU0VSVChnaWdhY2FnZUJhc2VQdHIoKSk7CisgICAgICAgIHVpbnQ2NF90IHJhbmRv
bVsyXTsKKyAgICAgICAgY3J5cHRvUmFuZG9tKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KHJhbmRvbSksIHNpemVvZihyYW5kb20pKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSByb3Vu
ZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCBnaWdhY2FnZVNpemUoKSAtIChyYW5kb21b
MF0gJSBHaWdhY2FnZTo6bWF4aW11bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUpKTsKKyAgICAg
ICAgcHRyZGlmZl90IG9mZnNldCA9IHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBhZ2VTaXplKCks
IHJhbmRvbVsxXSAlIChnaWdhY2FnZVNpemUoKSAtIHNpemUpKTsKKyAgICAgICAgdm9pZCogYmFz
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSAr
IG9mZnNldDsKKyAgICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoYmFzZSwgc2l6ZSwg
MCwgMCkpOwogICAgIH0KKyNlbmRpZgogICAgIAogICAgIG1fc2NhdmVuZ2VyID0gUGVyUHJvY2Vz
czxTY2F2ZW5nZXI+OjpnZXQoKTsKIH0KQEAgLTE1Myw3ICsxNTAsNiBAQCBzaXplX3QgSGVhcDo6
ZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAKIHNpemVfdCBIZWFwOjpm
b290cHJpbnQoKQogewotICAgIEJBU1NFUlQoIW1fZGVidWdIZWFwKTsKICAgICByZXR1cm4gbV9m
b290cHJpbnQ7CiB9CiAKQEAgLTU1NSw5ICs1NTEsNiBAQCB2b2lkKiBIZWFwOjp0cnlBbGxvY2F0
ZUxhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzaXplX3QgYWxpZ25tZW50LCBz
aQogCiAgICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7CiAgICAgCi0gICAgaWYg
KG1fZGVidWdIZWFwKQotICAgICAgICByZXR1cm4gbV9kZWJ1Z0hlYXAtPm1lbWFsaWduTGFyZ2Uo
YWxpZ25tZW50LCBzaXplKTsKLSAgICAKICAgICBtX3NjYXZlbmdlci0+ZGlkU3RhcnRHcm93aW5n
KCk7CiAgICAgCiAgICAgc2l6ZV90IHJvdW5kZWRTaXplID0gc2l6ZSA/IHJvdW5kVXBUb011bHRp
cGxlT2YobGFyZ2VBbGlnbm1lbnQsIHNpemUpIDogbGFyZ2VBbGlnbm1lbnQ7CkBAIC02MjYsOSAr
NjE5LDYgQEAgdm9pZCBIZWFwOjpzaHJpbmtMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYg
bG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV8KIAogdm9pZCBIZWFwOjpkZWFsbG9jYXRl
TGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBvYmplY3QpCiB7Ci0gICAgaWYg
KG1fZGVidWdIZWFwKQotICAgICAgICByZXR1cm4gbV9kZWJ1Z0hlYXAtPmZyZWVMYXJnZShvYmpl
Y3QpOwotCiAgICAgc2l6ZV90IHNpemUgPSBtX2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3Qp
OwogICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKG9iamVjdCwgc2l6ZSwgc2l6ZSwgc2l6
ZSkpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5k
ZXggNzE0NmRkN2IxZDdhNTc4OGI4OWU3ZDEyNGZiMWI0NzNlMTRmMTg5Zi4uMzhhZTcyNDg5NmY0
ZDhjZjBhOWQ1ODA1YTAyMTJhOTQ2ZmYwNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKQEAgLTYz
LDggKzYzLDYgQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgSGVhcEtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIAotICAgIERlYnVnSGVhcCogZGVidWdIZWFwKCkgeyBy
ZXR1cm4gbV9kZWJ1Z0hlYXA7IH0KLQogICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMo
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLAogICAgICAgICBCdW1w
QWxsb2NhdG9yJiwgQnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUmKTsKICAgICB2b2lkIGRlcmVm
U21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgT2JqZWN0LCBMaW5lQ2FjaGUmKTsK
QEAgLTE0NSw3ICsxNDMsNiBAQCBjbGFzcyBIZWFwIHsKICAgICBNYXA8Q2h1bmsqLCBPYmplY3RU
eXBlLCBDaHVua0hhc2g+IG1fb2JqZWN0VHlwZXM7CiAKICAgICBTY2F2ZW5nZXIqIG1fc2NhdmVu
Z2VyIHsgbnVsbHB0ciB9OwotICAgIERlYnVnSGVhcCogbV9kZWJ1Z0hlYXAgeyBudWxscHRyIH07
CiAKICAgICBzaXplX3QgbV9mb290cHJpbnQgeyAwIH07CiAgICAgc2l6ZV90IG1fZnJlZWFibGVN
ZW1vcnkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5j
cHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAKaW5kZXggYzk2ZjIyMjc3NzY3
ZTU3YmQwZGZmMmZmZDg1NGY2NmY5ZDZmZTI2NS4uMjhlMDA1YTMxYjcwNDUyZWI2N2E0ZDE5YzQ5
YjI5OGY5MWVmZDQwMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMu
Y3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmNwcApAQCAtMjUsNyArMjUs
NiBAQAogCiAjaW5jbHVkZSAiSXNvVExTLmgiCiAKLSNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKICNp
bmNsdWRlICJFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkdpZ2FjYWdlLmgiCiAjaW5jbHVkZSAi
SXNvVExTRW50cnlJbmxpbmVzLmgiCkBAIC01NSw2ICs1NCw3IEBAIHZvaWQgSXNvVExTOjpzY2F2
ZW5nZSgpCiAKIElzb1RMUzo6SXNvVExTKCkKIHsKKyAgICBCQVNTRVJUKCFQZXJQcm9jZXNzPEVu
dmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKTsKIH0KIAogSXNvVExTKiBJ
c29UTFM6OmVuc3VyZUVudHJpZXModW5zaWduZWQgb2Zmc2V0KQpAQCAtMTc0LDI4ICsxNzQsNiBA
QCB2b2lkIElzb1RMUzo6Zm9yRWFjaEVudHJ5KGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIH0p
OwogfQogCi1ib29sIElzb1RMUzo6aXNVc2luZ0RlYnVnSGVhcCgpCi17Ci0gICAgcmV0dXJuIFBl
clByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCk7Ci19Ci0K
LWF1dG8gSXNvVExTOjpkZWJ1Z01hbGxvYyhzaXplX3Qgc2l6ZSkgLT4gRGVidWdNYWxsb2NSZXN1
bHQKLXsKLSAgICBEZWJ1Z01hbGxvY1Jlc3VsdCByZXN1bHQ7Ci0gICAgaWYgKChyZXN1bHQudXNp
bmdEZWJ1Z0hlYXAgPSBpc1VzaW5nRGVidWdIZWFwKCkpKQotICAgICAgICByZXN1bHQucHRyID0g
UGVyUHJvY2VzczxEZWJ1Z0hlYXA+OjpnZXQoKS0+bWFsbG9jKHNpemUpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWJvb2wgSXNvVExTOjpkZWJ1Z0ZyZWUodm9pZCogcCkKLXsKLSAgICBpZiAo
aXNVc2luZ0RlYnVnSGVhcCgpKSB7Ci0gICAgICAgIFBlclByb2Nlc3M8RGVidWdIZWFwPjo6Z2V0
KCktPmZyZWUocCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KIHZvaWQgSXNvVExTOjpkZXRlcm1pbmVNYWxsb2NGYWxsYmFja1N0YXRlKCkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMu
aAppbmRleCAxYjM4Y2NlNDIzODBkMzUyNDQyMmJjNzg2ZGJmMDNiYmQ4ZTU2MzYxLi4yN2VmZmMy
YmQzNjA3ODlmNjkzMjVhNWRhNWQxY2IzYTc2YTJhNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMUy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
LmgKQEAgLTEwMywxNiArMTAzLDYgQEAgY2xhc3MgSXNvVExTIHsKICAgICAKICAgICBCRVhQT1JU
IHN0YXRpYyB2b2lkIGRldGVybWluZU1hbGxvY0ZhbGxiYWNrU3RhdGUoKTsKICAgICAKLSAgICBz
dGF0aWMgYm9vbCBpc1VzaW5nRGVidWdIZWFwKCk7Ci0gICAgCi0gICAgc3RydWN0IERlYnVnTWFs
bG9jUmVzdWx0IHsKLSAgICAgICAgdm9pZCogcHRyIHsgbnVsbHB0ciB9OwotICAgICAgICBib29s
IHVzaW5nRGVidWdIZWFwIHsgZmFsc2UgfTsKLSAgICB9OwotICAgIAotICAgIEJFWFBPUlQgc3Rh
dGljIERlYnVnTWFsbG9jUmVzdWx0IGRlYnVnTWFsbG9jKHNpemVfdCk7Ci0gICAgQkVYUE9SVCBz
dGF0aWMgYm9vbCBkZWJ1Z0ZyZWUodm9pZCopOwotICAgIAogICAgIElzb1RMU0VudHJ5KiBtX2xh
c3RFbnRyeSB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2V4dGVudCB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX2NhcGFjaXR5IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGlu
ZXMuaAppbmRleCAyMGY2YWZlYWNkOWQ5YWU5N2FmMGJmMGM2ZGM1MTg1NTFjN2VlYTA5Li43ZDg2
NmEzZTYwYWVlNzZjYTIxMTk0NDJhZjhjZmJlZTc5Mzg4MTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0lubGluZXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSXNvSGVhcEltcGwuaCIKICNpbmNs
dWRlICJJc29UTFMuaCIKICNpbmNsdWRlICJibWFsbG9jLmgiCkBAIC05NCw5ICs5NSw4IEBAIEJO
T19JTkxJTkUgdm9pZCogSXNvVExTOjphbGxvY2F0ZVNsb3coYXBpOjpJc29IZWFwPFR5cGU+JiBo
YW5kbGUsIGJvb2wgYWJvcnRPbkZhCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGRlYnVnTWFsbG9jUmVzdWx0ID0gZGVidWdNYWxsb2MoQ29uZmlnOjpvYmplY3RTaXplKTsK
LSAgICBpZiAoZGVidWdNYWxsb2NSZXN1bHQudXNpbmdEZWJ1Z0hlYXApCi0gICAgICAgIHJldHVy
biBkZWJ1Z01hbGxvY1Jlc3VsdC5wdHI7CisgICAgLy8gSWYgZGVidWcgaGVhcCBpcyBlbmFibGVk
LCBzX21hbGxvY0ZhbGxiYWNrU3RhdGUgYmVjb21lcyBNYWxsb2NGYWxsYmFja1N0YXRlOjpGYWxs
QmFja1RvTWFsbG9jLgorICAgIEJBU1NFUlQoIVBlclByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQo
KS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpOwogICAgIAogICAgIElzb1RMUyogdGxzID0gZW5zdXJl
SGVhcEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAKQEAgLTEzOCw4ICsxMzgsOCBAQCBCTk9fSU5M
SU5FIHZvaWQgSXNvVExTOjpkZWFsbG9jYXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRs
ZSwgdm9pZCogcCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChkZWJ1Z0Zy
ZWUocCkpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBJZiBkZWJ1ZyBoZWFwIGlzIGVuYWJsZWQs
IHNfbWFsbG9jRmFsbGJhY2tTdGF0ZSBiZWNvbWVzIE1hbGxvY0ZhbGxiYWNrU3RhdGU6OkZhbGxC
YWNrVG9NYWxsb2MuCisgICAgQkFTU0VSVCghUGVyUHJvY2VzczxFbnZpcm9ubWVudD46OmdldCgp
LT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAgICAgCiAgICAgUkVMRUFTRV9CQVNTRVJUKGhhbmRs
ZS5pc0luaXRpYWxpemVkKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9PYmplY3RUeXBlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5j
cHAKaW5kZXggYzA2ZTU3ODVjZTgyZTc1YjFjNGVhNGYzN2U4NTBhOGIyYTMyN2I3Zi4uMTY4NzYx
OTgwZmEwN2QxOWU5YzE5N2M1ZTcxYzM3Mjk1ZjkyOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L09iamVjdFR5cGUuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCi1PYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcEtpbmQga2luZCwgdm9pZCogb2JqZWN0KQor
T2JqZWN0VHlwZSBvYmplY3RUeXBlKEhlYXAmIGhlYXAsIHZvaWQqIG9iamVjdCkKIHsKICAgICBp
ZiAobWlnaHRCZUxhcmdlKG9iamVjdCkpIHsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gT2JqZWN0VHlwZTo6U21hbGw7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKLSAgICAgICAgaWYgKFBlclByb2Nlc3M8UGVy
SGVhcEtpbmQ8SGVhcD4+OjpnZXRGYXN0Q2FzZSgpLT5hdChraW5kKS5pc0xhcmdlKGxvY2ssIG9i
amVjdCkpCisgICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkKICAgICAgICAg
ICAgIHJldHVybiBPYmplY3RUeXBlOjpMYXJnZTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvT2JqZWN0VHlwZS5oCmluZGV4IDA5N2Y5ODcyZTU0ZjJiNDA5YTE5ZmMzZjZjYTAzZjdhZWU5
Mjk4NDYuLjc0YzEzNDY1ZWJhNzhmN2Y4YTc4NDk5Njc2ZTZjODRjOWFkOTE0OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKK2NsYXNzIEhlYXA7CisKIGVudW0gY2xhc3MgT2JqZWN0VHlwZSA6IHVuc2ln
bmVkIGNoYXIgeyBTbWFsbCwgTGFyZ2UgfTsKIAotT2JqZWN0VHlwZSBvYmplY3RUeXBlKEhlYXBL
aW5kLCB2b2lkKik7CitPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYsIHZvaWQqKTsKIAogaW5s
aW5lIGJvb2wgbWlnaHRCZUxhcmdlKHZvaWQqIG9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2NhdmVuZ2VyLmNwcAppbmRleCBjYTMzNjI2NTdiZmEwMWYxMDkwZjkxYWM4MWVhZTE0YTEzZmFi
Y2UxLi5mOWVlOGMwZDlkNWNkNTRhNDg2NTRjY2JhNGViMDQzNGRkODE1NDAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC02Nyw4ICs2Nyw3IEBAIHN0cnVjdCBQcmludFRp
bWUgewogCiBTY2F2ZW5nZXI6OlNjYXZlbmdlcihzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsK
LSAgICBpZiAoUGVyUHJvY2VzczxFbnZpcm9ubWVudD46OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEJBU1NFUlQoIVBlclByb2Nlc3M8RW52aXJvbm1l
bnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpOwogCiAjaWYgQk9TKERBUldJTikKICAg
ICBhdXRvIHF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJLaXQgTWFsbG9jIE1lbW9y
eSBQcmVzc3VyZSBIYW5kbGVyIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL2JtYWxsb2MuY3BwCmluZGV4IDYyMGRiZmM0NDZjZDIyMDU1OWQxMGY2OGNmZTVlMGU1YzU2
NjM5YzUuLmNhODI0MmMyMTdiZTBhZWVhZDI0ZmUyODUxNmZlMDEzODFkNjc3MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9ibWFsbG9jLmNwcApAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiYm1h
bGxvYy5oIgogCisjaW5jbHVkZSAiRGVidWdIZWFwLmgiCisjaW5jbHVkZSAiRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsgbmFtZXNw
YWNlIGFwaSB7CkBAIC00OSwxOSArNTEsMjMgQEAgdm9pZCogdHJ5TGFyZ2VaZXJvZWRNZW1hbGln
blZpcnR1YWwoc2l6ZV90IHJlcXVpcmVkQWxpZ25tZW50LCBzaXplX3QgcmVxdWVzdGVkU2kKICAg
ICBSRUxFQVNFX0JBU1NFUlQoYWxpZ25tZW50ID49IHJlcXVpcmVkQWxpZ25tZW50KTsKICAgICBS
RUxFQVNFX0JBU1NFUlQoc2l6ZSA+PSByZXF1ZXN0ZWRTaXplKTsKIAotICAgIGtpbmQgPSBtYXBU
b0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwotICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhl
YXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwotCiAgICAgdm9pZCogcmVzdWx0OwotICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsK
LSAgICAgICAgcmVzdWx0ID0gaGVhcC50cnlBbGxvY2F0ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwg
c2l6ZSk7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIC8vIERvbid0IHRyYWNr
IHRoaXMgYXMgZGlydHkgbWVtb3J5IHRoYXQgZGljdGF0ZXMgaG93IHdlIGRyaXZlIHRoZSBzY2F2
ZW5nZXIuCi0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgaXQgc28gdGhhdCB1
c2VycyBvZiB0aGlzIEFQSSBpbmZvcm0gYm1hbGxvYyB3aGljaAotICAgICAgICAgICAgLy8gcGFn
ZXMgdGhleSBkaXJ0eToKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODQyMDcKLSAgICAgICAgICAgIGhlYXAuZXh0ZXJuYWxEZWNvbW1pdChs
b2NrLCByZXN1bHQsIHNpemUpOworICAgIGlmIChhdXRvKiBkZWJ1Z0hlYXAgPSBEZWJ1Z0hlYXA6
OnRyeUdldCgpKQorICAgICAgICByZXN1bHQgPSBkZWJ1Z0hlYXAtPm1lbWFsaWduTGFyZ2UoYWxp
Z25tZW50LCBzaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IG1hcFRvQWN0aXZlSGVh
cEtpbmQoa2luZCk7CisgICAgICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhlYXBLaW5k
PEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOworCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBoZWFwLnRyeUFsbG9jYXRlTGFyZ2UobG9jaywgYWxpZ25tZW50LCBzaXplKTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmFjayB0aGlz
IGFzIGRpcnR5IG1lbW9yeSB0aGF0IGRpY3RhdGVzIGhvdyB3ZSBkcml2ZSB0aGUgc2NhdmVuZ2Vy
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBpdCBzbyB0aGF0IHVz
ZXJzIG9mIHRoaXMgQVBJIGluZm9ybSBibWFsbG9jIHdoaWNoCisgICAgICAgICAgICAgICAgLy8g
cGFnZXMgdGhleSBkaXJ0eToKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MjA3CisgICAgICAgICAgICAgICAgaGVhcC5leHRlcm5h
bERlY29tbWl0KGxvY2ssIHJlc3VsdCwgc2l6ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTcyLDYgKzc4LDEwIEBAIHZvaWQqIHRyeUxhcmdlWmVyb2VkTWVtYWxpZ25W
aXJ0dWFsKHNpemVfdCByZXF1aXJlZEFsaWdubWVudCwgc2l6ZV90IHJlcXVlc3RlZFNpCiAKIHZv
aWQgZnJlZUxhcmdlVmlydHVhbCh2b2lkKiBvYmplY3QsIHNpemVfdCBzaXplLCBIZWFwS2luZCBr
aW5kKQogeworICAgIGlmIChhdXRvKiBkZWJ1Z0hlYXAgPSBEZWJ1Z0hlYXA6OnRyeUdldCgpKSB7
CisgICAgICAgIGRlYnVnSGVhcC0+ZnJlZUxhcmdlKG9iamVjdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAga2luZCA9IG1hcFRvQWN0aXZlSGVhcEtpbmQoa2luZCk7CiAgICAgSGVhcCYg
aGVhcCA9IFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQoa2luZCk7CiAg
ICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKQEAgLTg0LDE5
ICs5NCwyMiBAQCB2b2lkIHNjYXZlbmdlKCkKIHsKICAgICBzY2F2ZW5nZVRoaXNUaHJlYWQoKTsK
IAotICAgIFBlclByb2Nlc3M8U2NhdmVuZ2VyPjo6Z2V0KCktPnNjYXZlbmdlKCk7CisgICAgaWYg
KCFEZWJ1Z0hlYXA6OnRyeUdldCgpKQorICAgICAgICBQZXJQcm9jZXNzPFNjYXZlbmdlcj46Omdl
dCgpLT5zY2F2ZW5nZSgpOwogfQogCiBib29sIGlzRW5hYmxlZChIZWFwS2luZCBraW5kKQogewog
ICAgIGtpbmQgPSBtYXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwogICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7Ci0gICAgcmV0dXJuICFQZXJQcm9jZXNzPFBl
ckhlYXBLaW5kPEhlYXA+Pjo6Z2V0RmFzdENhc2UoKS0+YXQoa2luZCkuZGVidWdIZWFwKCk7Cisg
ICAgcmV0dXJuICFQZXJQcm9jZXNzPEVudmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5h
YmxlZCgpOwogfQogCiAjaWYgQk9TKERBUldJTikKIHZvaWQgc2V0U2NhdmVuZ2VyVGhyZWFkUU9T
Q2xhc3MocW9zX2NsYXNzX3Qgb3ZlcnJpZGVDbGFzcykKIHsKKyAgICBpZiAoRGVidWdIZWFwOjp0
cnlHZXQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgUGVyUHJvY2VzczxTY2F2ZW5nZXI+OjpnZXQoKS0+c2V0
U2NhdmVuZ2VyVGhyZWFkUU9TQ2xhc3Mob3ZlcnJpZGVDbGFzcyk7CiB9CkBAIC0xMDYsMjEgKzEx
OSwyMiBAQCB2b2lkIGNvbW1pdEFsaWduZWRQaHlzaWNhbCh2b2lkKiBvYmplY3QsIHNpemVfdCBz
aXplLCBIZWFwS2luZCBraW5kKQogewogICAgIHZtVmFsaWRhdGVQaHlzaWNhbChvYmplY3QsIHNp
emUpOwogICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzKG9iamVjdCwgc2l6ZSk7Ci0gICAgSGVh
cCYgaGVhcCA9IFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQoa2luZCk7
Ci0gICAgaGVhcC5leHRlcm5hbENvbW1pdChvYmplY3QsIHNpemUpOworICAgIGlmICghRGVidWdI
ZWFwOjp0cnlHZXQoKSkKKyAgICAgICAgUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFwPj46Omdl
dCgpLT5hdChraW5kKS5leHRlcm5hbENvbW1pdChvYmplY3QsIHNpemUpOwogfQogCiB2b2lkIGRl
Y29tbWl0QWxpZ25lZFBoeXNpY2FsKHZvaWQqIG9iamVjdCwgc2l6ZV90IHNpemUsIEhlYXBLaW5k
IGtpbmQpCiB7CiAgICAgdm1WYWxpZGF0ZVBoeXNpY2FsKG9iamVjdCwgc2l6ZSk7CiAgICAgdm1E
ZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhvYmplY3QsIHNpemUpOwotICAgIEhlYXAmIGhlYXAgPSBQ
ZXJQcm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwotICAgIGhlYXAu
ZXh0ZXJuYWxEZWNvbW1pdChvYmplY3QsIHNpemUpOworICAgIGlmICghRGVidWdIZWFwOjp0cnlH
ZXQoKSkKKyAgICAgICAgUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFwPj46OmdldCgpLT5hdChr
aW5kKS5leHRlcm5hbERlY29tbWl0KG9iamVjdCwgc2l6ZSk7CiB9CiAKIHZvaWQgZW5hYmxlTWlu
aU1vZGUoKQogewotICAgIFBlclByb2Nlc3M8U2NhdmVuZ2VyPjo6Z2V0KCktPmVuYWJsZU1pbmlN
b2RlKCk7CisgICAgaWYgKCFEZWJ1Z0hlYXA6OnRyeUdldCgpKQorICAgICAgICBQZXJQcm9jZXNz
PFNjYXZlbmdlcj46OmdldCgpLT5lbmFibGVNaW5pTW9kZSgpOwogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIGJtYWxsb2M6OmFwaQo=
</data>
<flag name="review"
          id="379103"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>