<?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>47740</bug_id>
          
          <creation_ts>2010-10-15 14:49:03 -0700</creation_ts>
          <short_desc>Popup widget support (&lt;select&gt;)</short_desc>
          <delta_ts>2010-10-15 17:47:32 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294931</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-15 14:49:03 -0700</bug_when>
    <thetext>Add popup widget support (&lt;select&gt; elements) to WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294941</commentid>
    <comment_count>1</comment_count>
      <attachid>70900</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-15 14:59:33 -0700</bug_when>
    <thetext>Created attachment 70900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294973</commentid>
    <comment_count>2</comment_count>
      <attachid>70907</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-15 15:51:37 -0700</bug_when>
    <thetext>Created attachment 70907
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295022</commentid>
    <comment_count>3</comment_count>
      <attachid>70922</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-15 17:01:03 -0700</bug_when>
    <thetext>Created attachment 70922
Fix Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295054</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-15 17:47:32 -0700</bug_when>
    <thetext>Landed in r69899.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70900</attachid>
            <date>2010-10-15 14:59:33 -0700</date>
            <delta_ts>2010-10-15 15:51:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>pop.diff</filename>
            <type>text/plain</type>
            <size>59089</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg4MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA2IEBACisyMDEwLTEwLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdXAg
d2lkZ2V0IHN1cHBvcnQgKDxzZWxlY3Q+KQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE0Nzc0
Nj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzQw
CisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgcG9wdXAgbWVudXMuIE9ubHkgd29y
a3Mgb24gdGhlIG1hYyBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9wdXBJ
dGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVw
SXRlbS5oOiBBZGRlZC4KKyAgICAgICAgU2VyaWFsaXphYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEg
bWVudSBpdGVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgQ3JlYXRlIGEgV2ViUG9wdXBNZW51UHJveHlNYWMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgIENy
ZWF0ZSBhIFdlYlBvcHVwTWVudVByb3h5UXQgKHdoaWNoIGlzIGp1c3QgYSBzdHViIHJpZ2h0IG5v
dykuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oOgorICAgICAgICBDcmVhdGUgYSBXZWJQb3B1cE1lbnVQcm94eVdpbiAod2hpY2ggaXMg
anVzdCBhIHN0dWIgcmlnaHQgbm93KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHRvIGdldCBhIHBsYXRmb3JtIHNw
ZWNpZmljIFdlYlBvcHVwTWVudVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgUGlwZSB0aHJvdWdoIGNhbGxzIHRvIHNldCB1cCB0aGUgbWVudS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6fldlYlBvcHVwTWVudVByb3h5TWFjKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIEFkZCBVSSBw
cm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseSB0aGlzIGRvZXMgbm90IHN1cHBv
cnQKKyAgICAgICAgY3VzdG9tIGZvbnRzIGFzIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gZGlkLgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlR
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQ
cm94eVF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OldlYlBvcHVwTWVudVByb3h5V2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46On5XZWJQb3B1cE1lbnVQcm94
eVdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uaDogQWRk
ZWQuCisgICAgICAgIEFkZCBzdHViYmVkIG91dCBpbXBsZW1lbnRhdGlvbnMgZm9yIFF0IGFuZCB3
aW5kb3dzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9w
dXBNZW51KToKKyAgICAgICAgUGFzcyB0aGUgcGFnZSBpbiB0aGUgY3JlYXRlIGZ1bmN0aW9uLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwTWVudTo6V2ViUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51Ojpwb3B1bGF0ZUl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OmRpc2Nvbm5lY3RGcm9tUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBv
cHVwTWVudTo6V2ViU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNo
UG9wdXBNZW51Ojpwb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFBpcGUgdGhyb3VnaCBjYWxscyB0
byBzZXQgdXAgdGhlIG1lbnUuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIu
dmNwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAyMDEwLTEwLTE1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJLaXQyLnBybwkocmV2aXNpb24gNjk4MzUpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTQsNiArMjE0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dl
Yk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5oIFwKICAgICBT
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwKKyAgICBTaGFyZWQvV2ViUG9wdXBJ
dGVtLmggXAogICAgIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAogICAg
IFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0
LmggXApAQCAtMjY5LDYgKzI3MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggXAogICAg
IFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKKyAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51
UHJveHlRdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlTm9kZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBcCkBAIC0zNTYsNiArMzU4LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwIFwKICAgICBTaGFyZWQvV2Vi
RXZlbnRDb252ZXJzaW9uLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIFwKKyAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCkBAIC00NTksNiArNDYy
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBcCiAgICAg
VUlQcm9jZXNzL3F0L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5UXQuY3BwIFwKICAgICBV
SVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAgXAogICAgICQkV0VCS0lUMl9H
RU5FUkFURURfU09VUkNFUwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCisgICAgOiBtX3R5
cGUoSXRlbSkKKyAgICAsIG1faXNFbmFibGVkKHRydWUpCit7Cit9CisKK1dlYlBvcHVwSXRlbTo6
V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9pc0Vu
YWJsZWQodHJ1ZSkKK3sKK30KKworV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5n
JiBhY2Nlc3NpYmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQpCisgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAsIG1fdGV4dCh0ZXh0KQorICAgICwgbV90b29sVGlwKHRvb2xUaXApCisgICAgLCBtX2Fj
Y2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlUZXh0KQorICAgICwgbV9pc0VuYWJsZWQoaXNF
bmFibGVkKQoreworfQorCit2b2lkIFdlYlBvcHVwSXRlbTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdHlwZSksIG1fdGV4dCwgbV90b29sVGlwLCBt
X2FjY2Vzc2liaWxpdHlUZXh0LCBtX2lzRW5hYmxlZCkpOworfQorCitib29sIFdlYlBvcHVwSXRl
bTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViUG9wdXBJdGVt
JiBpdGVtKQoreworICAgIHVpbnQzMl90IHR5cGU7CisgICAgU3RyaW5nIHRleHQ7CisgICAgU3Ry
aW5nIHRvb2xUaXA7CisgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlUZXh0OworICAgIGJvb2wgaXNF
bmFibGVkOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBlLCB0ZXh0
LCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlw
ZSksIHRleHQsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQpOworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hh
cmVkL1dlYlBvcHVwSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBvcHVw
SXRlbS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvcHVw
SXRlbV9oCisjZGVmaW5lIFdlYlBvcHVwSXRlbV9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2Rl
cjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBTZXBlcmF0
b3IsCisgICAgICAgIEl0ZW0KKyAgICB9OworCisgICAgV2ViUG9wdXBJdGVtKCk7CisgICAgV2Vi
UG9wdXBJdGVtKFR5cGUpOworICAgIFdlYlBvcHVwSXRlbShUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nlc3NpYmlsaXR5VGV4
dCwgYm9vbCBpc0VuYWJsZWQpOworCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIFdlYlBvcHVwSXRlbSYpOworCisgICAgVHlwZSBtX3R5cGU7CisgICAgU3RyaW5n
IG1fdGV4dDsKKyAgICBTdHJpbmcgbV90b29sVGlwOworICAgIFN0cmluZyBtX2FjY2Vzc2liaWxp
dHlUZXh0OworICAgIGJvb2wgbV9pc0VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYlBvcHVwSXRlbV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CitjbGFz
cyBXZWJQb3B1cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02
MSw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JikgPSAwOwogCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpID0gMDsK
KwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFnZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpID0gMDsKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNjk4MzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBACiAjaW5j
bHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJXZWJQb3B1
cEl0ZW0uaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIwOSw2ICsyMTEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2UoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZWRpdENvbW1hbmRWZWN0
b3Iuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBlZGl0Q29tbWFuZFZlY3RvcltpXS0+
aW52YWxpZGF0ZSgpOwogCisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworCiAgICAgbV9lc3Rp
bWF0ZWRQcm9ncmVzcyA9IDAuMDsKICAgICAKICAgICBtX2xvYWRlckNsaWVudC5pbml0aWFsaXpl
KDApOwpAQCAtOTYxLDYgKzk2NSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZEluZGlj
YXRvcihjb25zCiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgaWYgKG1fYWN0
aXZlUG9wdXBNZW51KQorICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+aGlkZVBvcHVwTWVudSgp
OworICAgIGVsc2UKKyAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSBtX3BhZ2VDbGllbnQtPmNy
ZWF0ZVBvcHVwTWVudVByb3h5KCk7CisKKyAgICBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXggPSAw
OworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5zaG93UG9wdXBNZW51KHJlY3QsIGl0ZW1zLCBzZWxl
Y3RlZEluZGV4LCBuZXdTZWxlY3RlZEluZGV4KTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShu
ZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGlmICghbV9h
Y3RpdmVQb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYWN0aXZlUG9wdXBNZW51
LT5oaWRlUG9wdXBNZW51KCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21t
YW5kUHJveHk+IGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1f
cGFnZUNsaWVudC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8p
OwpAQCAtMTEzMiw2ICsxMTU5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRFeGl0
KCkKICAgICAgICAgZWRpdENvbW1hbmRWZWN0b3JbaV0tPmludmFsaWRhdGUoKTsKICAgICBtX3Bh
Z2VDbGllbnQtPmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiAKKyAgICBtX2FjdGl2ZVBvcHVwTWVu
dSA9IDA7CisKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMC4wOwogCiAgICAgbV9wYWdlQ2xp
ZW50LT5wcm9jZXNzRGlkRXhpdCgpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDY5ODM1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsKIGNs
YXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViUGFn
ZU5hbWVzcGFjZTsKK2NsYXNzIFdlYlBvcHVwSXRlbTsKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdl
YldoZWVsRXZlbnQ7CkBAIC0yODQsNiArMjg2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRD
b3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbnVtTWF0Y2hlcyk7CiAg
ICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc2VsZWN0
aW9uUmVjdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0cywgY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSk7CiAKKyAgICAvLyBQ
b3B1cCBNZW51LgorICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0
ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKICAgICB2b2lkIHRha2VGb2N1
cyhib29sIGRpcmVjdGlvbik7CiAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwpAQCAtMzE5LDYgKzMy
NSw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0PFdlYkVkaXRDb21tYW5kUHJveHkqPiBtX2Vk
aXRDb21tYW5kU2V0OwogCisgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBtX2FjdGl2ZVBv
cHVwTWVudTsKKwogICAgIGRvdWJsZSBtX2VzdGltYXRlZFByb2dyZXNzOwogCiAgICAgLy8gV2hl
dGhlciB0aGUgd2ViIHBhZ2UgaXMgY29udGFpbmVkIGluIGEgdG9wLWxldmVsIHdpbmRvdy4KSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDY5ODM1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogICAgIERpZENvdW50U3RyaW5nTWF0Y2hlcyhXVEY6OlN0cmluZyBzdHJpbmcsIHVpbnQzMl90
IG51bU1hdGNoZXMpCiAgICAgU2V0RmluZEluZGljYXRvcihXZWJDb3JlOjpGbG9hdFJlY3Qgc2Vs
ZWN0aW9uUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gdGV4dFJlY3RzLCBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSkKIAorICAgICMgUG9wdXBN
ZW51LgorICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6SW50UmVjdCByZWN0LCBWZWN0b3I8V2Vi
S2l0OjpXZWJQb3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCisgICAgSGlk
ZVBvcHVwTWVudSgpCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgIyBB
Y2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgogICAgIERpZENoYW5nZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoYm9vbCBjb21wb3NpdGluZykgLT4gKFdlYktpdDo6RHJhd2luZ0FyZWFCYXNl
OjpEcmF3aW5nQXJlYUluZm8gbmV3RHJhd2luZ0FyZWEpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQb3B1cE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBvcHVwTWVudVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
b3B1cE1lbnVQcm94eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eV9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5
X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICBjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUG9w
dXBJdGVtOworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlBvcHVwTWVudVByb3h5PiB7CitwdWJsaWM6ICAgIAorICAgIHZpcnR1YWwgfldlYlBvcHVwTWVu
dVByb3h5KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5kZXgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKKworcHJvdGVjdGVk
OgorICAgIFdlYlBvcHVwTWVudVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA2OTgzNSkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsMTggKzUzLDIwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKIAotICAgIHZv
aWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBX
ZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwotICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMo
KTsKLSAgICB2b2lkIHNldEVkaXRDb21tYW5kU3RhdGUoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgYm9vbCBpc0VuYWJsZWQsIGludCBzdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
RWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5
OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdENvbW1hbmRTdGF0ZShjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlKTsKIAotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rldmlj
ZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50Jik7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJv
eHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgdm9pZCBwYWdlRGlkRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7Ci0g
ICAgdm9pZCBwYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisgICAgdmlydHVh
bCB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwogI2VuZGlmCiAKICAg
ICBXS1ZpZXcqIG1fd2tWaWV3OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMiBA
QAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKKyNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5
TWFjLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm91bmRhdGlvbkV4dHJhcy5oPgogI2ltcG9ydCA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTIy
NSw2ICsyMjcsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkTm90SGFuZGxlS2V5RXZlbgog
ewogfQogCitQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlUG9wdXBNZW51UHJveHkoKQoreworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eU1hYzo6
Y3JlYXRlKG1fd2tWaWV3KTsKK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmco
KQogewpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNjk4
MzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViRXZlbnRGYWN0b3J5UXQuaCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5o
IgogI2luY2x1ZGUgIldLVVJMUXQuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpA
QCAtNDIsNyArNDMsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tGcmFtZS5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KIAotCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExMiw2ICsxMTIsMTEgQEAgdm9pZCBRV0tQYWdl
UHJpdmF0ZTo6ZGlkTm90SGFuZGxlS2V5RXZlbgogewogfQogCitQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1cE1lbnVQcm94eSgpCit7CisgICAgcmV0dXJu
IFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZSgpOworfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRl
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgUVJlY3QgYXJlYSkKIHsKICAgICBwYWludGVyLT5z
YXZlKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCShyZXZpc2lvbiA2
OTgzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVu
dChjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CiAKICAg
ICB2b2lkIHBhaW50KFFQYWludGVyKiBwYWludGVyLCBRUmVjdCk7CiAKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5
TWFjX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51UHJveHlNYWNfaAorCisjaW5jbHVkZSAiV2ViUG9w
dXBNZW51UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZmRlZiBfX09C
SkNfXworQGNsYXNzIE5TUG9wVXBCdXR0b25DZWxsOworQGNsYXNzIFdLVmlldzsKKyNlbHNlCitj
bGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK2NsYXNzIFdLVmlldzsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJQb3B1cE1lbnVQ
cm94eU1hYyA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlNYWM+IGNyZWF0ZShXS1ZpZXcqIHdlYlZpZXcp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5TWFj
KHdlYlZpZXcpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVByb3h5TWFjKCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
VmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5l
d1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKK3By
aXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3Kik7CisKKyAgICB2b2lkIHBv
cHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+Jik7CisKKyAgICBSZXRhaW5QdHI8TlNQ
b3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7CisgICAgV0tWaWV3KiBtX3dlYlZpZXc7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5TWFjX2gK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0J
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlN
YWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5o
IgorI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5TWFjOjpXZWJQb3B1cE1l
bnVQcm94eU1hYyhXS1ZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sK
K30KKworV2ViUG9wdXBNZW51UHJveHlNYWM6On5XZWJQb3B1cE1lbnVQcm94eU1hYygpCit7Cisg
ICAgaWYgKG1fcG9wdXApCisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldENvbnRyb2xWaWV3Om5p
bF07Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9wb3B1cCkKKyAgICAgICAgW21f
cG9wdXAuZ2V0KCkgcmVtb3ZlQWxsSXRlbXNdOworICAgIGVsc2UgeworICAgICAgICBtX3BvcHVw
LmFkb3B0TlMoW1tOU1BvcFVwQnV0dG9uQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIiBwdWxs
c0Rvd246Tk9dKTsKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpO
T107CisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAg
IH0KKworICAgIGludCBzaXplID0gaXRlbXMuc2l6ZSgpOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLm1fdHlwZSA9PSBXZWJQb3B1
cEl0ZW06OlNlcGVyYXRvcikKKyAgICAgICAgICAgIFtbbV9wb3B1cC5nZXQoKSBtZW51XSBhZGRJ
dGVtOltOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dXTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBbbV9wb3B1cC5nZXQoKSBhZGRJdGVtV2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVT
dHJpbmcoaXRlbXNbaV0ubV90ZXh0KV07CisgICAgICAgICAgICBOU01lbnVJdGVtKiBtZW51SXRl
bSA9IFttX3BvcHVwLmdldCgpIGxhc3RJdGVtXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRF
bmFibGVkOml0ZW1zW2ldLm1faXNFbmFibGVkXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRU
b29sVGlwOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90b29sVGlwKV07Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5kZXgpCit7
CisgICAgcG9wdWxhdGUoaXRlbXMpOworCisgICAgW21fcG9wdXAuZ2V0KCkgYXR0YWNoUG9wVXBX
aXRoRnJhbWU6cmVjdCBpblZpZXc6bV93ZWJWaWV3XTsKKyAgICBbbV9wb3B1cC5nZXQoKSBzZWxl
Y3RJdGVtQXRJbmRleDpzZWxlY3RlZEluZGV4XTsKKworICAgIE5TTWVudSogbWVudSA9IFttX3Bv
cHVwLmdldCgpIG1lbnVdOworCisgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJv
bSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51LgorICAgIGNvbnN0
IGludCBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCA9IC0xMDsKKyAgICBOU1JlY3QgdGl0bGVGcmFt
ZSA9IFttX3BvcHVwLmdldCgpICB0aXRsZVJlY3RGb3JCb3VuZHM6cmVjdF07CisgICAgaWYgKHRp
dGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6ZS5oZWlnaHQgPD0gMCkK
KyAgICAgICAgdGl0bGVGcmFtZSA9IHJlY3Q7CisgICAgZmxvYXQgdmVydE9mZnNldCA9IHJvdW5k
ZigoTlNNYXhZKHJlY3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJh
bWUpKTsKKyAgICBOU1BvaW50IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHJlY3QpICsg
cG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSAtIHZlcnRPZmZzZXQpOworCisg
ICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3KEFkb3B0TlMsIFtbTlNWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOnJlY3RdKTsKKyAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3
LmdldCgpXTsKKyAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29udmVydFBvaW50Omxv
Y2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CisKKyAgICBXS1BvcHVwTWVudShtZW51LCBsb2Nh
dGlvbiwgcm91bmRmKE5TV2lkdGgocmVjdCkpLCBkdW1teVZpZXcuZ2V0KCksIHNlbGVjdGVkSW5k
ZXgsIFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF0pOworCisgICAgW21fcG9wdXAuZ2V0KCkgZGlz
bWlzc1BvcFVwXTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHJlbW92ZUZyb21TdXBlcnZpZXddOwor
CisgICAgbmV3U2VsZWN0ZWRJbmRleCA9IFttX3BvcHVwLmdldCgpIGluZGV4T2ZTZWxlY3RlZEl0
ZW1dOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpoaWRlUG9wdXBNZW51KCkKK3sK
KyAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOworfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQ
cm94eVF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCisKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0u
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJQb3B1cE1lbnVQcm94eVF0OjpXZWJQb3B1cE1lbnVQcm94eVF0KCkKK3sKK30KKworV2ViUG9w
dXBNZW51UHJveHlRdDo6fldlYlBvcHVwTWVudVByb3h5UXQoKQoreworfQorCit2b2lkIFdlYlBv
cHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
VmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMy
X3QmIG5ld1NlbGVjdGVkSW5kZXgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6
aGlkZVBvcHVwTWVudSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlR
dF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5UXRfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBN
ZW51UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBvcHVwTWVudVBy
b3h5UXQgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5UXQoKSk7CisgICAgfQorICAgIH5X
ZWJQb3B1cE1lbnVQcm94eVF0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1
YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKK3ByaXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJv
eHlRdCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1
cE1lbnVQcm94eVF0X2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQ
cm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVw
TWVudVByb3h5V2luLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlXaW4uaCIKKworI2luY2x1ZGUg
IldlYlBvcHVwSXRlbS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5V2luOjpXZWJQb3B1cE1lbnVQcm94eVdpbigp
Cit7Cit9CisKK1dlYlBvcHVwTWVudVByb3h5V2luOjp+V2ViUG9wdXBNZW51UHJveHlXaW4oKQor
eworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBNZW51KGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4KQoreworfQorCit2b2lkIFdl
YlBvcHVwTWVudVByb3h5V2luOjpoaWRlUG9wdXBNZW51KCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlX
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJv
eHlXaW4uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1l
bnVQcm94eVdpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eVdpbl9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5
V2luX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVdpbiA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlX
aW4+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVw
TWVudVByb3h5V2luKCkpOworICAgIH0KKyAgICB+V2ViUG9wdXBNZW51UHJveHlXaW4oKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgaW50MzJf
dCYgbmV3U2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKTsK
KworcHJpdmF0ZToKKyAgICBXZWJQb3B1cE1lbnVQcm94eVdpbigpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eVdpbl9oCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2Uu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94
eVdpbi5oIgogI2luY2x1ZGUgPENvbW1jdHJsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTYwOCw2ICs2MDksMTEgQEAg
dm9pZCBXZWJWaWV3OjpkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdAogICAgIDo6RGVmV2luZG93
UHJvY1coZXZlbnQubmF0aXZlRXZlbnQoKS0+aHduZCwgZXZlbnQubmF0aXZlRXZlbnQoKS0+bWVz
c2FnZSwgZXZlbnQubmF0aXZlRXZlbnQoKS0+d1BhcmFtLCBldmVudC5uYXRpdmVFdmVudCgpLT5s
UGFyYW0pOwogfQogCitQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVh
dGVQb3B1cE1lbnVQcm94eSgpCit7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5V2luOjpj
cmVhdGUoKTsKK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgV2Vi
Vmlldzo6cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB7CkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDY5ODM1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qg
Y29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZp
cnR1YWwgdm9pZCBwYWdlRGlkRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CkluZGV4OiBX
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjk4MzUp
CisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjkxLDcgKzI5MSwxMiBAQAogCQlCQzRCRUVBQzEyMEEwQTVGMDBGQkEwQzcgLyog
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNEJFRUFBMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwICovOyB9OwogCQlCQzRCRUZFMTEyMEExQTRDMDBGQkEwQzcgLyog
V0tCdW5kbGVOb2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzRCRUZERjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzRC
RUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNEJFRkUwMTIwQTFBNEMwMEZC
QTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuY3BwICovOyB9OworCQlCQzU3NDRFRjEyNjM4RkIz
MDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NEVEMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0
ZW0uY3BwICovOyB9OworCQlCQzU3NDRGMDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NDRF
RTEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggKi87IH07CiAJCUJDNTc0NTBDMTI2
M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NDUwQjEyNjNCMTU1MDA2RjBG
MTIgLyogV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDNTc0RTYzMTI2N0QwODAwMDZGMEYxMiAvKiBX
ZWJQb3B1cE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM1NzRFNjExMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5Lmgg
Ki87IH07CisJCUJDNTc1MDk3MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzUw
OTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggKi87IH07CisJCUJD
NTc1MDk4MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1MDk2MTI2OEYzQzYw
MDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJQkM1OTUzNDIxMEZD
MDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTUzNDAxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxv
YWRlckNsaWVudC5oICovOyB9OwogCQlCQzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vz
c01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi87IH07CiAJCUJDNUY3
QkI0MTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RjdCQjIxMTgyMzc2
QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi87IH07CkBAIC03NjQs
NyArNzY5LDEyIEBACiAJCUJDNEJFRUFBMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM0QkVGREYxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZU5vZGVIYW5kbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0QkVGRTAxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxl
Tm9kZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1
bmRsZU5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzU3NDRF
RDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDNTc0NEVFMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBJdGVtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5v
ZGVIYW5kbGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlTm9kZUhhbmRsZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1
NzRFNjExMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQ
cm94eU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnVQ
cm94eU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzU3NTA5NjEyNjhGM0M2
MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTUzNDAxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNB
IC8qIFByb2Nlc3NNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9j
ZXNzTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RjdCQjIxMTgyMzc2
QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE4Miw2ICsxMTkyLDggQEAKIAkJCQlCQzAzMkRC
MTEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmggKi8sCiAJCQkJQkNGNjlG
OTgxMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCAqLywKIAkJCQlC
QzMzREQ2NzEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggKi8sCisJCQkJQkM1NzQ0RUQx
MjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5jcHAgKi8sCisJCQkJQkM1NzQ0RUUxMjYz
OEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5oICovLAogCQkJCUMwNkM2MDkzMTI0QzE0NDMw
MDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQlDMDZDNjA5
NDEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJ
CUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCAqLywKQEAgLTEzOTgsNiArMTQxMCw3IEBACiAJCQkJQkNCRDM4RkExMjVCQUI5QTAwRDJD
MjlGIC8qIFdlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQ0I5RjhBRDExMjRFMDc3
MDBBMTM3RTAgLyogV2ViUG9saWN5Q2xpZW50LmNwcCAqLywKIAkJCQlCQ0I5RjhBRTExMjRFMDc3
MDBBMTM3RTAgLyogV2ViUG9saWN5Q2xpZW50LmggKi8sCisJCQkJQkM1NzRFNjExMjY3RDA4MDAw
NkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5LmggKi8sCiAJCQkJQkNENTk3RkUxMTJCNTdCRTAw
RUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmNwcCAqLywKIAkJCQlCQ0Q1OTdGRDExMkI1N0JFMDBF
QzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuaCAqLywKIAkJCQlCQzExMUIwQzExMkY1RTRGMDAzMzdC
QUIgLyogV2ViUHJvY2Vzc01hbmFnZXIuY3BwICovLApAQCAtMTcwMiw2ICsxNzE1LDggQEAKIAkJ
CQlCQzI2NTFGNTExODI1RUY4MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHlNYWMubW0gKi8sCiAJCQkJMEY1MjY1QkIxMUREMzc4NjAwMDZEMzNDIC8qIExheWVyQmFja2Vk
RHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkg
LyogV2ViQ29udGV4dE1hYy5tbSAqLywKKwkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyog
V2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLywKKwkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIg
LyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDIxLDEyICsyMDM2LDE1IEBACiAJCQkJMUEz
REQyMDIxMjVFNUExRjAwNDUxNUU2IC8qIFdlYkZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBM0REMjA2MTI1RTVBMkYwMDQ1MTVFNiAvKiBBUElDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQzhCMzc0MTI1RkI2OTAwMERFNDZBNCAvKiBXS0dlb21ldHJ5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzU3NDRGMDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzU3NDUwQzEyNjNCMTU1MDA2RjBGMTIgLyogV0tCdW5kbGVOb2Rl
SGFuZGxlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNDFBQzcxMjYzQzg4MzAwMDU0
RTk0IC8qIEJpbmFyeVNlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMxRUUxMjY0
RkQ1MDAwM0U0NEQ0IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFG
NDEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOTBDMjM3MTI2NTA3MTcwMDNFNDRENCAvKiBQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE5MEMyQTMxMjY1MEM2MDAwM0U0NEQ0IC8qIEZpbmRQYWdlT3ZlcmxheS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkM1NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzU3NTA5NzEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjMyOCwxMSArMjM0NiwxMyBA
QAogCQkJCTUxQTdGMkY1MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQkQzOTE0MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzREQxRkQxMjVFNTlGMzAwNDUxNUU2
IC8qIFdlYkZpbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM1NzQ0RUYxMjYzOEZC
MzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM0MUFD
ODEyNjNDODgzMDAwNTRFOTQgLyogQmluYXJ5U2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBOTBDMUY1MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTkwQzIzODEyNjUwNzE3MDAzRTQ0RDQgLyogUGFnZU92ZXJsYXkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5MEMyQTQxMjY1MEM2MDAwM0U0NEQ0IC8qIEZpbmRQYWdl
T3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDFBMjYwMTEyNjYyRjIxMDBDOUVENTUg
LyogQmFja2luZ1N0b3JlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM1NzUwOTgxMjY4RjND
NjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkocmV2aXNpb24gNjk4MzUpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDEyICs1
MTAsMTIgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5nRAogCiBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdlYlBvcHVwTWVudTo6Y3JlYXRlKGNsaWVudCk7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudTo6
Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewotICAgIHJldHVybiBXZWJTZWFyY2hQ
b3B1cE1lbnU6OmNyZWF0ZShjbGllbnQpOworICAgIHJldHVybiBXZWJTZWFyY2hQb3B1cE1lbnU6
OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJr
cz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCShy
ZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
b3B1cE1lbnUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxOCArMjEsMjUgQEAKIAogI2luY2x1
ZGUgIldlYlBvcHVwTWVudS5oIgogCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVu
dT4gV2ViUG9wdXBNZW51OjpjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
CitQYXNzUmVmUHRyPFdlYlBvcHVwTWVudT4gV2ViUG9wdXBNZW51OjpjcmVhdGUoV2ViUGFnZSog
cGFnZSwgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJQb3B1cE1lbnUoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1
cE1lbnUocGFnZSwgY2xpZW50KSk7CiB9CiAKLVdlYlBvcHVwTWVudTo6V2ViUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KQorV2ViUG9wdXBNZW51OjpXZWJQb3B1cE1l
bnUoV2ViUGFnZSogcGFnZSwgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3BvcHVw
Q2xpZW50KGNsaWVudCkKKyAgICAsIG1fcGFnZShwYWdlKQogewogfQogCkBAIC00MCwxOSArNDcs
NjYgQEAgV2ViUG9wdXBNZW51Ojp+V2ViUG9wdXBNZW51KCkKIHsKIH0KIAotCiB2b2lkIFdlYlBv
cHVwTWVudTo6ZGlzY29ubmVjdENsaWVudCgpCiB7CiAgICAgbV9wb3B1cENsaWVudCA9IDA7CiB9
CiAKLXZvaWQgV2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qs
IFdlYkNvcmU6OkZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBXZWJQb3B1cE1lbnU6
OmRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4KQoreworICAgIGlmICghbV9wb3B1
cENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRI
aWRlKCk7CisgICAgaWYgKG5ld0luZGV4ID49IDApCisgICAgICAgIG1fcG9wdXBDbGllbnQtPnZh
bHVlQ2hhbmdlZChuZXdJbmRleCk7Cit9CisKK1ZlY3RvcjxXZWJQb3B1cEl0ZW0+IFdlYlBvcHVw
TWVudTo6cG9wdWxhdGVJdGVtcygpCit7CisgICAgc2l6ZV90IHNpemUgPSBtX3BvcHVwQ2xpZW50
LT5saXN0U2l6ZSgpOworCisgICAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gaXRlbXM7CisgICAgaXRl
bXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlz
U2VwYXJhdG9yKGkpKQorICAgICAgICAgICAgaXRlbXMuYXBwZW5kKFdlYlBvcHVwSXRlbShXZWJQ
b3B1cEl0ZW06OlNlcGVyYXRvcikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5bGluZyB0aGUgZm9udC4KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3Vu
ZCBjb2xvcnMuCisgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBjdXN0b21pemUg
dGV4dCBjb2xvciB3aGVuIGFuIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQuCisgICAgICAgICAgICBpdGVt
cy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwgbV9wb3B1cENsaWVudC0+
aXRlbVRleHQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Ub29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50
LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQo
aSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpdGVtczsKK30KKwordm9pZCBX
ZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBp
bnQgaW5kZXgpCiB7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBpbmZvcm0gdGhl
IGNsaWVudCB0byBhbHNvIGNsb3NlIHRoZSBtZW51LgorICAgIFZlY3RvcjxXZWJQb3B1cEl0ZW0+
IGl0ZW1zID0gcG9wdWxhdGVJdGVtcygpOwogCisgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSB8fCAh
bV9wYWdlKSB7CisgICAgICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlkSGlkZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9wYWdlLT5zZXRBY3RpdmVQb3B1cE1lbnUodGhpcyk7
CisKKyAgICAvLyBNb3ZlIHRvIHBhZ2UgY29vcmRpbmF0ZXMKKyAgICBJbnRSZWN0IHBhZ2VDb29y
ZGluYXRlcyh2aWV3LT5jb250ZW50c1RvV2luZG93KHJlY3QubG9jYXRpb24oKSksIHJlY3Quc2l6
ZSgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIGl0ZW1zLCBp
bmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgp
CiB7CisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcG9wdXBDbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpIaWRlUG9wdXBNZW51KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2V0QWN0aXZlUG9wdXBNZW51KDApOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6dXBk
YXRlRnJvbUVsZW1lbnQoKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cE1lbnUuaAkocmV2aXNpb24gNjk4MzUpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDggKzIyLDExIEBACiAjaWZuZGVmIFdlYlBvcHVwTWVudV9oCiAjZGVmaW5lIFdlYlBvcHVwTWVu
dV9oCiAKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BvcHVw
TWVudS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UG9wdXBNZW51Q2xpZW50OwpAQCAtMzEsMjAgKzM0LDI5IEBAIGNsYXNzIFBvcHVwTWVudUNsaWVu
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQb3B1
cEl0ZW07CisKIGNsYXNzIFdlYlBvcHVwTWVudSA6IHB1YmxpYyBXZWJDb3JlOjpQb3B1cE1lbnUg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudT4gY3JlYXRlKFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudT4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKICAgICB+
V2ViUG9wdXBNZW51KCk7CiAKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdl
ID0gMDsgfQorICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpOwor
CiAgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6
OkZyYW1lVmlldyosIGludCBpbmRleCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdENsaWVudCgpOwogCiBwcml2YXRlOgotICAgIFdlYlBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqKTsKKyAgICBXZWJQb3B1cE1lbnUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCopOworCisgICAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gcG9wdWxhdGVJdGVtcygp
OwogCiAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OworICAgIFdl
YlBhZ2UqIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5jcHAJKHJldmlzaW9uIDY5ODM1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE5ICsy
MiwyMSBAQAogCiAjaW5jbHVkZSAiV2ViU2VhcmNoUG9wdXBNZW51LmgiCiAKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJTZWFy
Y2hQb3B1cE1lbnU+IFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogY2xpZW50KQorUGFzc1JlZlB0cjxXZWJTZWFyY2hQb3B1cE1lbnU+IFdlYlNlYXJj
aFBvcHVwTWVudTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2VhcmNoUG9wdXBNZW51KGNsaWVudCkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2VhcmNoUG9wdXBNZW51KHBhZ2UsIGNsaWVu
dCkpOwogfQogCi1XZWJTZWFyY2hQb3B1cE1lbnU6OldlYlNlYXJjaFBvcHVwTWVudShXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoV2ViUG9wdXBNZW51Ojpj
cmVhdGUoY2xpZW50KSkKK1dlYlNlYXJjaFBvcHVwTWVudTo6V2ViU2VhcmNoUG9wdXBNZW51KFdl
YlBhZ2UqIHBhZ2UsIFBvcHVwTWVudUNsaWVudCogY2xpZW50KQorICAgIDogbV9wb3B1cChXZWJQ
b3B1cE1lbnU6OmNyZWF0ZShwYWdlLCBjbGllbnQpKQogewogfQogCi1XZWJDb3JlOjpQb3B1cE1l
bnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkKK1BvcHVwTWVudSogV2ViU2VhcmNo
UG9wdXBNZW51Ojpwb3B1cE1lbnUoKQogewogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWFyY2hQb3B1cE1lbnUuaAkocmV2aXNpb24gNjk4MzUpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNlYXJjaFBvcHVwTWVu
dSA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVudT4gY3Jl
YXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJTZWFyY2hQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CisgICAgV2ViU2VhcmNoUG9wdXBNZW51KFdlYlBh
Z2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1l
bnU+IG1fcG9wdXA7CiB9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDY5ODM1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDEwIEBACiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50
SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtMjYyLDggKzI2MywxMiBAQCB2b2lkIFdlYlBhZ2U6OmNs
b3NlKCkKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKSkKICAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+d2lsbERlc3Ryb3lQ
YWdlKHRoaXMpOwogCi0gICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+ZGV0
YWNoRnJvbVBhcmVudCgpOworICAgIGlmIChtX2FjdGl2ZVBvcHVwTWVudSkgeworICAgICAgICBt
X2FjdGl2ZVBvcHVwTWVudS0+ZGlzY29ubmVjdEZyb21QYWdlKCk7CisgICAgICAgIG1fYWN0aXZl
UG9wdXBNZW51ID0gMDsKKyAgICB9CiAKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgbV9wYWdlLmNsZWFyKCk7CiAKICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKQEAgLTc3Niw2ICs3
ODEsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVFZGl0Q29tbWFuZCh1aW50NgogICAgIHJl
bW92ZVdlYkVkaXRDb21tYW5kKGNvbW1hbmRJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0
aXZlUG9wdXBNZW51KFdlYlBvcHVwTWVudSogbWVudSkKK3sKKyAgICBtX2FjdGl2ZVBvcHVwTWVu
dSA9IG1lbnU7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZywgdWludDMyX3QgZmluZERpcmVjdGlvbiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQz
Ml90IG1heE51bU1hdGNoZXMpCiB7CiAgICAgbV9maW5kQ29udHJvbGxlci5maW5kU3RyaW5nKHN0
cmluZywgc3RhdGljX2Nhc3Q8RmluZERpcmVjdGlvbj4oZmluZERpcmVjdGlvbiksIHN0YXRpY19j
YXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyksIG1heE51bU1hdGNoZXMpOwpAQCAtNzkzLDcg
KzgwMywxNyBAQCB2b2lkIFdlYlBhZ2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTCiAKICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkQ291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgbnVtTWF0Y2hlcyksIG1fcGFn
ZUlEKTsKIH0KLSAgICAKKwordm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9y
QWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpCit7CisgICAgaWYgKCFtX2FjdGl2ZVBv
cHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENo
YW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgpOworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsK
K30KKworCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlOjphZGRQbHVnaW5WaWV3KFBs
dWdpblZpZXcqIHBsdWdpblZpZXcpCiB7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJFdmVudDsK
IGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CitjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiBjbGFzcyBXZWJUb3VjaEV2ZW50OwpAQCAtMTEwLDYgKzExMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVdlYkVkaXRDb21tYW5kKHVpbnQ2NF90KTsKICAg
ICBib29sIGlzSW5SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUmVkbzsgfQogCisgICAgdm9p
ZCBzZXRBY3RpdmVQb3B1cE1lbnUoV2ViUG9wdXBNZW51Kik7CisKICAgICAvLyAtLSBDYWxsZWQg
ZnJvbSBXZWJQcm9jZXNzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAKQEAgLTIyNSw2ICsyMjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwog
ICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIGJvb2wgY2FzZUluc2Vu
c2l0aXZlLCB1aW50MzJfdCBtYXhOdW1NYXRjaGVzKTsKIAorICAgIHZvaWQgZGlkQ2hhbmdlU2Vs
ZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKwogICAgIE93
blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5G
cmFtZTsKIApAQCAtMjYxLDYgKzI2Niw4IEBAIHByaXZhdGU6CiAgICAgRmluZENvbnRyb2xsZXIg
bV9maW5kQ29udHJvbGxlcjsKICAgICBPd25QdHI8UGFnZU92ZXJsYXk+IG1fcGFnZU92ZXJsYXk7
CiAKKyAgICBSZWZQdHI8V2ViUG9wdXBNZW51PiBtX2FjdGl2ZVBvcHVwTWVudTsKKwogICAgIHVp
bnQ2NF90IG1fcGFnZUlEOwogfTsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTcy
LDcgKzcyLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEZpbmRTdHJpbmcoV1RGOjpT
dHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kRGlyZWN0aW9uLCB1aW50MzJfdCBmaW5kT3B0aW9u
cywgdW5zaWduZWQgbWF4TnVtTWF0Y2hlcykKICAgICBIaWRlRmluZFVJKCkKICAgICBDb3VudFN0
cmluZ01hdGNoZXMoV1RGOjpTdHJpbmcgc3RyaW5nLCBib29sIGNhc2VJbnNlbnNpdGl2ZSwgdW5z
aWduZWQgbWF4TnVtTWF0Y2hlcykKLSAgICAKKworICAgICMgUG9wdXAgbWVudS4KKyAgICBEaWRD
aGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOwor
CiAgICAgU2V0V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmll
dykKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA2OTgz
NSkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01Mjks
NiArNTI5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQb3B1cEl0ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlBvcHVwSXRlbS5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hh
cmVkXFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTE5
MTIsNiArMTkyMCwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxXZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAi
DQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cVUlQcm9jZXNzXHdpblxXZWJQb3B1cE1lbnVQcm94eVdpbi5oIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5c
V2ViVmlldy5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCg==
</data>
<flag name="review"
          id="60832"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70907</attachid>
            <date>2010-10-15 15:51:37 -0700</date>
            <delta_ts>2010-10-15 17:01:03 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>pop2.diff</filename>
            <type>text/plain</type>
            <size>59535</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA2IEBACisyMDEwLTEwLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdXAg
d2lkZ2V0IHN1cHBvcnQgKDxzZWxlY3Q+KQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE0Nzc0
Nj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzQw
CisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgcG9wdXAgbWVudXMuIE9ubHkgd29y
a3Mgb24gdGhlIG1hYyBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9wdXBJ
dGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVw
SXRlbS5oOiBBZGRlZC4KKyAgICAgICAgU2VyaWFsaXphYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEg
bWVudSBpdGVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgQ3JlYXRlIGEgV2ViUG9wdXBNZW51UHJveHlNYWMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgIENy
ZWF0ZSBhIFdlYlBvcHVwTWVudVByb3h5UXQgKHdoaWNoIGlzIGp1c3QgYSBzdHViIHJpZ2h0IG5v
dykuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oOgorICAgICAgICBDcmVhdGUgYSBXZWJQb3B1cE1lbnVQcm94eVdpbiAod2hpY2ggaXMg
anVzdCBhIHN0dWIgcmlnaHQgbm93KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHRvIGdldCBhIHBsYXRmb3JtIHNw
ZWNpZmljIFdlYlBvcHVwTWVudVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgUGlwZSB0aHJvdWdoIGNhbGxzIHRvIHNldCB1cCB0aGUgbWVudS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6fldlYlBvcHVwTWVudVByb3h5TWFjKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIEFkZCBVSSBw
cm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseSB0aGlzIGRvZXMgbm90IHN1cHBv
cnQKKyAgICAgICAgY3VzdG9tIGZvbnRzIGFzIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gZGlkLgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlR
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQ
cm94eVF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OldlYlBvcHVwTWVudVByb3h5V2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46On5XZWJQb3B1cE1lbnVQcm94
eVdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uaDogQWRk
ZWQuCisgICAgICAgIEFkZCBzdHViYmVkIG91dCBpbXBsZW1lbnRhdGlvbnMgZm9yIFF0IGFuZCB3
aW5kb3dzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9w
dXBNZW51KToKKyAgICAgICAgUGFzcyB0aGUgcGFnZSBpbiB0aGUgY3JlYXRlIGZ1bmN0aW9uLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwTWVudTo6V2ViUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51Ojpwb3B1bGF0ZUl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OmRpc2Nvbm5lY3RGcm9tUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBv
cHVwTWVudTo6V2ViU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNo
UG9wdXBNZW51Ojpwb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFBpcGUgdGhyb3VnaCBjYWxscyB0
byBzZXQgdXAgdGhlIG1lbnUuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIu
dmNwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAyMDEwLTEwLTE1ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJl
ZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAogICAgIFNoYXJlZC9XZWJOdW1iZXIuaCBcCiAg
ICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBcCisgICAgU2hhcmVkL1dlYlBv
cHVwSXRlbS5oIFwKICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwK
ICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVx
dWVzdC5oIFwKQEAgLTI3MCw2ICsyNzEsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc01hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggXApAQCAtMzU3LDYgKzM1OSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAgICAgU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBcCisgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXApAQCAtNDYxLDYg
KzQ2NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzTWFpblF0
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwIFwKICAgICAkJFdFQktJ
VDJfR0VORVJBVEVEX1NPVVJDRVMKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oKQorICAgIDog
bV90eXBlKEl0ZW0pCisgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQoreworfQorCitXZWJQb3B1cEl0
ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1f
aXNFbmFibGVkKHRydWUpCit7Cit9CisKK1dlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0
cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkKQorICAgIDogbV90eXBlKHR5
cGUpCisgICAgLCBtX3RleHQodGV4dCkKKyAgICAsIG1fdG9vbFRpcCh0b29sVGlwKQorICAgICwg
bV9hY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmlsaXR5VGV4dCkKKyAgICAsIG1faXNFbmFibGVk
KGlzRW5hYmxlZCkKK3sKK30KKwordm9pZCBXZWJQb3B1cEl0ZW06OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENv
cmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpLCBtX3RleHQsIG1fdG9vbFRp
cCwgbV9hY2Nlc3NpYmlsaXR5VGV4dCwgbV9pc0VuYWJsZWQpKTsKK30KKworYm9vbCBXZWJQb3B1
cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBvcHVw
SXRlbSYgaXRlbSkKK3sKKyAgICB1aW50MzJfdCB0eXBlOworICAgIFN0cmluZyB0ZXh0OworICAg
IFN0cmluZyB0b29sVGlwOworICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGV4dDsKKyAgICBib29s
IGlzRW5hYmxlZDsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwg
dGV4dCwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxlZCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpdGVtID0gV2ViUG9wdXBJdGVtKHN0YXRpY19jYXN0PFR5cGU+
KHR5cGUpLCB0ZXh0LCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQy
L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQ
b3B1cEl0ZW0uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
b3B1cEl0ZW1faAorI2RlZmluZSBXZWJQb3B1cEl0ZW1faAorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERl
Y29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFdlYlBvcHVwSXRlbSB7CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgU2Vw
ZXJhdG9yLAorICAgICAgICBJdGVtCisgICAgfTsKKworICAgIFdlYlBvcHVwSXRlbSgpOworICAg
IFdlYlBvcHVwSXRlbShUeXBlKTsKKyAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0
eVRleHQsIGJvb2wgaXNFbmFibGVkKTsKKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBXZWJQb3B1cEl0ZW0mKTsKKworICAgIFR5cGUgbV90eXBlOworICAgIFN0
cmluZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fdG9vbFRpcDsKKyAgICBTdHJpbmcgbV9hY2Nlc3Np
YmlsaXR5VGV4dDsKKyAgICBib29sIG1faXNFbmFibGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cEl0ZW1faApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBGaW5kSW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdl
YkVkaXRDb21tYW5kUHJveHk7CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKIAogY2xhc3MgUGFn
ZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02Miw2ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JikgPSAwOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVh
dGVQb3B1cE1lbnVQcm94eSgpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNh
dG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkgPSAwOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAKICNpbmNsdWRlICJXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZU5hbWVzcGFjZS5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgpAQCAtMjEwLDYgKzIxMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBlZGl0Q29tbWFuZFZlY3Rvci5zaXplKCk7IGkg
PCBzaXplOyArK2kpCiAgICAgICAgIGVkaXRDb21tYW5kVmVjdG9yW2ldLT5pbnZhbGlkYXRlKCk7
CiAKKyAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CisKICAgICBtX2VzdGltYXRlZFByb2dyZXNz
ID0gMC4wOwogICAgIAogICAgIG1fbG9hZGVyQ2xpZW50LmluaXRpYWxpemUoMCk7CkBAIC05Njgs
NiArOTcyLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kSW5kaWNhdG9yKGNvbnMKICAg
ICBtX3BhZ2VDbGllbnQtPnNldEZpbmRJbmRpY2F0b3IoZmluZEluZGljYXRvci5yZWxlYXNlKCks
IGZhZGVPdXQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAobV9hY3RpdmVQb3B1cE1lbnUpCisgICAgICAgIG1f
YWN0aXZlUG9wdXBNZW51LT5oaWRlUG9wdXBNZW51KCk7CisgICAgZWxzZQorICAgICAgICBtX2Fj
dGl2ZVBvcHVwTWVudSA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlUG9wdXBNZW51UHJveHkoKTsKKwor
ICAgIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCA9IDA7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUt
PnNob3dQb3B1cE1lbnUocmVjdCwgaXRlbXMsIHNlbGVjdGVkSW5kZXgsIG5ld1NlbGVjdGVkSW5k
ZXgpOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VT
ZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpLCBtX3BhZ2VJ
RCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
aGlkZVBvcHVwTWVudSgpCit7CisgICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmhpZGVQb3B1cE1lbnUoKTsKKyAgICBt
X2FjdGl2ZVBvcHVwTWVudSA9IDA7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZFByb3h5LCBV
bmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5yZWdpc3RlckVkaXRD
b21tYW5kKGNvbW1hbmRQcm94eSwgdW5kb09yUmVkbyk7CkBAIC0xMTM5LDYgKzExNjYsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBlZGl0Q29tbWFuZFZl
Y3RvcltpXS0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGFnZUNsaWVudC0+Y2xlYXJBbGxFZGl0Q29t
bWFuZHMoKTsKIAorICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKKwogICAgIG1fZXN0aW1hdGVk
UHJvZ3Jlc3MgPSAwLjA7CiAKICAgICBtX3BhZ2VDbGllbnQtPnByb2Nlc3NEaWRFeGl0KCk7Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBA
QCBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNs
YXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOworY2xhc3MgV2ViUG9w
dXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKQEAgLTI4Niw2ICsy
ODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmLCB1aW50MzJfdCBudW1NYXRjaGVzKTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3Io
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCBib29sIGZhZGVPdXQpOwogCisgICAgLy8gUG9wdXAgTWVudS4K
KyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwor
ICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJl
Y3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNl
dEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKQEAgLTMyMSw2ICszMjcsOCBAQCBwcml2
YXRlOgogCiAgICAgSGFzaFNldDxXZWJFZGl0Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFuZFNl
dDsKIAorICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gbV9hY3RpdmVQb3B1cE1lbnU7CisK
ICAgICBkb3VibGUgbV9lc3RpbWF0ZWRQcm9ncmVzczsKIAogICAgIC8vIFdoZXRoZXIgdGhlIHdl
YiBwYWdlIGlzIGNvbnRhaW5lZCBpbiBhIHRvcC1sZXZlbCB3aW5kb3cuCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA2OTg5MykKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtOTUsNiArOTUsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRD
b3VudFN0cmluZ01hdGNoZXMoV1RGOjpTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBudW1NYXRjaGVz
KQogICAgIFNldEZpbmRJbmRpY2F0b3IoV2ViQ29yZTo6RmxvYXRSZWN0IHNlbGVjdGlvblJlY3Qs
IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCkKIAorICAgICMgUG9w
dXBNZW51LgorICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6SW50UmVjdCByZWN0LCBWZWN0b3I8
V2ViS2l0OjpXZWJQb3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCisgICAg
SGlkZVBvcHVwTWVudSgpCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
IyBBY2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgogICAgIERpZENoYW5nZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoYm9vbCBjb21wb3NpdGluZykgLT4gKFdlYktpdDo6RHJhd2luZ0FyZWFC
YXNlOjpEcmF3aW5nQXJlYUluZm8gbmV3RHJhd2luZ0FyZWEpCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBvcHVwTWVudVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQb3B1cE1lbnVQcm94eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eV9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVBy
b3h5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICBjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UG9wdXBJdGVtOworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlBvcHVwTWVudVByb3h5PiB7CitwdWJsaWM6ICAgIAorICAgIHZpcnR1YWwgfldlYlBvcHVw
TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1l
bnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5k
ZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKKworcHJvdGVj
dGVkOgorICAgIFdlYlBvcHVwTWVudVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA2OTg5
MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsMjAgKzU1LDIyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmll
d3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKIAotICAg
IHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwotICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFu
ZHMoKTsKLSAgICB2b2lkIHNldEVkaXRDb21tYW5kU3RhdGUoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludCBzdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdENvbW1hbmRTdGF0ZShjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlKTsKIAotICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
LSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rl
dmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50Jik7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CisKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKTsKLSAgICB2b2lkIHBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCk7CiAjZW5kaWYKIAogICAgIFdLVmlldyogbV93a1ZpZXc7CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHJldmlzaW9uIDY5ODkzKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTAgKzMwLDEyIEBACiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1Zp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgorI2ltcG9ydCAi
V2ViUG9wdXBNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtMjI2LDYgKzIyOCwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRO
b3RIYW5kbGVLZXlFdmVuCiB7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSgpCit7CisgICAgcmV0dXJuIFdlYlBv
cHVwTWVudVByb3h5TWFjOjpjcmVhdGUobV93a1ZpZXcpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4gZmluZEluZGlj
YXRvciwgYm9vbCBmYWRlT3V0KQogewogICAgIFttX3drVmlldyBfc2V0RmluZEluZGljYXRvcjpm
aW5kSW5kaWNhdG9yIGZhZGVPdXQ6ZmFkZU91dF07CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuY3BwCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnlRdC5oIgogI2luY2x1ZGUg
IldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5UXQu
aCIKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgogI2luY2x1
ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCkBAIC00Myw3ICs0NCw2IEBACiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogCi0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTEz
LDYgKzExMywxMSBAQCB2b2lkIFFXS1BhZ2VQcml2YXRlOjpkaWROb3RIYW5kbGVLZXlFdmVuCiB7
CiB9CiAKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZVBvcHVw
TWVudVByb3h5KCkKK3sKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7
Cit9CisKIHZvaWQgUVdLUGFnZVByaXZhdGU6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxG
aW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQogewogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlX3AuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0
IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJLZXli
b2FyZEV2ZW50Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBj
cmVhdGVQb3B1cE1lbnVQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwogCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAkocmV2
aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
b3B1cE1lbnVQcm94eU1hY19oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5TWFjX2gKKworI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK0BjbGFzcyBXS1Zp
ZXc7CisjZWxzZQorY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitjbGFzcyBXS1ZpZXc7CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHlNYWMgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5TWFjPiBjcmVhdGUoV0tW
aWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1
cE1lbnVQcm94eU1hYyh3ZWJWaWV3KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eU1h
YygpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgaW50MzJfdCBzZWxlY3RlZEluZGV4
LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVw
TWVudSgpOworCitwcml2YXRlOgorICAgIFdlYlBvcHVwTWVudVByb3h5TWFjKFdLVmlldyopOwor
CisgICAgdm9pZCBwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYpOworCisgICAg
UmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwOworICAgIFdLVmlldyogbV93ZWJW
aWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1l
bnVQcm94eU1hY19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJv
eHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVu
dVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBv
cHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgorCisjaW5jbHVkZSAiUGFn
ZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0
ZW0uaCIKKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eU1h
Yzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpCit7Cit9CisKK1dlYlBvcHVwTWVudVByb3h5TWFjOjp+V2ViUG9wdXBNZW51UHJv
eHlNYWMoKQoreworICAgIGlmIChtX3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRD
b250cm9sVmlldzpuaWxdOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0
ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMpCit7CisgICAgaWYgKG1fcG9wdXAp
CisgICAgICAgIFttX3BvcHVwLmdldCgpIHJlbW92ZUFsbEl0ZW1zXTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgbV9wb3B1cC5hZG9wdE5TKFtbTlNQb3BVcEJ1dHRvbkNlbGwgYWxsb2NdIGluaXRUZXh0
Q2VsbDpAIiIgcHVsbHNEb3duOk5PXSk7CisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldFVzZXNJ
dGVtRnJvbU1lbnU6Tk9dOworICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRBdXRvZW5hYmxlc0l0
ZW1zOk5PXTsKKyAgICB9CisKKyAgICBpbnQgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChpdGVtc1tpXS5tX3R5
cGUgPT0gV2ViUG9wdXBJdGVtOjpTZXBlcmF0b3IpCisgICAgICAgICAgICBbW21fcG9wdXAuZ2V0
KCkgbWVudV0gYWRkSXRlbTpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgW21fcG9wdXAuZ2V0KCkgYWRkSXRlbVdpdGhUaXRsZTpuc1N0cmlu
Z0Zyb21XZWJDb3JlU3RyaW5nKGl0ZW1zW2ldLm1fdGV4dCldOworICAgICAgICAgICAgTlNNZW51
SXRlbSogbWVudUl0ZW0gPSBbbV9wb3B1cC5nZXQoKSBsYXN0SXRlbV07CisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0RW5hYmxlZDppdGVtc1tpXS5tX2lzRW5hYmxlZF07CisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0VG9vbFRpcDpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGl0ZW1zW2ldLm1f
dG9vbFRpcCldOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5
TWFjOjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxl
Y3RlZEluZGV4KQoreworICAgIHBvcHVsYXRlKGl0ZW1zKTsKKworICAgIFttX3BvcHVwLmdldCgp
IGF0dGFjaFBvcFVwV2l0aEZyYW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CisgICAgW21fcG9w
dXAuZ2V0KCkgc2VsZWN0SXRlbUF0SW5kZXg6c2VsZWN0ZWRJbmRleF07CisKKyAgICBOU01lbnUq
IG1lbnUgPSBbbV9wb3B1cC5nZXQoKSBtZW51XTsKKworICAgIC8vIFRoZXNlIHZhbHVlcyB3ZXJl
IGJvcnJvd2VkIGZyb20gQXBwS2l0IHRvIG1hdGNoIHRoZWlyIHBsYWNlbWVudCBvZiB0aGUgbWVu
dS4KKyAgICBjb25zdCBpbnQgcG9wT3Zlckhvcml6b250YWxBZGp1c3QgPSAtMTA7CisgICAgTlNS
ZWN0IHRpdGxlRnJhbWUgPSBbbV9wb3B1cC5nZXQoKSAgdGl0bGVSZWN0Rm9yQm91bmRzOnJlY3Rd
OworICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNpemUu
aGVpZ2h0IDw9IDApCisgICAgICAgIHRpdGxlRnJhbWUgPSByZWN0OworICAgIGZsb2F0IHZlcnRP
ZmZzZXQgPSByb3VuZGYoKE5TTWF4WShyZWN0KSAtIE5TTWF4WSh0aXRsZUZyYW1lKSkgKyBOU0hl
aWdodCh0aXRsZUZyYW1lKSk7CisgICAgTlNQb2ludCBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5T
TWluWChyZWN0KSArIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0
T2Zmc2V0KTsKKworICAgIFJldGFpblB0cjxOU1ZpZXc+IGR1bW15VmlldyhBZG9wdE5TLCBbW05T
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0XSk7CisgICAgW21fd2ViVmlldyBhZGRTdWJ2
aWV3OmR1bW15Vmlldy5nZXQoKV07CisgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNv
bnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dlYlZpZXddOworCisgICAgV0tQb3B1cE1l
bnUobWVudSwgbG9jYXRpb24sIHJvdW5kZihOU1dpZHRoKHJlY3QpKSwgZHVtbXlWaWV3LmdldCgp
LCBzZWxlY3RlZEluZGV4LCBbTlNGb250IG1lbnVGb250T2ZTaXplOjBdKTsKKworICAgIFttX3Bv
cHVwLmdldCgpIGRpc21pc3NQb3BVcF07CisgICAgW2R1bW15Vmlldy5nZXQoKSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKworICAgIG5ld1NlbGVjdGVkSW5kZXggPSBbbV9wb3B1cC5nZXQoKSBpbmRl
eE9mU2VsZWN0ZWRJdGVtXTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6aGlkZVBv
cHVwTWVudSgpCit7CisgICAgW21fcG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVwXTsKK30KKworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBv
cHVwTWVudVByb3h5UXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgorCisjaW5jbHVkZSAi
V2ViUG9wdXBJdGVtLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCit7
Cit9CisKK1dlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0KCkKK3sKK30K
Kwordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4KQoreworfQorCit2b2lkIFdlYlBvcHVw
TWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBv
cHVwTWVudVByb3h5UXRfaAorI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eVF0X2gKKworI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGljIFdlYlBvcHVwTWVudVByb3h5IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eVF0KCkpOwor
ICAgIH0KKyAgICB+V2ViUG9wdXBNZW51UHJveHlRdCgpOworCisgICAgdmlydHVhbCB2b2lkIHNo
b3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCitwcml2YXRlOgorICAgIFdl
YlBvcHVwTWVudVByb3h5UXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViUG9wdXBNZW51UHJveHlRdF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5V2luLmgi
CisKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eVdpbjo6V2ViUG9wdXBN
ZW51UHJveHlXaW4oKQoreworfQorCitXZWJQb3B1cE1lbnVQcm94eVdpbjo6fldlYlBvcHVwTWVu
dVByb3h5V2luKCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2hvd1BvcHVw
TWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgaW50MzJfdCYgbmV3U2VsZWN0ZWRJbmRleCkKK3sK
K30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6aGlkZVBvcHVwTWVudSgpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBv
cHVwTWVudVByb3h5V2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlBvcHVwTWVudVByb3h5V2luLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlXaW5faAorI2RlZmluZSBXZWJQ
b3B1cE1lbnVQcm94eVdpbl9oCisKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlXaW4gOiBwdWJsaWMg
V2ViUG9wdXBNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5V2luPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJQb3B1cE1lbnVQcm94eVdpbigpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVBy
b3h5V2luKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQzMl90IHNlbGVjdGVk
SW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRl
UG9wdXBNZW51KCk7CisKK3ByaXZhdGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlXaW4oKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlX
aW5faApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNjk4OTMpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51UHJveHlXaW4uaCIKICNpbmNsdWRlIDxDb21tY3RybC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CkBAIC02MDks
NiArNjEwLDExIEBAIHZvaWQgV2ViVmlldzo6ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QKICAg
ICA6OkRlZldpbmRvd1Byb2NXKGV2ZW50Lm5hdGl2ZUV2ZW50KCktPmh3bmQsIGV2ZW50Lm5hdGl2
ZUV2ZW50KCktPm1lc3NhZ2UsIGV2ZW50Lm5hdGl2ZUV2ZW50KCktPndQYXJhbSwgZXZlbnQubmF0
aXZlRXZlbnQoKS0+bFBhcmFtKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
V2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkoKQoreworICAgIHJldHVybiBXZWJQb3B1cE1l
bnVQcm94eVdpbjo6Y3JlYXRlKCk7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0RmluZEluZGljYXRv
cihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNjk4
OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0
KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTUsNyArMjk1LDEyIEBACiAJCUJDNEJFRUFDMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0QkVFQUExMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgKi87IH07CiAJCUJDNEJFRkUxMTIwQTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5v
ZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNEJFRkRGMTIwQTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDNEJFRkUyMTIwQTFB
NEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0QkVGRTAxMjBBMUE0QzAwRkJBMEM3IC8qIFdL
QnVuZGxlTm9kZUhhbmRsZS5jcHAgKi87IH07CisJCUJDNTc0NEVGMTI2MzhGQjMwMDZGMEYxMiAv
KiBXZWJQb3B1cEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM1NzQ0RUQxMjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5jcHAgKi87
IH07CisJCUJDNTc0NEYwMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NEVFMTI2MzhGQjMw
MDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCAqLzsgfTsKIAkJQkM1NzQ1MEMxMjYzQjE1NTAwNkYw
RjEyIC8qIFdLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1
bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkM1NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVu
dVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzU3NEU2MTEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCAqLzsgfTsKKwkJ
QkM1NzUwOTcxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTA5NTEyNjhGM0M2
MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLzsgfTsKKwkJQkM1NzUwOTgxMjY4
RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8q
IFdlYlBvcHVwTWVudVByb3h5TWFjLm1tICovOyB9OwogCQlCQzU5NTM0MjEwRkMwNDUyMDA5OEY4
MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50
LmggKi87IH07CiAJCUJDNTk3MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0MTE2
NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLzsgfTsKIAkJQkM1RjdCQjQxMTgyMzc2
QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMg
LyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCAqLzsgfTsKQEAgLTc3Miw3ICs3NzcsMTIg
QEAKIAkJQkM0QkVFQUExMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzRCRUZERjEy
MEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlTm9kZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzRCRUZFMDEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlTm9kZUhh
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNTc0NEVEMTI2MzhGQjMw
MDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUG9wdXBJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM1NzQ0RUUxMjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM1NzQ1MEIxMjYzQjE1NTAwNkYwRjEyIC8qIFdLQnVuZGxlTm9kZUhhbmRsZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVOb2RlSGFu
ZGxlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzU3NEU2MTEyNjdE
MDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUG9wdXBNZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkM1NzUwOTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5TWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAv
KiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vz
c01vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NNb2RlbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMg
LyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTkwLDYgKzEyMDAsOCBAQAogCQkJCUJDMDMyREIxMTBGNDM4MEYw
MDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uaCAqLywKIAkJCQlCQ0Y2OUY5ODExNzZDRUQ2
MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oICovLAogCQkJCUJDMzNERDY3MTIz
ODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLywKKwkJCQlCQzU3NDRFRDEyNjM4RkIzMDA2
RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLywKKwkJCQlCQzU3NDRFRTEyNjM4RkIzMDA2RjBG
MTIgLyogV2ViUG9wdXBJdGVtLmggKi8sCiAJCQkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2ODJGIC8q
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAogCQkJCUMwNkM2MDk0MTI0QzE0NDMw
MDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJQkMzMDY4MjMx
MjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLApA
QCAtMTQwOCw2ICsxNDIwLDcgQEAKIAkJCQlCQ0JEMzhGQTEyNUJBQjlBMDBEMkMyOUYgLyogV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUJDQjlGOEFEMTEyNEUwNzcwMEExMzdFMCAv
KiBXZWJQb2xpY3lDbGllbnQuY3BwICovLAogCQkJCUJDQjlGOEFFMTEyNEUwNzcwMEExMzdFMCAv
KiBXZWJQb2xpY3lDbGllbnQuaCAqLywKKwkJCQlCQzU3NEU2MTEyNjdEMDgwMDA2RjBGMTIgLyog
V2ViUG9wdXBNZW51UHJveHkuaCAqLywKIAkJCQlCQ0Q1OTdGRTExMkI1N0JFMDBFQzhDMjMgLyog
V2ViUHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUJDRDU5N0ZEMTEyQjU3QkUwMEVDOEMyMyAvKiBX
ZWJQcmVmZXJlbmNlcy5oICovLAogCQkJCUJDMTExQjBDMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQ
cm9jZXNzTWFuYWdlci5jcHAgKi8sCkBAIC0xNzE0LDYgKzE3MjcsOCBAQAogCQkJCUJDMjY1MUY1
MTE4MjVFRjgwMDI0M0UxMiAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAq
LywKIAkJCQkwRjUyNjVCQjExREQzNzg2MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5TWFjLm1tICovLAogCQkJCTFBMUM2NDg2MTFGNDE1QjcwMDU1M0MxOSAvKiBXZWJDb250
ZXh0TWFjLm1tICovLAorCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1l
bnVQcm94eU1hYy5oICovLAorCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTIwMzMsMTIgKzIwNDgsMTUgQEAKIAkJCQkxQTNERDIwMjEyNUU1
QTFGMDA0NTE1RTYgLyogV2ViRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzREQy
MDYxMjVFNUEyRjAwNDUxNUU2IC8qIEFQSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkND
OEIzNzQxMjVGQjY5MDAwREU0NkE0IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDNTc0NEYwMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNTc0NTBDMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0MUFDNzEyNjNDODgzMDAwNTRFOTQgLyogQmlu
YXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFFRTEyNjRGRDUwMDAzRTQ0
RDQgLyogRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTBDMUY0MTI2NEZENzEw
MDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMyMzcx
MjY1MDcxNzAwM0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkw
QzJBMzEyNjUwQzYwMDAzRTQ0RDQgLyogRmluZFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzU3NEU2MzEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDNTc1MDk3MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQ
cm94eU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8q
IEZpbmRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTEwMTBBMTI2OEM4Q0EwMDE4
NDJGNSAvKiBGaW5kSW5kaWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0y
MzQyLDExICsyMzYwLDEzIEBACiAJCQkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRDM5MTQxMjVCQjFBODAwRDJDMjlGIC8qIFdl
YlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNERDFG
RDEyNUU1OUYzMDA0NTE1RTYgLyogV2ViRmluZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCQzU3NDRFRjEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQzQxQUM4MTI2M0M4ODMwMDA1NEU5NCAvKiBCaW5hcnlTZW1hcGhvcmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5MEMxRjUxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOTBDMjM4MTI2NTA3MTcwMDNFNDRENCAv
KiBQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTkwQzJBNDEyNjUwQzYwMDAz
RTQ0RDQgLyogRmluZFBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwMUEyNjAx
MTI2NjJGMjEwMEM5RUQ1NSAvKiBCYWNraW5nU3RvcmVDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCQzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQTkxMDA3MjEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTkxMDEwQjEyNjhDOENBMDAxODQyRjUgLyogRmlu
ZEluZGljYXRvcldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsMTIgKzUxNiwxMiBAQCBi
b29sIFdlYkNocm9tZUNsaWVudDo6c2VsZWN0SXRlbVdyaXRpbmdECiAKIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViUG9wdXBN
ZW51OjpjcmVhdGUoY2xpZW50KTsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUobV9w
YWdlLCBjbGllbnQpOwogfQogCiBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4g
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYlNlYXJjaFBvcHVwTWVudTo6
Y3JlYXRlKGNsaWVudCk7CisgICAgcmV0dXJuIFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKG1f
cGFnZSwgY2xpZW50KTsKIH0KIAogUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDY5
ODkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE4ICsyMSwyNSBAQAogCiAjaW5jbHVkZSAiV2ViUG9w
dXBNZW51LmgiCiAKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BvcHVwTWVudUNsaWVudC5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBXZWJQb3B1
cE1lbnU6OmNyZWF0ZShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1Bhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51PiBXZWJQb3B1cE1lbnU6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBQb3B1
cE1lbnVDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVw
TWVudShjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudShwYWdl
LCBjbGllbnQpKTsKIH0KIAotV2ViUG9wdXBNZW51OjpXZWJQb3B1cE1lbnUoV2ViQ29yZTo6UG9w
dXBNZW51Q2xpZW50KiBjbGllbnQpCitXZWJQb3B1cE1lbnU6OldlYlBvcHVwTWVudShXZWJQYWdl
KiBwYWdlLCBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXBDbGllbnQoY2xp
ZW50KQorICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKQEAgLTQwLDE5ICs0Nyw2NiBAQCBXZWJQ
b3B1cE1lbnU6On5XZWJQb3B1cE1lbnUoKQogewogfQogCi0KIHZvaWQgV2ViUG9wdXBNZW51Ojpk
aXNjb25uZWN0Q2xpZW50KCkKIHsKICAgICBtX3BvcHVwQ2xpZW50ID0gMDsKIH0KIAotdm9pZCBX
ZWJQb3B1cE1lbnU6OnNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudTo6ZGlkQ2hhbmdl
U2VsZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpCit7CisgICAgaWYgKCFtX3BvcHVwQ2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAg
ICBpZiAobmV3SW5kZXggPj0gMCkKKyAgICAgICAgbV9wb3B1cENsaWVudC0+dmFsdWVDaGFuZ2Vk
KG5ld0luZGV4KTsKK30KKworVmVjdG9yPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBNZW51Ojpwb3B1
bGF0ZUl0ZW1zKCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1fcG9wdXBDbGllbnQtPmxpc3RTaXpl
KCk7CisKKyAgICBWZWN0b3I8V2ViUG9wdXBJdGVtPiBpdGVtczsKKyAgICBpdGVtcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtSXNTZXBhcmF0b3Io
aSkpCisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6
U2VwZXJhdG9yKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBzdHlsaW5nIHRoZSBmb250LgorICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBzdHlsaW5nIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4K
KyAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGN1c3RvbWl6ZSB0ZXh0IGNvbG9y
IHdoZW4gYW4gaXRlbSBpcyBoaWdobGlnaHRlZC4KKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChX
ZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChp
KSwgbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1BY2Nl
c3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGl0ZW1zOworfQorCit2b2lkIFdlYlBvcHVwTWVu
dTo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkK
IHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGluZm9ybSB0aGUgY2xpZW50IHRv
IGFsc28gY2xvc2UgdGhlIG1lbnUuCisgICAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gaXRlbXMgPSBw
b3B1bGF0ZUl0ZW1zKCk7CiAKKyAgICBpZiAoaXRlbXMuaXNFbXB0eSgpIHx8ICFtX3BhZ2UpIHsK
KyAgICAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3BhZ2UtPnNldEFjdGl2ZVBvcHVwTWVudSh0aGlzKTsKKworICAgIC8v
IE1vdmUgdG8gcGFnZSBjb29yZGluYXRlcworICAgIEludFJlY3QgcGFnZUNvb3JkaW5hdGVzKHZp
ZXctPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKSwgcmVjdC5zaXplKCkpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93UG9wdXBNZW51KHBhZ2VDb29yZGluYXRlcywgaXRlbXMsIGluZGV4KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51OjpoaWRlKCkKIHsKKyAgICBp
ZiAoIW1fcGFnZSB8fCAhbV9wb3B1cENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkhpZGVQb3B1cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZXRB
Y3RpdmVQb3B1cE1lbnUoMCk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxl
bWVudCgpCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5oCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTEg
QEAKICNpZm5kZWYgV2ViUG9wdXBNZW51X2gKICNkZWZpbmUgV2ViUG9wdXBNZW51X2gKIAorI2lu
Y2x1ZGUgIldlYlBvcHVwSXRlbS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3B1cE1lbnVD
bGllbnQ7CkBAIC0zMSwyMCArMzQsMjkgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBvcHVwSXRlbTsKKwog
Y2xhc3MgV2ViUG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6OlBvcHVwTWVudSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBjcmVhdGUoV2ViQ29yZTo6UG9w
dXBNZW51Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBjcmVh
dGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwogICAgIH5XZWJQb3B1cE1l
bnUoKTsKIAorICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRleCk7CisKICAgICB2aXJ0
dWFsIHZvaWQgc2hvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3
KiwgaW50IGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50
KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCopOworICAgIFdlYlBvcHVwTWVudShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
Kik7CisKKyAgICBWZWN0b3I8V2ViUG9wdXBJdGVtPiBwb3B1bGF0ZUl0ZW1zKCk7CiAKICAgICBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBDbGllbnQ7CisgICAgV2ViUGFnZSogbV9w
YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAko
cmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTkgKzIyLDIxIEBACiAK
ICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1lbnUuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVu
dT4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBj
bGllbnQpCitQYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVudT4gV2ViU2VhcmNoUG9wdXBNZW51
OjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTZWFyY2hQb3B1cE1lbnUoY2xpZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJTZWFyY2hQb3B1cE1lbnUocGFnZSwgY2xpZW50KSk7CiB9CiAK
LVdlYlNlYXJjaFBvcHVwTWVudTo6V2ViU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChXZWJQb3B1cE1lbnU6OmNyZWF0ZShjbGll
bnQpKQorV2ViU2VhcmNoUG9wdXBNZW51OjpXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSogcGFn
ZSwgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX3BvcHVwKFdlYlBvcHVwTWVudTo6
Y3JlYXRlKHBhZ2UsIGNsaWVudCkpCiB7CiB9CiAKLVdlYkNvcmU6OlBvcHVwTWVudSogV2ViU2Vh
cmNoUG9wdXBNZW51Ojpwb3B1cE1lbnUoKQorUG9wdXBNZW51KiBXZWJTZWFyY2hQb3B1cE1lbnU6
OnBvcHVwTWVudSgpCiB7CiAgICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5oCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU2VhcmNoUG9wdXBNZW51IDogcHVibGlj
IFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU2VhcmNoUG9wdXBNZW51PiBjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU2VhcmNoUG9wdXBNZW51PiBjcmVhdGUoV2ViUGFn
ZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQ
b3B1cE1lbnUqIHBvcHVwTWVudSgpOwogICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcyk7CkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAgIFdlYlNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKTsKKyAgICBXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSosIFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopOwogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudT4gbV9wb3B1
cDsKIH07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gNjk4OTMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsOSArNDgsMTAgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
S2luZHMuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CkBAIC0yNjIsOCArMjYzLDEyIEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQogICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT53aWxsRGVzdHJveVBhZ2UodGhpcyk7
CiAKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFy
ZW50KCk7CisgICAgaWYgKG1fYWN0aXZlUG9wdXBNZW51KSB7CisgICAgICAgIG1fYWN0aXZlUG9w
dXBNZW51LT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKKyAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUg
PSAwOworICAgIH0KIAorICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRl
dGFjaEZyb21QYXJlbnQoKTsKICAgICBtX3BhZ2UuY2xlYXIoKTsKIAogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwpAQCAtNzc3LDYgKzc4MiwxMSBAQCB2
b2lkIFdlYlBhZ2U6OmRpZFJlbW92ZUVkaXRDb21tYW5kKHVpbnQ2CiAgICAgcmVtb3ZlV2ViRWRp
dENvbW1hbmQoY29tbWFuZElEKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVQb3B1cE1l
bnUoV2ViUG9wdXBNZW51KiBtZW51KQoreworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gbWVudTsK
K30KKwogdm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50
MzJfdCBmaW5kRGlyZWN0aW9uLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TnVt
TWF0Y2hlcykKIHsKICAgICBtX2ZpbmRDb250cm9sbGVyLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0
aWNfY2FzdDxGaW5kRGlyZWN0aW9uPihmaW5kRGlyZWN0aW9uKSwgc3RhdGljX2Nhc3Q8RmluZE9w
dGlvbnM+KGZpbmRPcHRpb25zKSwgbWF4TnVtTWF0Y2hlcyk7CkBAIC03OTQsNyArODA0LDE3IEBA
IHZvaWQgV2ViUGFnZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFMKIAogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBudW1NYXRjaGVzKSwgbV9wYWdlSUQpOwogfQot
ICAgIAorCit2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1
cE1lbnUoaW50MzJfdCBuZXdJbmRleCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdlU2VsZWN0
ZWRJbmRleChuZXdJbmRleCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCisKICNp
ZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyog
cGx1Z2luVmlldykKIHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJl
dmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFdlYkV2ZW50OwogY2xhc3MgV2Vi
RnJhbWU7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2Ns
YXNzIFdlYlBvcHVwTWVudTsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CkBAIC0xMTAsNiArMTExLDggQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlV2ViRWRpdENvbW1hbmQodWludDY0X3QpOwogICAgIGJvb2wgaXNJ
blJlZG8oKSBjb25zdCB7IHJldHVybiBtX2lzSW5SZWRvOyB9CiAKKyAgICB2b2lkIHNldEFjdGl2
ZVBvcHVwTWVudShXZWJQb3B1cE1lbnUqKTsKKwogICAgIC8vIC0tIENhbGxlZCBmcm9tIFdlYlBy
b2Nlc3MuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIApAQCAtMjI3
LDYgKzIzMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBj
b3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgYm9vbCBjYXNlSW5zZW5zaXRpdmUsIHVp
bnQzMl90IG1heE51bU1hdGNoZXMpOwogCisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4
Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOworCiAgICAgT3duUHRyPFdlYkNv
cmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogCkBA
IC0yNjMsNiArMjY4LDggQEAgcHJpdmF0ZToKICAgICBGaW5kQ29udHJvbGxlciBtX2ZpbmRDb250
cm9sbGVyOwogICAgIE93blB0cjxQYWdlT3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsKIAorICAgIFJl
ZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZlUG9wdXBNZW51OworCiAgICAgdWludDY0X3QgbV9w
YWdlSUQ7CiB9OwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsMTAg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgRmluZFN0cmluZyhXVEY6OlN0cmluZyBzdHJp
bmcsIHVpbnQzMl90IGZpbmREaXJlY3Rpb24sIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhOdW1NYXRjaGVzKQogICAgIEhpZGVGaW5kVUkoKQogICAgIENvdW50U3RyaW5nTWF0Y2hl
cyhXVEY6OlN0cmluZyBzdHJpbmcsIGJvb2wgY2FzZUluc2Vuc2l0aXZlLCB1bnNpZ25lZCBtYXhO
dW1NYXRjaGVzKQotICAgIAorCisgICAgIyBQb3B1cCBtZW51LgorICAgIERpZENoYW5nZVNlbGVj
dGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CisKICAgICBTZXRX
aW5kb3dSZXNpemVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGludGVyc2VjdHNWaWV3KQogCiAjaWYg
UExBVEZPUk0oTUFDKQpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDY5ODkzKQorKysgV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
U2hhcmVkXFdlYlBvcHVwSXRlbS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUG9wdXBJdGVtLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUHJl
ZmVyZW5jZXNTdG9yZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTkyMCw2ICsxOTI4
LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3Ncd2luXFdlYlBvcHVwTWVudVByb3h5V2luLmNwcCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nl
c3Ncd2luXFdlYlBvcHVwTWVudVByb3h5V2luLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxXZWJWaWV3LmNw
cCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70922</attachid>
            <date>2010-10-15 17:01:03 -0700</date>
            <delta_ts>2010-10-15 17:46:30 -0700</delta_ts>
            <desc>Fix Qt.</desc>
            <filename>pqt.diff</filename>
            <type>text/plain</type>
            <size>59685</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA2IEBACisyMDEwLTEwLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdXAg
d2lkZ2V0IHN1cHBvcnQgKDxzZWxlY3Q+KQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE0Nzc0
Nj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzQw
CisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgcG9wdXAgbWVudXMuIE9ubHkgd29y
a3Mgb24gdGhlIG1hYyBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9wdXBJ
dGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVw
SXRlbS5oOiBBZGRlZC4KKyAgICAgICAgU2VyaWFsaXphYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEg
bWVudSBpdGVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgQ3JlYXRlIGEgV2ViUG9wdXBNZW51UHJveHlNYWMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgIENy
ZWF0ZSBhIFdlYlBvcHVwTWVudVByb3h5UXQgKHdoaWNoIGlzIGp1c3QgYSBzdHViIHJpZ2h0IG5v
dykuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oOgorICAgICAgICBDcmVhdGUgYSBXZWJQb3B1cE1lbnVQcm94eVdpbiAod2hpY2ggaXMg
anVzdCBhIHN0dWIgcmlnaHQgbm93KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHRvIGdldCBhIHBsYXRmb3JtIHNw
ZWNpZmljIFdlYlBvcHVwTWVudVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgUGlwZSB0aHJvdWdoIGNhbGxzIHRvIHNldCB1cCB0aGUgbWVudS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6fldlYlBvcHVwTWVudVByb3h5TWFjKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIEFkZCBVSSBw
cm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseSB0aGlzIGRvZXMgbm90IHN1cHBv
cnQKKyAgICAgICAgY3VzdG9tIGZvbnRzIGFzIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gZGlkLgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlR
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQ
cm94eVF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OldlYlBvcHVwTWVudVByb3h5V2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46On5XZWJQb3B1cE1lbnVQcm94
eVdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OmhpZGVQb3B1cE1l
bnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uaDogQWRk
ZWQuCisgICAgICAgIEFkZCBzdHViYmVkIG91dCBpbXBsZW1lbnRhdGlvbnMgZm9yIFF0IGFuZCB3
aW5kb3dzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9w
dXBNZW51KToKKyAgICAgICAgUGFzcyB0aGUgcGFnZSBpbiB0aGUgY3JlYXRlIGZ1bmN0aW9uLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwTWVudTo6V2ViUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51Ojpwb3B1bGF0ZUl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OmRpc2Nvbm5lY3RGcm9tUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBv
cHVwTWVudTo6V2ViU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNo
UG9wdXBNZW51Ojpwb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFBpcGUgdGhyb3VnaCBjYWxscyB0
byBzZXQgdXAgdGhlIG1lbnUuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIu
dmNwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAyMDEwLTEwLTE1ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJl
ZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAogICAgIFNoYXJlZC9XZWJOdW1iZXIuaCBcCiAg
ICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBcCisgICAgU2hhcmVkL1dlYlBv
cHVwSXRlbS5oIFwKICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwK
ICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVx
dWVzdC5oIFwKQEAgLTI3MCw2ICsyNzEsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc01hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggXApAQCAtMzU3LDYgKzM1OSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAgICAgU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBcCisgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXApAQCAtNDYxLDYg
KzQ2NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzTWFpblF0
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwIFwKICAgICAkJFdFQktJ
VDJfR0VORVJBVEVEX1NPVVJDRVMKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oKQorICAgIDog
bV90eXBlKEl0ZW0pCisgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQoreworfQorCitXZWJQb3B1cEl0
ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1f
aXNFbmFibGVkKHRydWUpCit7Cit9CisKK1dlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0
cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkKQorICAgIDogbV90eXBlKHR5
cGUpCisgICAgLCBtX3RleHQodGV4dCkKKyAgICAsIG1fdG9vbFRpcCh0b29sVGlwKQorICAgICwg
bV9hY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmlsaXR5VGV4dCkKKyAgICAsIG1faXNFbmFibGVk
KGlzRW5hYmxlZCkKK3sKK30KKwordm9pZCBXZWJQb3B1cEl0ZW06OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENv
cmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpLCBtX3RleHQsIG1fdG9vbFRp
cCwgbV9hY2Nlc3NpYmlsaXR5VGV4dCwgbV9pc0VuYWJsZWQpKTsKK30KKworYm9vbCBXZWJQb3B1
cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBvcHVw
SXRlbSYgaXRlbSkKK3sKKyAgICB1aW50MzJfdCB0eXBlOworICAgIFN0cmluZyB0ZXh0OworICAg
IFN0cmluZyB0b29sVGlwOworICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGV4dDsKKyAgICBib29s
IGlzRW5hYmxlZDsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwg
dGV4dCwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxlZCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpdGVtID0gV2ViUG9wdXBJdGVtKHN0YXRpY19jYXN0PFR5cGU+
KHR5cGUpLCB0ZXh0LCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQy
L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQ
b3B1cEl0ZW0uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
b3B1cEl0ZW1faAorI2RlZmluZSBXZWJQb3B1cEl0ZW1faAorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERl
Y29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFdlYlBvcHVwSXRlbSB7CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgU2Vw
ZXJhdG9yLAorICAgICAgICBJdGVtCisgICAgfTsKKworICAgIFdlYlBvcHVwSXRlbSgpOworICAg
IFdlYlBvcHVwSXRlbShUeXBlKTsKKyAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0
eVRleHQsIGJvb2wgaXNFbmFibGVkKTsKKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBXZWJQb3B1cEl0ZW0mKTsKKworICAgIFR5cGUgbV90eXBlOworICAgIFN0
cmluZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fdG9vbFRpcDsKKyAgICBTdHJpbmcgbV9hY2Nlc3Np
YmlsaXR5VGV4dDsKKyAgICBib29sIG1faXNFbmFibGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cEl0ZW1faApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGFnZUNsaWVudF9oCiAK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5
LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xh
c3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7Citj
bGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CiBwdWJsaWM6CkBA
IC02Miw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JikgPSAwOwogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpID0g
MDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZElu
ZGljYXRvcj4sIGJvb2wgZmFkZU91dCkgPSAwOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA2OTg5
MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDggQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFj
ZS5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMjEwLDYgKzIx
Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSBlZGl0Q29tbWFuZFZlY3Rvci5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAg
IGVkaXRDb21tYW5kVmVjdG9yW2ldLT5pbnZhbGlkYXRlKCk7CiAKKyAgICBtX2FjdGl2ZVBvcHVw
TWVudSA9IDA7CisKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMC4wOwogICAgIAogICAgIG1f
bG9hZGVyQ2xpZW50LmluaXRpYWxpemUoMCk7CkBAIC05NjgsNiArOTcyLDI5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGaW5kSW5kaWNhdG9yKGNvbnMKICAgICBtX3BhZ2VDbGllbnQtPnNldEZp
bmRJbmRpY2F0b3IoZmluZEluZGljYXRvci5yZWxlYXNlKCksIGZhZGVPdXQpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAg
ICBpZiAobV9hY3RpdmVQb3B1cE1lbnUpCisgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51LT5oaWRl
UG9wdXBNZW51KCk7CisgICAgZWxzZQorICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IG1fcGFn
ZUNsaWVudC0+Y3JlYXRlUG9wdXBNZW51UHJveHkoKTsKKworICAgIGludDMyX3QgbmV3U2VsZWN0
ZWRJbmRleCA9IDA7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPnNob3dQb3B1cE1lbnUocmVjdCwg
aXRlbXMsIHNlbGVjdGVkSW5kZXgsIG5ld1NlbGVjdGVkSW5kZXgpOworCisgICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZl
UG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgbV9hY3RpdmVQb3B1
cE1lbnUgPSAwOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCit7Cisg
ICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hY3Rp
dmVQb3B1cE1lbnUtPmhpZGVQb3B1cE1lbnUoKTsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7
Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8
V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZFByb3h5LCBVbmRvT3JSZWRvIHVuZG9PclJlZG8p
CiB7CiAgICAgbV9wYWdlQ2xpZW50LT5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmRQcm94eSwg
dW5kb09yUmVkbyk7CkBAIC0xMTM5LDYgKzExNjYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEV4aXQoKQogICAgICAgICBlZGl0Q29tbWFuZFZlY3RvcltpXS0+aW52YWxpZGF0ZSgp
OwogICAgIG1fcGFnZUNsaWVudC0+Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKIAorICAgIG1fYWN0
aXZlUG9wdXBNZW51ID0gMDsKKwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwLjA7CiAKICAg
ICBtX3BhZ2VDbGllbnQtPnByb2Nlc3NEaWRFeGl0KCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBjbGFzcyBXZWJFZGl0Q29tbWFu
ZFByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBj
bGFzcyBXZWJQYWdlTmFtZXNwYWNlOworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9w
dXBNZW51UHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0
OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKQEAgLTI4Niw2ICsyODgsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBudW1N
YXRjaGVzKTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4
dFJlY3RzLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBi
b29sIGZhZGVPdXQpOwogCisgICAgLy8gUG9wdXAgTWVudS4KKyAgICB2b2lkIHNob3dQb3B1cE1l
bnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgaGlkZVBvcHVwTWVu
dSgpOworCiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0
VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3Jl
OjpDdXJzb3ImKTsKQEAgLTMyMSw2ICszMjcsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxX
ZWJFZGl0Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFuZFNldDsKIAorICAgIFJlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gbV9hY3RpdmVQb3B1cE1lbnU7CisKICAgICBkb3VibGUgbV9lc3RpbWF0
ZWRQcm9ncmVzczsKIAogICAgIC8vIFdoZXRoZXIgdGhlIHdlYiBwYWdlIGlzIGNvbnRhaW5lZCBp
biBhIHRvcC1sZXZlbCB3aW5kb3cuCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMTAgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb3VudFN0cmluZ01hdGNoZXMoV1RG
OjpTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBudW1NYXRjaGVzKQogICAgIFNldEZpbmRJbmRpY2F0
b3IoV2ViQ29yZTo6RmxvYXRSZWN0IHNlbGVjdGlvblJlY3QsIFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHRleHRSZWN0cywgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBjb250ZW50SW1h
Z2VIYW5kbGUsIGJvb2wgZmFkZU91dCkKIAorICAgICMgUG9wdXBNZW51LgorICAgIFNob3dQb3B1
cE1lbnUoV2ViQ29yZTo6SW50UmVjdCByZWN0LCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCisgICAgSGlkZVBvcHVwTWVudSgpCisKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgIyBBY2NlbGVyYXRlZCBjb21wc2l0
aW5nIG1lc3NhZ2VzLgogICAgIERpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBj
b21wb3NpdGluZykgLT4gKFdlYktpdDo6RHJhd2luZ0FyZWFCYXNlOjpEcmF3aW5nQXJlYUluZm8g
bmV3RHJhd2luZ0FyZWEpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5LmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1
cE1lbnVQcm94eV9oCisjZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5X2gKKworI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRSZWN0Owor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUG9wdXBJdGVtOworCitjbGFzcyBX
ZWJQb3B1cE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBvcHVwTWVudVByb3h5PiB7
CitwdWJsaWM6ICAgIAorICAgIHZpcnR1YWwgfldlYlBvcHVwTWVudVByb3h5KCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNl
bGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1NlbGVjdGVkSW5kZXgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdlYlBvcHVwTWVu
dVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMjAgKzU1
LDIyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3Jl
OjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29t
bWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9P
clJlZG8pOwotICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKLSAgICB2b2lkIHNldEVk
aXRDb21tYW5kU3RhdGUoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0VuYWJsZWQs
IGludCBzdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RWRpdENvbW1hbmRTdGF0ZShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5h
YmxlZCwgaW50IHN0YXRlKTsKIAotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZp
Y2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRU
b1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVu
dVByb3h5KCk7CisKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5k
aWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKLSAgICB2
b2lkIHBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CiAjZW5kaWYKIAogICAgIFdL
VmlldyogbV93a1ZpZXc7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEyIEBACiAj
aW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgorI2ltcG9ydCAiV2ViUG9wdXBNZW51UHJveHlNYWMu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
UGFzc093blB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjI2LDYg
KzIyOCwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWROb3RIYW5kbGVLZXlFdmVuCiB7CiB9
CiAKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQ
b3B1cE1lbnVQcm94eSgpCit7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVh
dGUobV93a1ZpZXcpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRGaW5kSW5kaWNhdG9y
KFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4gZmluZEluZGljYXRvciwgYm9vbCBmYWRlT3V0KQog
ewogICAgIFttX3drVmlldyBfc2V0RmluZEluZGljYXRvcjpmaW5kSW5kaWNhdG9yIGZhZGVPdXQ6
ZmFkZU91dF07CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCShyZXZpc2lv
biA2OTg5MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNs
dWRlICJXZWJFdmVudEZhY3RvcnlRdC5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5UXQuaCIKICNpbmNsdWRlICJXS1N0cmlu
Z1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRz
LmgiCkBAIC00Myw3ICs0NCw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTEzLDYgKzExMywxMSBAQCB2b2lkIFFX
S1BhZ2VQcml2YXRlOjpkaWROb3RIYW5kbGVLZXlFdmVuCiB7CiB9CiAKK1Bhc3NSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KCkKK3sKKyAgICBy
ZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7Cit9CisKIHZvaWQgUVdLUGFnZVBy
aXZhdGU6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBm
YWRlT3V0KQogewogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAkocmV2
aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxl
S2V5RXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJLaXQ6
OkZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eU1hY19oCisj
ZGVmaW5lIFdlYlBvcHVwTWVudVByb3h5TWFjX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWZkZWYgX19PQkpDX18KK0Bj
bGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK0BjbGFzcyBXS1ZpZXc7CisjZWxzZQorY2xhc3MgTlNQ
b3BVcEJ1dHRvbkNlbGw7CitjbGFzcyBXS1ZpZXc7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlNYWMg
OiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5TWFjPiBjcmVhdGUoV0tWaWV3KiB3ZWJWaWV3KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eU1hYyh3ZWJWaWV3
KSk7CisgICAgfQorICAgIH5XZWJQb3B1cE1lbnVQcm94eU1hYygpOworCisgICAgdmlydHVhbCB2
b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3Rl
ZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOworCitwcml2YXRlOgor
ICAgIFdlYlBvcHVwTWVudVByb3h5TWFjKFdLVmlldyopOworCisgICAgdm9pZCBwb3B1bGF0ZShj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYpOworCisgICAgUmV0YWluUHRyPE5TUG9wVXBCdXR0
b25DZWxsPiBtX3BvcHVwOworICAgIFdLVmlldyogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eU1hY19oCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lv
biAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQ
b3B1cE1lbnVQcm94eU1hYy5oIgorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKyNpbmNs
dWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJQb3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlN
YWMoV0tWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK1dl
YlBvcHVwTWVudVByb3h5TWFjOjp+V2ViUG9wdXBNZW51UHJveHlNYWMoKQoreworICAgIGlmICht
X3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRDb250cm9sVmlldzpuaWxdOworfQor
Cit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgaXRlbXMpCit7CisgICAgaWYgKG1fcG9wdXApCisgICAgICAgIFttX3BvcHVwLmdl
dCgpIHJlbW92ZUFsbEl0ZW1zXTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9wb3B1cC5hZG9wdE5T
KFtbTlNQb3BVcEJ1dHRvbkNlbGwgYWxsb2NdIGluaXRUZXh0Q2VsbDpAIiIgcHVsbHNEb3duOk5P
XSk7CisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldFVzZXNJdGVtRnJvbU1lbnU6Tk9dOworICAg
ICAgICBbbV9wb3B1cC5nZXQoKSBzZXRBdXRvZW5hYmxlc0l0ZW1zOk5PXTsKKyAgICB9CisKKyAg
ICBpbnQgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmIChpdGVtc1tpXS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpT
ZXBlcmF0b3IpCisgICAgICAgICAgICBbW21fcG9wdXAuZ2V0KCkgbWVudV0gYWRkSXRlbTpbTlNN
ZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgW21f
cG9wdXAuZ2V0KCkgYWRkSXRlbVdpdGhUaXRsZTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGl0
ZW1zW2ldLm1fdGV4dCldOworICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBbbV9w
b3B1cC5nZXQoKSBsYXN0SXRlbV07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0RW5hYmxlZDpp
dGVtc1tpXS5tX2lzRW5hYmxlZF07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0VG9vbFRpcDpu
c1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGl0ZW1zW2ldLm1fdG9vbFRpcCldOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4KQoreworICAgIHBv
cHVsYXRlKGl0ZW1zKTsKKworICAgIFttX3BvcHVwLmdldCgpIGF0dGFjaFBvcFVwV2l0aEZyYW1l
OnJlY3QgaW5WaWV3Om1fd2ViVmlld107CisgICAgW21fcG9wdXAuZ2V0KCkgc2VsZWN0SXRlbUF0
SW5kZXg6c2VsZWN0ZWRJbmRleF07CisKKyAgICBOU01lbnUqIG1lbnUgPSBbbV9wb3B1cC5nZXQo
KSBtZW51XTsKKworICAgIC8vIFRoZXNlIHZhbHVlcyB3ZXJlIGJvcnJvd2VkIGZyb20gQXBwS2l0
IHRvIG1hdGNoIHRoZWlyIHBsYWNlbWVudCBvZiB0aGUgbWVudS4KKyAgICBjb25zdCBpbnQgcG9w
T3Zlckhvcml6b250YWxBZGp1c3QgPSAtMTA7CisgICAgTlNSZWN0IHRpdGxlRnJhbWUgPSBbbV9w
b3B1cC5nZXQoKSAgdGl0bGVSZWN0Rm9yQm91bmRzOnJlY3RdOworICAgIGlmICh0aXRsZUZyYW1l
LnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCisgICAgICAg
IHRpdGxlRnJhbWUgPSByZWN0OworICAgIGZsb2F0IHZlcnRPZmZzZXQgPSByb3VuZGYoKE5TTWF4
WShyZWN0KSAtIE5TTWF4WSh0aXRsZUZyYW1lKSkgKyBOU0hlaWdodCh0aXRsZUZyYW1lKSk7Cisg
ICAgTlNQb2ludCBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcE92ZXJI
b3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0T2Zmc2V0KTsKKworICAgIFJldGFp
blB0cjxOU1ZpZXc+IGR1bW15VmlldyhBZG9wdE5TLCBbW05TVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpyZWN0XSk7CisgICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07
CisgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNvbnZlcnRQb2ludDpsb2NhdGlvbiBm
cm9tVmlldzptX3dlYlZpZXddOworCisgICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24sIHJv
dW5kZihOU1dpZHRoKHJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCBzZWxlY3RlZEluZGV4LCBbTlNG
b250IG1lbnVGb250T2ZTaXplOjBdKTsKKworICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BV
cF07CisgICAgW2R1bW15Vmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKworICAgIG5l
d1NlbGVjdGVkSW5kZXggPSBbbV9wb3B1cC5nZXQoKSBpbmRleE9mU2VsZWN0ZWRJdGVtXTsKK30K
Kwordm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgW21f
cG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVwXTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHlRdC5oIgorCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUG9wdXBN
ZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCit7Cit9CisKK1dlYlBvcHVwTWVudVBy
b3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0KCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQ
cm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBpbnQzMl90JiBuZXdT
ZWxlY3RlZEluZGV4KQoreworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1
cE1lbnUoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5UXRfaAorI2Rl
ZmluZSBXZWJQb3B1cE1lbnVQcm94eVF0X2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDog
cHVibGljIFdlYlBvcHVwTWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eVF0KCkpOworICAgIH0KKyAgICB+V2ViUG9wdXBN
ZW51UHJveHlRdCgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgaW50MzJfdCBzZWxl
Y3RlZEluZGV4LCBpbnQzMl90JiBuZXdTZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQg
aGlkZVBvcHVwTWVudSgpOworCitwcml2YXRlOgorICAgIFdlYlBvcHVwTWVudVByb3h5UXQoKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJv
eHlRdF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94
eVdpbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBN
ZW51UHJveHlXaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5V2luLmgiCisKKyNpbmNsdWRlICJXZWJQb3B1
cEl0ZW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJQb3B1cE1lbnVQcm94eVdpbjo6V2ViUG9wdXBNZW51UHJveHlXaW4oKQoreworfQor
CitXZWJQb3B1cE1lbnVQcm94eVdpbjo6fldlYlBvcHVwTWVudVByb3h5V2luKCkKK3sKK30KKwor
dm9pZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCwgaW50MzJfdCYgbmV3U2VsZWN0ZWRJbmRleCkKK3sKK30KKwordm9pZCBXZWJQb3B1cE1l
bnVQcm94eVdpbjo6aGlkZVBvcHVwTWVudSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlX
aW4uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUG9wdXBNZW51UHJveHlXaW5faAorI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eVdpbl9oCisK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUG9wdXBNZW51UHJveHlXaW4gOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5V2luPiBjcmVh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94
eVdpbigpKTsKKyAgICB9CisgICAgfldlYlBvcHVwTWVudVByb3h5V2luKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGludDMyX3QmIG5ld1Nl
bGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKK3ByaXZh
dGU6CisgICAgV2ViUG9wdXBNZW51UHJveHlXaW4oKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlXaW5faApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlXaW4uaCIK
ICNpbmNsdWRlIDxDb21tY3RybC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CkBAIC02MDksNiArNjEwLDExIEBAIHZvaWQgV2Vi
Vmlldzo6ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QKICAgICA6OkRlZldpbmRvd1Byb2NXKGV2
ZW50Lm5hdGl2ZUV2ZW50KCktPmh3bmQsIGV2ZW50Lm5hdGl2ZUV2ZW50KCktPm1lc3NhZ2UsIGV2
ZW50Lm5hdGl2ZUV2ZW50KCktPndQYXJhbSwgZXZlbnQubmF0aXZlRXZlbnQoKS0+bFBhcmFtKTsK
IH0KIAorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoKQoreworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVdpbjo6Y3JlYXRlKCk7
Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRp
Y2F0b3I+LCBib29sIGZhZGVPdXQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFj
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0
UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0
ZVBvcHVwTWVudVByb3h5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFz
c1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA2OTg5MykKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNyArMjk1LDEyIEBACiAJCUJD
NEJFRUFDMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0QkVFQUExMjBB
MEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgKi87IH07CiAJCUJD
NEJFRkUxMTIwQTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNEJFRkRGMTIwQTFBNEMwMEZC
QTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CiAJCUJDNEJFRkUyMTIwQTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRs
ZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM0QkVGRTAxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Ki87IH07CisJCUJDNTc0NEVGMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzQ0RUQxMjYz
OEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5jcHAgKi87IH07CisJCUJDNTc0NEYwMTI2MzhG
QjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NEVFMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0
ZW0uaCAqLzsgfTsKIAkJQkM1NzQ1MEMxMjYzQjE1NTAwNkYwRjEyIC8qIFdLQnVuZGxlTm9kZUhh
bmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM1
NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NEU2MTEyNjdEMDgwMDA2RjBG
MTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCAqLzsgfTsKKwkJQkM1NzUwOTcxMjY4RjNDNjAwNkYw
RjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBN
ZW51UHJveHlNYWMuaCAqLzsgfTsKKwkJQkM1NzUwOTgxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBv
cHVwTWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFj
Lm1tICovOyB9OwogCQlCQzU5NTM0MjEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NTM0
MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggKi87IH07CiAJCUJDNTk3MDc1
MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9j
ZXNzTW9kZWwuaCAqLzsgfTsKIAkJQkM1RjdCQjQxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhLmNwcCAqLzsgfTsKQEAgLTc3Miw3ICs3NzcsMTIgQEAKIAkJQkM0QkVFQUExMjBBMEE1
RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzRCRUZERjEyMEExQTRDMDBGQkEwQzcgLyogV0tC
dW5kbGVOb2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlTm9kZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzRCRUZFMDEy
MEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlTm9kZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDNTc0NEVEMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0
ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBJdGVt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzQ0RUUxMjYzOEZCMzAwNkYw
RjEyIC8qIFdlYlBvcHVwSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQb3B1cEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzQ1MEIxMjYz
QjE1NTAwNkYwRjEyIC8qIFdLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzU3NEU2MTEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9w
dXBNZW51UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBN
ZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzUwOTUxMjY4RjND
NjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvcHVwTWVu
dVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU5NTM0MDEwRkMw
NDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTkw
LDYgKzEyMDAsOCBAQAogCQkJCUJDMDMyREIxMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENv
bnZlcnNpb24uaCAqLywKIAkJCQlCQ0Y2OUY5ODExNzZDRUQ2MDA0NzFBNTIgLyogV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZS5oICovLAogCQkJCUJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJO
dW1iZXIuaCAqLywKKwkJCQlCQzU3NDRFRDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVt
LmNwcCAqLywKKwkJCQlCQzU3NDRFRTEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmgg
Ki8sCiAJCQkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwICovLAogCQkJCUMwNkM2MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJQkMzMDY4MjMxMjVBNkI5NDAwRTcxMjc4IC8qIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLApAQCAtMTQwOCw2ICsxNDIwLDcgQEAK
IAkJCQlCQ0JEMzhGQTEyNUJBQjlBMDBEMkMyOUYgLyogV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
ICovLAogCQkJCUJDQjlGOEFEMTEyNEUwNzcwMEExMzdFMCAvKiBXZWJQb2xpY3lDbGllbnQuY3Bw
ICovLAogCQkJCUJDQjlGOEFFMTEyNEUwNzcwMEExMzdFMCAvKiBXZWJQb2xpY3lDbGllbnQuaCAq
LywKKwkJCQlCQzU3NEU2MTEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCAq
LywKIAkJCQlCQ0Q1OTdGRTExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwICov
LAogCQkJCUJDRDU5N0ZEMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5oICovLAog
CQkJCUJDMTExQjBDMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzTWFuYWdlci5jcHAgKi8s
CkBAIC0xNzE0LDYgKzE3MjcsOCBAQAogCQkJCUJDMjY1MUY1MTE4MjVFRjgwMDI0M0UxMiAvKiBD
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLywKIAkJCQkwRjUyNjVCQjExREQz
Nzg2MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAogCQkJ
CTFBMUM2NDg2MTFGNDE1QjcwMDU1M0MxOSAvKiBXZWJDb250ZXh0TWFjLm1tICovLAorCQkJCUJD
NTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5oICovLAorCQkJ
CUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIw
MzMsMTIgKzIwNDgsMTUgQEAKIAkJCQkxQTNERDIwMjEyNUU1QTFGMDA0NTE1RTYgLyogV2ViRmlu
ZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzREQyMDYxMjVFNUEyRjAwNDUxNUU2IC8q
IEFQSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDOEIzNzQxMjVGQjY5MDAwREU0NkE0
IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNTc0NEYwMTI2MzhGQjMwMDZG
MEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc0NTBDMTI2M0Ix
NTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUM0MUFDNzEyNjNDODgzMDAwNTRFOTQgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTkwQzFFRTEyNjRGRDUwMDAzRTQ0RDQgLyogRmluZE9wdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBOTBDMUY0MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMyMzcxMjY1MDcxNzAwM0U0NEQ0IC8qIFBh
Z2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzJBMzEyNjUwQzYwMDAzRTQ0RDQg
LyogRmluZFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzU3NEU2MzEyNjdEMDgw
MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNTc1
MDk3MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOTEwMTBBMTI2OEM4Q0EwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9y
V2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0yMzQyLDExICsyMzYwLDEzIEBACiAJ
CQkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNCRDM5MTQxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNERDFGRDEyNUU1OUYzMDA0NTE1RTYgLyog
V2ViRmluZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzU3NDRFRjEyNjM4RkIzMDA2
RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzQxQUM4MTI2
M0M4ODMwMDA1NEU5NCAvKiBCaW5hcnlTZW1hcGhvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE5MEMxRjUxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBOTBDMjM4MTI2NTA3MTcwMDNFNDRENCAvKiBQYWdlT3ZlcmxheS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTkwQzJBNDEyNjUwQzYwMDAzRTQ0RDQgLyogRmluZFBhZ2VPdmVy
bGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBC
YWNraW5nU3RvcmVDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzU3NTA5ODEyNjhGM0M2MDA2
RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTkx
MDA3MjEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTkxMDEwQjEyNjhDOENBMDAxODQyRjUgLyogRmluZEluZGljYXRvcldpbmRvdy5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA2OTg5MykKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MTYsMTIgKzUxNiwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6
c2VsZWN0SXRlbVdyaXRpbmdECiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUoY2xpZW50KTsK
KyAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQogCiBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKGNsaWVudCk7CisgICAg
cmV0dXJuIFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKIH0KIAog
UGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUhUTUxQ
YXJzZXJRdWlya3MoKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDE4ICsyMSwyNSBAQAogCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudUNs
aWVudC5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBXZWJQb3B1cE1lbnU6OmNyZWF0ZShXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBXZWJQ
b3B1cE1lbnU6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudShjbGllbnQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudShwYWdlLCBjbGllbnQpKTsKIH0KIAotV2Vi
UG9wdXBNZW51OjpXZWJQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
CitXZWJQb3B1cE1lbnU6OldlYlBvcHVwTWVudShXZWJQYWdlKiBwYWdlLCBQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXBDbGllbnQoY2xpZW50KQorICAgICwgbV9wYWdlKHBh
Z2UpCiB7CiB9CiAKQEAgLTQwLDE5ICs0Nyw2NiBAQCBXZWJQb3B1cE1lbnU6On5XZWJQb3B1cE1l
bnUoKQogewogfQogCi0KIHZvaWQgV2ViUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKIHsK
ICAgICBtX3BvcHVwQ2xpZW50ID0gMDsKIH0KIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3LCBpbnQg
aW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3
SW5kZXgpCit7CisgICAgaWYgKCFtX3BvcHVwQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICBpZiAobmV3SW5kZXggPj0gMCkK
KyAgICAgICAgbV9wb3B1cENsaWVudC0+dmFsdWVDaGFuZ2VkKG5ld0luZGV4KTsKK30KKworVmVj
dG9yPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBNZW51Ojpwb3B1bGF0ZUl0ZW1zKCkKK3sKKyAgICBz
aXplX3Qgc2l6ZSA9IG1fcG9wdXBDbGllbnQtPmxpc3RTaXplKCk7CisKKyAgICBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiBpdGVtczsKKyAgICBpdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCisgICAgICAgICAgICBpdGVt
cy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6U2VwZXJhdG9yKSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzdHlsaW5nIHRo
ZSBmb250LgorICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzdHlsaW5nIHRo
ZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KKyAgICAgICAgICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIGN1c3RvbWl6ZSB0ZXh0IGNvbG9yIHdoZW4gYW4gaXRlbSBpcyBoaWdo
bGlnaHRlZC4KKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJ
dGVtOjpJdGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRl
bVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9w
b3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSkpOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGl0ZW1zOworfQorCit2b2lkIFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0
JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKIHsKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHByb2JhYmx5IGluZm9ybSB0aGUgY2xpZW50IHRvIGFsc28gY2xvc2UgdGhlIG1lbnUu
CisgICAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gaXRlbXMgPSBwb3B1bGF0ZUl0ZW1zKCk7CiAKKyAg
ICBpZiAoaXRlbXMuaXNFbXB0eSgpIHx8ICFtX3BhZ2UpIHsKKyAgICAgICAgbV9wb3B1cENsaWVu
dC0+cG9wdXBEaWRIaWRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhZ2Ut
PnNldEFjdGl2ZVBvcHVwTWVudSh0aGlzKTsKKworICAgIC8vIE1vdmUgdG8gcGFnZSBjb29yZGlu
YXRlcworICAgIEludFJlY3QgcGFnZUNvb3JkaW5hdGVzKHZpZXctPmNvbnRlbnRzVG9XaW5kb3co
cmVjdC5sb2NhdGlvbigpKSwgcmVjdC5zaXplKCkpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51
KHBhZ2VDb29yZGluYXRlcywgaXRlbXMsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViUG9wdXBNZW51OjpoaWRlKCkKIHsKKyAgICBpZiAoIW1fcGFnZSB8fCAhbV9wb3B1
cENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZXRBY3RpdmVQb3B1cE1lbnUoMCk7CiB9
CiAKIHZvaWQgV2ViUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCShyZXZpc2lv
biA2OTg5MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1l
bnUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTEgQEAKICNpZm5kZWYgV2ViUG9wdXBN
ZW51X2gKICNkZWZpbmUgV2ViUG9wdXBNZW51X2gKIAorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CkBAIC0zMSwyMCArMzQs
MjkgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBvcHVwSXRlbTsKKwogY2xhc3MgV2ViUG9wdXBNZW51IDog
cHVibGljIFdlYkNvcmU6OlBvcHVwTWVudSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51PiBjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51PiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCopOwogICAgIH5XZWJQb3B1cE1lbnUoKTsKIAorICAgIHZvaWQgZGlz
Y29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3RlZEluZGV4KGludCBuZXdJbmRleCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KTsKICAgICB2
aXJ0dWFsIHZvaWQgaGlkZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAg
V2ViUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOworICAgIFdlYlBvcHVwTWVu
dShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CisKKyAgICBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiBwb3B1bGF0ZUl0ZW1zKCk7CiAKICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIG1fcG9wdXBDbGllbnQ7CisgICAgV2ViUGFnZSogbV9wYWdlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAkocmV2aXNpb24gNjk4OTMpCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMTkgKzIyLDIxIEBACiAKICNpbmNsdWRlICJXZWJTZWFyY2hQ
b3B1cE1lbnUuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVudT4gV2ViU2VhcmNoUG9wdXBNZW51
OjpjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPFdl
YlNlYXJjaFBvcHVwTWVudT4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSwgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJTZWFyY2hQb3B1cE1lbnUoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJT
ZWFyY2hQb3B1cE1lbnUocGFnZSwgY2xpZW50KSk7CiB9CiAKLVdlYlNlYXJjaFBvcHVwTWVudTo6
V2ViU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAg
IDogbV9wb3B1cChXZWJQb3B1cE1lbnU6OmNyZWF0ZShjbGllbnQpKQorV2ViU2VhcmNoUG9wdXBN
ZW51OjpXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSogcGFnZSwgUG9wdXBNZW51Q2xpZW50KiBj
bGllbnQpCisgICAgOiBtX3BvcHVwKFdlYlBvcHVwTWVudTo6Y3JlYXRlKHBhZ2UsIGNsaWVudCkp
CiB7CiB9CiAKLVdlYkNvcmU6OlBvcHVwTWVudSogV2ViU2VhcmNoUG9wdXBNZW51Ojpwb3B1cE1l
bnUoKQorUG9wdXBNZW51KiBXZWJTZWFyY2hQb3B1cE1lbnU6OnBvcHVwTWVudSgpCiB7CiAgICAg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCShyZXZpc2lvbiA2OTg5
MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1l
bnUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViU2VhcmNoUG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU2VhcmNoUG9wdXBNZW51
PiBjcmVhdGUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU2VhcmNoUG9wdXBNZW51PiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgp
OwogICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CkBAIC0zNiw3
ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRl
OgotICAgIFdlYlNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKKyAg
ICBXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
OwogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudT4gbV9wb3B1cDsKIH07CkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNjk4OTMpCisrKyBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSAr
NDgsMTAgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJX
ZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
b2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0yNjIsOCAr
MjYzLDEyIEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQogICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmpl
Y3RlZEJ1bmRsZSgpLT53aWxsRGVzdHJveVBhZ2UodGhpcyk7CiAKLSAgICBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CisgICAgaWYgKG1fYWN0
aXZlUG9wdXBNZW51KSB7CisgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51LT5kaXNjb25uZWN0RnJv
bVBhZ2UoKTsKKyAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworICAgIH0KIAorICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRldGFjaEZyb21QYXJlbnQoKTsKICAg
ICBtX3BhZ2UuY2xlYXIoKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZVdlYlBh
Z2UobV9wYWdlSUQpOwpAQCAtNzc3LDYgKzc4MiwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlbW92
ZUVkaXRDb21tYW5kKHVpbnQ2CiAgICAgcmVtb3ZlV2ViRWRpdENvbW1hbmQoY29tbWFuZElEKTsK
IH0KIAordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVQb3B1cE1lbnUoV2ViUG9wdXBNZW51KiBtZW51
KQoreworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gbWVudTsKK30KKwogdm9pZCBXZWJQYWdlOjpm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBmaW5kRGlyZWN0aW9uLCB1
aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TnVtTWF0Y2hlcykKIHsKICAgICBtX2Zp
bmRDb250cm9sbGVyLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kRGlyZWN0aW9u
PihmaW5kRGlyZWN0aW9uKSwgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KGZpbmRPcHRpb25zKSwg
bWF4TnVtTWF0Y2hlcyk7CkBAIC03OTQsNyArODA0LDE3IEBAIHZvaWQgV2ViUGFnZTo6Y291bnRT
dHJpbmdNYXRjaGVzKGNvbnN0IFMKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb3VudFN0cmluZ01hdGNoZXMo
c3RyaW5nLCBudW1NYXRjaGVzKSwgbV9wYWdlSUQpOwogfQotICAgIAorCit2b2lkIFdlYlBhZ2U6
OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRl
eCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7Cisg
ICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCisKICNpZiBQTEFURk9STShNQUMpCiB2b2lk
IFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKIHsKSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDY5ODkzKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2
ICs3MCw3IEBAIGNsYXNzIFdlYkV2ZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJLZXli
b2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYlBvcHVwTWVudTsKIGNs
YXNzIFdlYldoZWVsRXZlbnQ7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGNsYXNzIFdlYlRv
dWNoRXZlbnQ7CkBAIC0xMTAsNiArMTExLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlV2Vi
RWRpdENvbW1hbmQodWludDY0X3QpOwogICAgIGJvb2wgaXNJblJlZG8oKSBjb25zdCB7IHJldHVy
biBtX2lzSW5SZWRvOyB9CiAKKyAgICB2b2lkIHNldEFjdGl2ZVBvcHVwTWVudShXZWJQb3B1cE1l
bnUqKTsKKwogICAgIC8vIC0tIENhbGxlZCBmcm9tIFdlYlByb2Nlc3MuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIApAQCAtMjI3LDYgKzIzMCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiwgYm9vbCBjYXNlSW5zZW5zaXRpdmUsIHVpbnQzMl90IG1heE51bU1hdGNoZXMp
OwogCisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGlu
dDMyX3QgbmV3SW5kZXgpOworCiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAg
ICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogCkBAIC0yNjMsNiArMjY4LDggQEAgcHJp
dmF0ZToKICAgICBGaW5kQ29udHJvbGxlciBtX2ZpbmRDb250cm9sbGVyOwogICAgIE93blB0cjxQ
YWdlT3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsKIAorICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1f
YWN0aXZlUG9wdXBNZW51OworCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiB9OwogCkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDY5ODkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSB7CiAgICAgRmluZFN0cmluZyhXVEY6OlN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmREaXJl
Y3Rpb24sIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhOdW1NYXRjaGVzKQogICAg
IEhpZGVGaW5kVUkoKQogICAgIENvdW50U3RyaW5nTWF0Y2hlcyhXVEY6OlN0cmluZyBzdHJpbmcs
IGJvb2wgY2FzZUluc2Vuc2l0aXZlLCB1bnNpZ25lZCBtYXhOdW1NYXRjaGVzKQotICAgIAorCisg
ICAgIyBQb3B1cCBtZW51LgorICAgIERpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1
cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CisKICAgICBTZXRXaW5kb3dSZXNpemVyU2l6ZShXZWJD
b3JlOjpJbnRTaXplIGludGVyc2VjdHNWaWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDog
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oJKHJldmlzaW9uIDY5ODkzKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlBvcHVwSXRlbS5j
cHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxTaGFyZWRcV2ViUG9wdXBJdGVtLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTkyMCw2ICsxOTI4LDE0IEBACiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Ncd2lu
XFdlYlBvcHVwTWVudVByb3h5V2luLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8
RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Ncd2luXFdlYlBvcHVwTWVudVBy
b3h5V2luLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxXZWJWaWV3LmNwcCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>