<?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>106269</bug_id>
          
          <creation_ts>2013-01-07 15:42:50 -0800</creation_ts>
          <short_desc>[WK2] Make SecItemShim messages work with any process</short_desc>
          <delta_ts>2013-01-07 16:22:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801744</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 15:42:50 -0800</bug_when>
    <thetext>SecItemShim is hardcoded into WebProcess and WebProcessProxy. We need it in NetworkProxy, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801760</commentid>
    <comment_count>1</comment_count>
      <attachid>181586</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 15:54:55 -0800</bug_when>
    <thetext>Created attachment 181586
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801768</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 15:58:20 -0800</bug_when>
    <thetext>Attachment 181586 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp:93:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801775</commentid>
    <comment_count>3</comment_count>
      <attachid>181591</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 16:05:56 -0800</bug_when>
    <thetext>Created attachment 181591
with a typo fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801780</commentid>
    <comment_count>4</comment_count>
      <attachid>181592</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 16:08:40 -0800</bug_when>
    <thetext>Created attachment 181592
...and another DerivedSource.make fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801782</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 16:12:29 -0800</bug_when>
    <thetext>Attachment 181592 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp:93:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801793</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 16:22:29 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/139009&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181586</attachid>
            <date>2013-01-07 15:54:55 -0800</date>
            <delta_ts>2013-01-07 16:05:56 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>Shim.txt</filename>
            <type>text/plain</type>
            <size>38478</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE1ha2UgU2VjSXRl
bVNoaW0gbWVzc2FnZXMgd29yayB3aXRoIGFueSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2VjSXRlbVNoaW0gYW5kIFNlY0l0ZW1T
aGltUHJveHkgY2xhc3NlcyB0byBtYW5hZ2UgbWVzc2FnZSBzZW5kaW5nLCBhbmQgbW92ZWQKKyAg
ICAgICAgcmVsYXZhbnQgY29kZSBmcm9tIFdlYlByb2Nlc3MoUHJveHkpLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViUHJvY2Vzc1Byb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFNoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW06OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpTZWNJ
dGVtU2hpbSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpzZWNJdGVtUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbTo6aW5zdGFsbCk6CisgICAgICAgIChXZWJL
aXQ6OlNlY0l0ZW1TaGltOjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6
CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW1Qcm94eTo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVNoaW1Q
cm94eTo6U2VjSXRlbVNoaW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZVNlY0l0ZW1S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUpOgorICAg
ICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNlY0l0ZW1TaGltUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9u
V29ya1F1ZXVlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5t
bToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW06CisgICAgICAgIChXZWJL
aXQ6OnNlbmRTZXFJdGVtUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplUHJvY2Vzcyk6CisKIDIwMTMtMDEtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2luZG93cyBmaWxlcyBmcm9tIFdlYktpdDIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTM5MDAzKQorKysgU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBcCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBSZW1vdGVMYXllclRy
ZWVIb3N0IFwKKyAgICBTZWNJdGVtU2hpbSBcCisgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAg
V2ViQ29udGV4dCBcCiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyIFwKICAgICBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eSBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmgJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTQgQEAgZW51
bSBNZXNzYWdlQ2xhc3MgewogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgYSB3ZWIgcHJvY2VzcyAo
c29vbiB0aGUgbmV0d29yayBwcm9jZXNzKSB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBNZXNzYWdl
Q2xhc3NDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSwKICNlbmRpZgorCisjaWYgVVNFKFNFQ1VS
SVRZX0ZSQU1FV09SSykKKyAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IGEgd2ViIHByb2Nlc3Mgb3Ig
YSBuZXR3b3JrIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgTWVzc2FnZUNsYXNzU2Vj
SXRlbVNoaW1Qcm94eSwKKworICAgIC8vIFJlc3BvbnNlcyB0byBTZWNJdGVtU2hpbVByb3h5IHRo
YXQgYXJlIHNlbnQgYmFjay4KKyAgICBNZXNzYWdlQ2xhc3NTZWNJdGVtU2hpbSwKKyNlbmRpZgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0cyB7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNlY0l0ZW1TaGltLmgiCisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQor
CisjaW5jbHVkZSAiU2VjSXRlbVNoaW1NZXRob2RzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitTZWNJdGVtU2hpbSYgU2VjSXRlbVNoaW06OnNoYXJlZCgpCit7CisgICAgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljKFNlY0l0ZW1TaGltKiwgcHJveHkgPSBuZXcgU2VjSXRlbVNoaW0pOwor
ICAgIHJldHVybiAqcHJveHk7Cit9CisKK1NlY0l0ZW1TaGltOjpTZWNJdGVtU2hpbSgpCit7Cit9
CisKK3ZvaWQgU2VjSXRlbVNoaW06OnNlY0l0ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXNwb25z
ZSkKK3sKKyAgICBkaWRSZWNlaXZlU2VjSXRlbVJlc3BvbnNlKHJlcXVlc3RJRCwgcmVzcG9uc2Up
OworfQorCit2b2lkIFNlY0l0ZW1TaGltOjppbnN0YWxsKCkKK3sKKyAgICBpbml0aWFsaXplU2Vj
SXRlbVNoaW0oKTsKK30KKwordm9pZCBTZWNJdGVtU2hpbTo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIs
IGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpCit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBD
OjpNZXNzYWdlQ2xhc3NTZWNJdGVtU2hpbT4oKSkgeworICAgICAgICBkaWRSZWNlaXZlU2VjSXRl
bVNoaW1NZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlciwgZGlkSGFuZGxlTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisK
K30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGlt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWNJ
dGVtU2hpbV9oCisjZGVmaW5lIFNlY0l0ZW1TaGltX2gKKworI2lmIFVTRShTRUNVUklUWV9GUkFN
RVdPUkspCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBTZWNJdGVtUmVzcG9uc2VEYXRhOworCitjbGFzcyBTZWNJdGVtU2hpbSA6IHB1Ymxp
YyBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CitXVEZfTUFLRV9OT05DT1BZQUJM
RShTZWNJdGVtU2hpbSk7CitwdWJsaWM6CisgICAgc3RhdGljIFNlY0l0ZW1TaGltJiBzaGFyZWQo
KTsKKworICAgIHZvaWQgaW5zdGFsbCgpOworCitwcml2YXRlOgorICAgIFNlY0l0ZW1TaGltKCk7
CisKKyAgICAvLyBRdWV1ZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2Up
OworCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFNlY0l0ZW1TaGltTWVzc2FnZVJl
Y2VpdmVyLmNwcC4KKyAgICB2b2lkIGRpZFJlY2VpdmVTZWNJdGVtU2hpbU1lc3NhZ2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBib29sJiBkaWRIYW5kbGVNZXNzYWdlKTsKKworICAg
IHZvaWQgc2VjSXRlbVJlc3BvbnNlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXNwb25zZURhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2VuZGlmIC8v
IFNlY0l0ZW1TaGltX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNo
aW0ubWVzc2Flcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Nl
Y0l0ZW1TaGltLm1lc3NhZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NlY0l0ZW1TaGltLm1lc3NhZXMuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4g
U2VjSXRlbVNoaW0geworCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyAgICBTZWNJdGVt
UmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEg
cmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyNlbmRpZgorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEwIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYg
VVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyNpbmNsdWRlICJTZWNJdGVtU2hpbVByb3h5LmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CkBAIC01MDIsNiArNTA2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcKIHsKICAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5j
aGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JL
KQorICAgIGNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQoJlNlY0l0ZW1TaGltUHJveHk6OnNo
YXJlZCgpKTsKKyNlbmRpZgorCiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCiAgICAgLy8gVGVsbCB0aGUgY29udGV4dCB0aGF0
IHdlIGZpbmlzaGVkIGxhdW5jaGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmIFVTRShT
RUNVUklUWV9GUkFNRVdPUkspCi1jbGFzcyBTZWNJdGVtUmVxdWVzdERhdGE7Ci1jbGFzcyBTZWNJ
dGVtUmVzcG9uc2VEYXRhOwotI2VuZGlmCi0KIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBjbGFz
cyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKQEAgLTE1MywxMCAr
MTQ4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4pOwogI2VuZGlmCiAKLSNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQot
ICAgIHZvaWQgc2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJik7Ci0jZW5kaWYKLQogICAgIC8vIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBXZWJDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMzkwMDMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSB7CiAgICAg
R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgdXJsLCBXVEY6OlN0
cmluZyBuYW1lKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxh
eWVkCiAjZW5kaWYKIAotI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCi0gICAgU2VjSXRlbVJl
cXVlc3QodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1
ZXN0KSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCi0jZW5kaWYKLQogfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VjSXRlbVNoaW1Qcm94eS5oIgorCisjaWYgVVNFKFNF
Q1VSSVRZX0ZSQU1FV09SSykKKworI2luY2x1ZGUgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgorI2lu
Y2x1ZGUgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKKyNpbmNsdWRlICJTZWNJdGVtU2hpbU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjSXRlbS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworU2VjSXRlbVNoaW1Qcm94eSYgU2VjSXRlbVNoaW1Qcm94eTo6c2hhcmVkKCkKK3sKKyAg
ICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoU2VjSXRlbVNoaW1Qcm94eSosIHByb3h5ID0g
bmV3IFNlY0l0ZW1TaGltUHJveHkpOworICAgIHJldHVybiAqcHJveHk7Cit9CisKK1NlY0l0ZW1T
aGltUHJveHk6OlNlY0l0ZW1TaGltUHJveHkoKQoreworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVT
ZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCkKK3sKKyAgICBTZWNJ
dGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlOworCisgICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUoKSkg
eworICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTZWNJdGVtUmVxdWVz
dERhdGE6OkNvcHlNYXRjaGluZzogeworICAgICAgICBDRlR5cGVSZWYgcmVzdWx0T2JqZWN0ID0g
MDsKKyAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcocmVx
dWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVt
UmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFkb3B0Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpBZGQ6
IHsKKyAgICAgICAgQ0ZUeXBlUmVmIHJlc3VsdE9iamVjdCA9IDA7CisgICAgICAgIE9TU3RhdHVz
IHJlc3VsdENvZGUgPSBTZWNJdGVtQWRkKHJlcXVlc3QucXVlcnkoKSwgJnJlc3VsdE9iamVjdCk7
CisgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCBhZG9w
dENGKHJlc3VsdE9iamVjdCkuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VXBkYXRlOiB7CisgICAgICAgIE9TU3RhdHVzIHJlc3Vs
dENvZGUgPSBTZWNJdGVtVXBkYXRlKHJlcXVlc3QucXVlcnkoKSwgcmVxdWVzdC5hdHRyaWJ1dGVz
VG9NYXRjaCgpKTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3Vs
dENvZGUsIDApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNlY0l0ZW1SZXF1
ZXN0RGF0YTo6RGVsZXRlOiB7CisgICAgICAgIE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVt
RGVsZXRlKHJlcXVlc3QucXVlcnkoKSk7CisgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3Bv
bnNlRGF0YShyZXN1bHRDb2RlLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKwor
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlY0l0ZW1TaGltOjpTZWNJdGVtUmVzcG9u
c2UocmVxdWVzdElELCByZXNwb25zZSksIDApOworfQorCitzdGF0aWMgdm9pZCBkaXNwYXRjaEZ1
bmN0aW9uT25RdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCBjb25zdCBGdW5jdGlvbjx2b2lk
ICgpPiYgZnVuY3Rpb24pCit7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgZGlzcGF0Y2hfYXN5
bmMocXVldWUsIGZ1bmN0aW9uKTsKKyNlbHNlCisgICAgRnVuY3Rpb248dm9pZCAoKT4qIGZ1bmN0
aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KGZ1bmN0aW9uKTsKKyAgICBkaXNwYXRjaF9h
c3luYyhxdWV1ZSwgXnsKKyAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKKyAgICAgICAgZGVsZXRl
IGZ1bmN0aW9uUHRyOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU2VjSXRlbVNoaW1Qcm94
eTo6c2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCit7CisgICAg
Ly8gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlIHRvIGJlIGhl
bGQgdXAsIHdlIGRvIGFsbAorICAgIC8vIGtleWNoYWluIGludGVyYWN0aW9uIHdvcmsgb24gYSBn
bG9iYWwgZGlzcGF0Y2ggcXVldWUuCisgICAgZGlzcGF0Y2hfcXVldWVfdCBrZXljaGFpbldvcmtR
dWV1ZSA9IGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCk7CisgICAgZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUoa2V5Y2hhaW5Xb3JrUXVl
dWUsIGJpbmQoaGFuZGxlU2VjSXRlbVJlcXVlc3QsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9u
Pihjb25uZWN0aW9uKSwgcmVxdWVzdElELCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQgU2VjSXRlbVNo
aW1Qcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpCit7
CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NTZWNJdGVtU2hpbVBy
b3h5PigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVTZWNJdGVtU2hpbVByb3h5TWVzc2FnZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIsIGRpZEhhbmRs
ZU1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBV
U0UoU0VDVVJJVFlfRlJBTUVXT1JLKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9TZWNJdGVtU2hpbVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VjSXRlbVNoaW1Qcm94eV9oCisjZGVmaW5l
IFNlY0l0ZW1TaGltUHJveHlfaAorCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlY0l0
ZW1SZXF1ZXN0RGF0YTsKKworY2xhc3MgU2VjSXRlbVNoaW1Qcm94eSA6IHB1YmxpYyBDb3JlSVBD
OjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShTZWNJdGVt
U2hpbVByb3h5KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VjSXRlbVNoaW1Qcm94eSYgc2hhcmVk
KCk7CisKK3ByaXZhdGU6CisgICAgU2VjSXRlbVNoaW1Qcm94eSgpOworCisgICAgLy8gUXVldWVD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImLCBib29sJiBkaWRIYW5kbGVNZXNzYWdlKTsKKworICAgIC8vIEltcGxl
bWVudGVkIGluIGdlbmVyYXRlZCBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcC4K
KyAgICB2b2lkIGRpZFJlY2VpdmVTZWNJdGVtU2hpbVByb3h5TWVzc2FnZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCisgICAgdm9pZCBz
ZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2VuZGlmIC8vIFNlY0l0ZW1T
aGltUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hp
bVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBTZWNJdGVtU2hpbVByb3h5IHsKKworI2lmIFVTRShTRUNV
UklUWV9GUkFNRVdPUkspCisgICAgU2VjSXRlbVJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBX
ZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0KSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1
ZXVlCisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3NCArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAKLSNpbXBvcnQgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgotI2ltcG9ydCAi
U2VjSXRlbVJlc3BvbnNlRGF0YS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIKLSNpbXBvcnQgPFNlY3VyaXR5
L1NlY0l0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIGhhbmRsZVNl
Y0l0ZW1SZXF1ZXN0KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQotewotICAgIFNlY0l0
ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7Ci0KLSAgICBzd2l0Y2ggKHJlcXVlc3QudHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2Fz
ZSBTZWNJdGVtUmVxdWVzdERhdGE6OkNvcHlNYXRjaGluZzogewotICAgICAgICAgICAgQ0ZUeXBl
UmVmIHJlc3VsdE9iamVjdCA9IDA7Ci0gICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0g
U2VjSXRlbUNvcHlNYXRjaGluZyhyZXF1ZXN0LnF1ZXJ5KCksICZyZXN1bHRPYmplY3QpOwotICAg
ICAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFkb3B0
Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpBZGQ6IHsKLSAgICAgICAgICAgIENG
VHlwZVJlZiByZXN1bHRPYmplY3QgPSAwOwotICAgICAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29k
ZSA9IFNlY0l0ZW1BZGQocmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKLSAgICAgICAg
ICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCBhZG9wdENGKHJl
c3VsdE9iamVjdCkuZ2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VXBkYXRlOiB7Ci0gICAgICAgICAgICBPU1N0
YXR1cyByZXN1bHRDb2RlID0gU2VjSXRlbVVwZGF0ZShyZXF1ZXN0LnF1ZXJ5KCksIHJlcXVlc3Qu
YXR0cmlidXRlc1RvTWF0Y2goKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNw
b25zZURhdGEocmVzdWx0Q29kZSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpEZWxldGU6IHsKLSAgICAgICAgICAg
IE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtRGVsZXRlKHJlcXVlc3QucXVlcnkoKSk7Ci0g
ICAgICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgMCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlY0l0ZW1SZXNwb25zZShyZXF1ZXN0SUQsIHJl
c3BvbnNlKSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpc3BhdGNoRnVuY3Rpb25PblF1ZXVlKGRp
c3BhdGNoX3F1ZXVlX3QgcXVldWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikK
LXsKLSNpZiBDT01QSUxFUihDTEFORykKLSAgICBkaXNwYXRjaF9hc3luYyhxdWV1ZSwgZnVuY3Rp
b24pOwotI2Vsc2UKLSAgICBGdW5jdGlvbjx2b2lkICgpPiogZnVuY3Rpb25QdHIgPSBuZXcgRnVu
Y3Rpb248dm9pZCAoKT4oZnVuY3Rpb24pOwotICAgIGRpc3BhdGNoX2FzeW5jKHF1ZXVlLCBeewot
ICAgICAgICAoKmZ1bmN0aW9uUHRyKSgpOwotICAgICAgICBkZWxldGUgZnVuY3Rpb25QdHI7Ci0g
ICAgfSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlY0l0ZW1SZXF1ZXN0
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQotewotICAgIC8vIFNpbmNlIHdlIGRvbid0
IHdhbnQgdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZSB0byBiZSBoZWxkIHVwLCB3ZSBkbyBhbGwK
LSAgICAvLyBrZXljaGFpbiBpbnRlcmFjdGlvbiB3b3JrIG9uIGEgZ2xvYmFsIGRpc3BhdGNoIHF1
ZXVlLgotICAgIGRpc3BhdGNoX3F1ZXVlX3Qga2V5Y2hhaW5Xb3JrUXVldWUgPSBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApOwotICAg
IGRpc3BhdGNoRnVuY3Rpb25PblF1ZXVlKGtleWNoYWluV29ya1F1ZXVlLCBiaW5kKGhhbmRsZVNl
Y0l0ZW1SZXF1ZXN0LCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4oY29ubmVjdGlvbiksIHJl
cXVlc3RJRCwgcmVxdWVzdCkpOwotfQotCiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIFtXS0Z1bGxLZXlib2FyZEFjY2Vzc1dh
dGNoZXIgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZF07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzkwMDMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEwMzUsNiArMTAzNSwxNCBAQAogCQlFMTdCRjk5NjE0RDBBNzNFMDBB
NUEwNjkgLyogTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCRjk5NTE0RDBBNzNFMDBBNUEwNjkgLyogTmV0
c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggKi87IH07CiAJCUUxN0JGOTk4MTREMEFBODMwMEE1QTA2
OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCRjk5NzE0RDBBQTgzMDBBNUEwNjkgLyogTmV0c2Nh
cGVTYW5kYm94RnVuY3Rpb25zLm1tICovOyB9OwogCQlFMThDOTJGNDEyREI5RTcxMDBDRjJBRUIg
LyogUHJpbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovOyB9Owor
CQlFMThFNjkwQjE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkwOTE2OUI1NjNG
MDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgKi87IH07CisJCUUxOEU2OTBDMTY5QjU2
M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkwQTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1Qcm94eS5oICovOyB9OworCQlFMThFNjkxNTE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE4RTY5MTExNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTE4RTY5MTYxNjlCNjY3QjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2Vz
LmggKi87IH07CisJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJv
eHlNZXNzYWdlcy5oICovOyB9OworCQlFMThFNjk0OTE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRl
bVNoaW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RTY5NDcxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmNwcCAqLzsgfTsKKwkJRTE4
RTY5NEExNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjk0ODE2OUI3N0M4MDA5QjY2NzAgLyog
U2VjSXRlbVNoaW0uaCAqLzsgfTsKIAkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktp
dEltcG9ydHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmggKi87IH07CiAJCUUx
OTU4MkQ2MTUzQ0MwNTQwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NTgyRDQxNTNDQzA1MzAwQjYwODc1
IC8qIFBERktpdEltcG9ydHMubW0gKi87IH07CiAJCUUxOTY3RTM2MTUwQUI1RDUwMEM3MzE2OSAv
KiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAvKiBj
b20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgKi87IH07CkBAIC0yMzM5LDYgKzIzNDcs
MTYgQEAKIAkJRTE3QkY5OTcxNEQwQUE4MzAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0
aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHNjYXBl
U2FuZGJveEZ1bmN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QkY5
OTkxNEQwQ0JGMTAwQTVBMDY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYi5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Mu
c2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEM5MkYzMTJEQjlFNzEwMENG
MkFFQiAvKiBQcmludEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJpbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MDkx
NjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVNoaW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxOEU2OTBBMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MEQxNjlCNTdERjAwOUI2Njcw
IC8qIFNlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTE4RTY5MEYxNjlCNTkyODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLm1lc3NhZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VjSXRlbVNoaW0ubWVzc2Flcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MTExNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVNoaW1NZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTE4RTY5NDcxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1TaGltLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5NDgxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZL
aXRJbXBvcnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERktpdEltcG9y
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NTgyRDQxNTNDQzA1MzAwQjYw
ODc1IC8qIFBERktpdEltcG9ydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQREZLaXRJbXBvcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTk2N0UzNTE1MEFCNUQ1MDBDNzMxNjkgLyogY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNz
LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vz
cy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MzUsNiArMzg1Myw5IEBACiAJ
CQkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovLAog
CQkJCTUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAq
LywKIAkJCQk1MUQxMzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5o
ICovLAorCQkJCUUxOEU2OTBGMTY5QjU5MjgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5tZXNzYWVz
LmluICovLAorCQkJCUUxOEU2OTQ3MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5jcHAg
Ki8sCisJCQkJRTE4RTY5NDgxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmggKi8sCiAJ
CQkJQkNFMjMyNjIxMjJDNkNGMzAwRDVDMzVBIC8qIFdlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bSAqLywKIAkJCQlCQzExMUI1QjExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lmgg
Ki8sCiAJCQkJQkMxMTFCNUMxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5tbSAq
LywKQEAgLTQxMzksNiArNDE2MCw5IEBACiAJCQkJMUFBM0Q3NUExNjUxQjQ0RjAwODcxM0QwIC8q
IFJlbW90ZUxheWVyVHJlZUhvc3QuaCAqLywKIAkJCQkxQUEzRDc1RDE2NTFCNUM1MDA4NzEzRDAg
LyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQUEzRDc1OTE2NTFC
NDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSAqLywKKwkJCQlFMThFNjkwRDE2
OUI1N0RGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlF
MThFNjkwOTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgKi8sCisJCQkJ
RTE4RTY5MEExNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCAqLywKIAkJCQkx
QUE0MTdFRDEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJNYWMubW0gKi8sCiAJCQkJMUFG
MDVEODUxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkuaCAqLywKIAkJCQkxQUYwNUQ4NDE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5tbSAqLywKQEAgLTQzMTUsNiArNDMzOSwxMCBAQAogCQkJCTFB
OEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJ
MUFBM0Q3NUYxNjUxQjdEMzAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCTFBQTNENzYwMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXll
clRyZWVIb3N0TWVzc2FnZXMuaCAqLywKKwkJCQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUUxOEU2OTEyMTY5QjY2N0Iw
MDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCisJCQkJRTE4RTY5MTMxNjlCNjY3
QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAq
LywKIAkJCQlFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTFFREZEQjIxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJCUUxRURGREIzMTYyOEFENzMwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtNTAzOCw3ICs1MDY2LDExIEBACiAJCQkJQkNGNERFMjMxNjhFNEJENTAwQzk0QUZDIC8qIE5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNERFMjUxNjhG
QTQ0ODAwQzk0QUZDIC8qIFdlYkNvbnRleHRTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzlCQTUwNTE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMThFNjkxNjE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2
NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5
QkE1MDkxNjk5MUMzQzAwRTQ0NjE2IC8qIENoaWxkUHJvY2Vzc01haW4uaCBpbiBIZWFkZXJzICov
LAorCQkJCUUxOEU2OTRBMTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC02MDEzLDcgKzYwNDUsMTEgQEAKIAkJCQkyOTg5QTQxMTE2N0QxODM0MDA0Rjk2
RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFB
NTA1RjkxNjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM5QkE1MDQxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTE1MTY5QjY2N0IwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlCQTUwODE2OTkxQzNDMDBFNDQ2MTYgLyogQ2hp
bGRQcm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTQ5MTY5Qjc3QzgwMDlC
NjY3MCAvKiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDYgKzEyMCwxMCBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5o
IgogI2VuZGlmCiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorI2luY2x1ZGUgIlNlY0l0
ZW1TaGltLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0yMDgsNiArMjEyLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ28KICAgICBjb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCgmbV9ldmVu
dERpc3BhdGNoZXIpOwogICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KHRoaXMpOwogCisj
aWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyAgICBjb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVu
dCgmU2VjSXRlbVNoaW06OnNoYXJlZCgpKTsKKyNlbmRpZgorCiAgICAgbV93ZWJDb25uZWN0aW9u
ID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMzkwMDMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
OTIsMTAgKzkyLDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBjbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFVTRShTRUNVUklUWV9G
UkFNRVdPUkspCi1jbGFzcyBTZWNJdGVtUmVzcG9uc2VEYXRhOwotI2VuZGlmCi0KICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogI2Vu
ZGlmCkBAIC0yNzAsMTAgKzI2Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBvc3RJbmplY3Rl
ZEJ1bmRsZU1lc3NhZ2UoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZURhdGEp
OwogCi0jaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKLSAgICB2b2lkIHNlY0l0ZW1SZXNwb25z
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVt
UmVzcG9uc2VEYXRhJik7Ci0jZW5kaWYKLQogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIE9WRVJS
SURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMCArOTgsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKIAogICAgIFBvc3RJbmplY3RlZEJ1bmRsZU1lc3Nh
Z2UoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlRGF0YSk7CiAKLSNpZiBVU0UoU0VDVVJJ
VFlfRlJBTUVXT1JLKQotICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdl
YktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25R
dWV1ZQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKGJvb2wgZmxhZyk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0JKHJldmlzaW9uIDEzOTAwMykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCAiU2VjSXRlbVJlcXVlc3RE
YXRhLmgiCiAjaW1wb3J0ICJTZWNJdGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzU2hpbS5oIgogI2lt
cG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBkaWRSZWNlaXZlU2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IAogc3RhdGljIFBh
c3NPd25QdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlcUl0ZW1SZXF1ZXN0KFNlY0l0ZW1S
ZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRp
Y3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IGdlbmVyYXRlU2VjSXRlbVJlcXVlc3RJRCgpOwotICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNl
Y0l0ZW1SZXF1ZXN0KHJlcXVlc3RJRCwgU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RUeXBlLCBx
dWVyeSwgYXR0cmlidXRlc1RvTWF0Y2gpKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6OlNlY0l0
ZW1SZXF1ZXN0KHJlcXVlc3RJRCwgU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RUeXBlLCBxdWVy
eSwgYXR0cmlidXRlc1RvTWF0Y2gpKSwgMCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgcmV0dXJuIHJlc3BvbnNlTWFwKCkud2FpdEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJl
dmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2ltcG9ydCAiQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW1w
b3J0ICJTZWNJdGVtU2hpbU1ldGhvZHMuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNz
V2F0Y2hlci5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgi
CkBAIC00OCw2ICs0NywxMCBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxz
dGRpby5oPgogCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyNpbXBvcnQgIlNlY0l0ZW1T
aGltLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQogI2ltcG9y
dCA8cHdkLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KQEAgLTMwOCw3ICszMTEsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoYwogdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYpCiB7CiAgICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7Ci0gICAgaW5pdGlhbGl6
ZVNlY0l0ZW1TaGltKCk7CisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorICAgIFNlY0l0
ZW1TaGltOjpzaGFyZWQoKS5pbnN0YWxsKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCkBAIC0zMjAsOSArMzI2LDQgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6OnNlY0l0
ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXNwb25zZSkKLXsKLSAgICBkaWRSZWNlaXZlU2VjSXRl
bVJlc3BvbnNlKHJlcXVlc3RJRCwgcmVzcG9uc2UpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181591</attachid>
            <date>2013-01-07 16:05:56 -0800</date>
            <delta_ts>2013-01-07 16:08:40 -0800</delta_ts>
            <desc>with a typo fix</desc>
            <filename>Shim.txt</filename>
            <type>text/plain</type>
            <size>38484</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE1ha2UgU2VjSXRl
bVNoaW0gbWVzc2FnZXMgd29yayB3aXRoIGFueSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2VjSXRlbVNoaW0gYW5kIFNlY0l0ZW1T
aGltUHJveHkgY2xhc3NlcyB0byBtYW5hZ2UgbWVzc2FnZSBzZW5kaW5nLCBhbmQgbW92ZWQKKyAg
ICAgICAgcmVsYXZhbnQgY29kZSBmcm9tIFdlYlByb2Nlc3MoUHJveHkpLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViUHJvY2Vzc1Byb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFNoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW06OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpTZWNJ
dGVtU2hpbSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpzZWNJdGVtUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbTo6aW5zdGFsbCk6CisgICAgICAgIChXZWJL
aXQ6OlNlY0l0ZW1TaGltOjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6
CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW1Qcm94eTo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVNoaW1Q
cm94eTo6U2VjSXRlbVNoaW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZVNlY0l0ZW1S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUpOgorICAg
ICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNlY0l0ZW1TaGltUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9u
V29ya1F1ZXVlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5t
bToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW06CisgICAgICAgIChXZWJL
aXQ6OnNlbmRTZXFJdGVtUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplUHJvY2Vzcyk6CisKIDIwMTMtMDEtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2luZG93cyBmaWxlcyBmcm9tIFdlYktpdDIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTM5MDAzKQorKysgU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBcCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBSZW1vdGVMYXllclRy
ZWVIb3N0IFwKKyAgICBTZWNJdGVtU2hpbSBcCisgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAg
V2ViQ29udGV4dCBcCiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyIFwKICAgICBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eSBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmgJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTQgQEAgZW51
bSBNZXNzYWdlQ2xhc3MgewogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgYSB3ZWIgcHJvY2VzcyAo
c29vbiB0aGUgbmV0d29yayBwcm9jZXNzKSB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBNZXNzYWdl
Q2xhc3NDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSwKICNlbmRpZgorCisjaWYgVVNFKFNFQ1VS
SVRZX0ZSQU1FV09SSykKKyAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IGEgd2ViIHByb2Nlc3Mgb3Ig
YSBuZXR3b3JrIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgTWVzc2FnZUNsYXNzU2Vj
SXRlbVNoaW1Qcm94eSwKKworICAgIC8vIFJlc3BvbnNlcyB0byBTZWNJdGVtU2hpbVByb3h5IHRo
YXQgYXJlIHNlbnQgYmFjay4KKyAgICBNZXNzYWdlQ2xhc3NTZWNJdGVtU2hpbSwKKyNlbmRpZgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0cyB7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNlY0l0ZW1TaGltLmgiCisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQor
CisjaW5jbHVkZSAiU2VjSXRlbVNoaW1NZXRob2RzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitTZWNJdGVtU2hpbSYgU2VjSXRlbVNoaW06OnNoYXJlZCgpCit7CisgICAgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljKFNlY0l0ZW1TaGltKiwgcHJveHkgPSBuZXcgU2VjSXRlbVNoaW0pOwor
ICAgIHJldHVybiAqcHJveHk7Cit9CisKK1NlY0l0ZW1TaGltOjpTZWNJdGVtU2hpbSgpCit7Cit9
CisKK3ZvaWQgU2VjSXRlbVNoaW06OnNlY0l0ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXNwb25z
ZSkKK3sKKyAgICBkaWRSZWNlaXZlU2VjSXRlbVJlc3BvbnNlKHJlcXVlc3RJRCwgcmVzcG9uc2Up
OworfQorCit2b2lkIFNlY0l0ZW1TaGltOjppbnN0YWxsKCkKK3sKKyAgICBpbml0aWFsaXplU2Vj
SXRlbVNoaW0oKTsKK30KKwordm9pZCBTZWNJdGVtU2hpbTo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIs
IGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpCit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBD
OjpNZXNzYWdlQ2xhc3NTZWNJdGVtU2hpbT4oKSkgeworICAgICAgICBkaWRSZWNlaXZlU2VjSXRl
bVNoaW1NZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlciwgZGlkSGFuZGxlTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisK
K30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGlt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWNJ
dGVtU2hpbV9oCisjZGVmaW5lIFNlY0l0ZW1TaGltX2gKKworI2lmIFVTRShTRUNVUklUWV9GUkFN
RVdPUkspCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBTZWNJdGVtUmVzcG9uc2VEYXRhOworCitjbGFzcyBTZWNJdGVtU2hpbSA6IHB1Ymxp
YyBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CitXVEZfTUFLRV9OT05DT1BZQUJM
RShTZWNJdGVtU2hpbSk7CitwdWJsaWM6CisgICAgc3RhdGljIFNlY0l0ZW1TaGltJiBzaGFyZWQo
KTsKKworICAgIHZvaWQgaW5zdGFsbCgpOworCitwcml2YXRlOgorICAgIFNlY0l0ZW1TaGltKCk7
CisKKyAgICAvLyBRdWV1ZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2Up
OworCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFNlY0l0ZW1TaGltTWVzc2FnZVJl
Y2VpdmVyLmNwcC4KKyAgICB2b2lkIGRpZFJlY2VpdmVTZWNJdGVtU2hpbU1lc3NhZ2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBib29sJiBkaWRIYW5kbGVNZXNzYWdlKTsKKworICAg
IHZvaWQgc2VjSXRlbVJlc3BvbnNlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXNwb25zZURhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2VuZGlmIC8v
IFNlY0l0ZW1TaGltX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNo
aW0ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
ZWNJdGVtU2hpbS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvU2VjSXRlbVNoaW0ubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gU2VjSXRlbVNoaW0geworCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyAgICBTZWNJ
dGVtUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURh
dGEgcmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyNlbmRpZgorCit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNp
b24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEwIEBACiAjZW5kaWYKICNlbmRpZgogCisj
aWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyNpbmNsdWRlICJTZWNJdGVtU2hpbVByb3h5Lmgi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCkBAIC01MDIsNiArNTA2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hM
YXVuY2hpbmcKIHsKICAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxh
dW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVX
T1JLKQorICAgIGNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQoJlNlY0l0ZW1TaGltUHJveHk6
OnNoYXJlZCgpKTsKKyNlbmRpZgorCiAgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlKHRoaXMpOwogCiAgICAgLy8gVGVsbCB0aGUgY29udGV4dCB0
aGF0IHdlIGZpbmlzaGVkIGxhdW5jaGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmIFVT
RShTRUNVUklUWV9GUkFNRVdPUkspCi1jbGFzcyBTZWNJdGVtUmVxdWVzdERhdGE7Ci1jbGFzcyBT
ZWNJdGVtUmVzcG9uc2VEYXRhOwotI2VuZGlmCi0KIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKQEAgLTE1Mywx
MCArMTQ4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4pOwogI2VuZGlmCiAKLSNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JL
KQotICAgIHZvaWQgc2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJik7Ci0jZW5kaWYKLQogICAgIC8v
IENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBXZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVj
b2RlciYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMzkwMDMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw4ICs1Miw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSB7CiAg
ICAgR2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgdXJsLCBXVEY6
OlN0cmluZyBuYW1lKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBE
ZWxheWVkCiAjZW5kaWYKIAotI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCi0gICAgU2VjSXRl
bVJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSBy
ZXF1ZXN0KSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCi0jZW5kaWYKLQogfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVBy
b3h5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VjSXRlbVNoaW1Qcm94eS5oIgorCisjaWYgVVNF
KFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2luY2x1ZGUgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgor
I2luY2x1ZGUgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKKyNpbmNsdWRlICJTZWNJdGVtU2hpbU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjSXRlbS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworU2VjSXRlbVNoaW1Qcm94eSYgU2VjSXRlbVNoaW1Qcm94eTo6c2hhcmVkKCkKK3sK
KyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoU2VjSXRlbVNoaW1Qcm94eSosIHByb3h5
ID0gbmV3IFNlY0l0ZW1TaGltUHJveHkpOworICAgIHJldHVybiAqcHJveHk7Cit9CisKK1NlY0l0
ZW1TaGltUHJveHk6OlNlY0l0ZW1TaGltUHJveHkoKQoreworfQorCitzdGF0aWMgdm9pZCBoYW5k
bGVTZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCkKK3sKKyAgICBT
ZWNJdGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlOworCisgICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUo
KSkgeworICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTZWNJdGVtUmVx
dWVzdERhdGE6OkNvcHlNYXRjaGluZzogeworICAgICAgICBDRlR5cGVSZWYgcmVzdWx0T2JqZWN0
ID0gMDsKKyAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmco
cmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJ
dGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFkb3B0Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpB
ZGQ6IHsKKyAgICAgICAgQ0ZUeXBlUmVmIHJlc3VsdE9iamVjdCA9IDA7CisgICAgICAgIE9TU3Rh
dHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtQWRkKHJlcXVlc3QucXVlcnkoKSwgJnJlc3VsdE9iamVj
dCk7CisgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCBh
ZG9wdENGKHJlc3VsdE9iamVjdCkuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VXBkYXRlOiB7CisgICAgICAgIE9TU3RhdHVzIHJl
c3VsdENvZGUgPSBTZWNJdGVtVXBkYXRlKHJlcXVlc3QucXVlcnkoKSwgcmVxdWVzdC5hdHRyaWJ1
dGVzVG9NYXRjaCgpKTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJl
c3VsdENvZGUsIDApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNlY0l0ZW1S
ZXF1ZXN0RGF0YTo6RGVsZXRlOiB7CisgICAgICAgIE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJ
dGVtRGVsZXRlKHJlcXVlc3QucXVlcnkoKSk7CisgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJl
c3BvbnNlRGF0YShyZXN1bHRDb2RlLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0K
KworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlY0l0ZW1TaGltOjpTZWNJdGVtUmVz
cG9uc2UocmVxdWVzdElELCByZXNwb25zZSksIDApOworfQorCitzdGF0aWMgdm9pZCBkaXNwYXRj
aEZ1bmN0aW9uT25RdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCBjb25zdCBGdW5jdGlvbjx2
b2lkICgpPiYgZnVuY3Rpb24pCit7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgZGlzcGF0Y2hf
YXN5bmMocXVldWUsIGZ1bmN0aW9uKTsKKyNlbHNlCisgICAgRnVuY3Rpb248dm9pZCAoKT4qIGZ1
bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KGZ1bmN0aW9uKTsKKyAgICBkaXNwYXRj
aF9hc3luYyhxdWV1ZSwgXnsKKyAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKKyAgICAgICAgZGVs
ZXRlIGZ1bmN0aW9uUHRyOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU2VjSXRlbVNoaW1Q
cm94eTo6c2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCit7Cisg
ICAgLy8gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlIHRvIGJl
IGhlbGQgdXAsIHdlIGRvIGFsbAorICAgIC8vIGtleWNoYWluIGludGVyYWN0aW9uIHdvcmsgb24g
YSBnbG9iYWwgZGlzcGF0Y2ggcXVldWUuCisgICAgZGlzcGF0Y2hfcXVldWVfdCBrZXljaGFpbldv
cmtRdWV1ZSA9IGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJ
VFlfREVGQVVMVCwgMCk7CisgICAgZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUoa2V5Y2hhaW5Xb3Jr
UXVldWUsIGJpbmQoaGFuZGxlU2VjSXRlbVJlcXVlc3QsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0
aW9uPihjb25uZWN0aW9uKSwgcmVxdWVzdElELCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQgU2VjSXRl
bVNoaW1Qcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2Up
Cit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NTZWNJdGVtU2hp
bVByb3h5PigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVTZWNJdGVtU2hpbVByb3h5TWVzc2FnZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIsIGRpZEhh
bmRsZU1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9TZWNJdGVtU2hpbVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VjSXRlbVNoaW1Qcm94eV9oCisjZGVm
aW5lIFNlY0l0ZW1TaGltUHJveHlfaAorCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNl
Y0l0ZW1SZXF1ZXN0RGF0YTsKKworY2xhc3MgU2VjSXRlbVNoaW1Qcm94eSA6IHB1YmxpYyBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShTZWNJ
dGVtU2hpbVByb3h5KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VjSXRlbVNoaW1Qcm94eSYgc2hh
cmVkKCk7CisKK3ByaXZhdGU6CisgICAgU2VjSXRlbVNoaW1Qcm94eSgpOworCisgICAgLy8gUXVl
dWVDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25X
b3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImLCBib29sJiBkaWRIYW5kbGVNZXNzYWdlKTsKKworICAgIC8vIElt
cGxlbWVudGVkIGluIGdlbmVyYXRlZCBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cC4KKyAgICB2b2lkIGRpZFJlY2VpdmVTZWNJdGVtU2hpbVByb3h5TWVzc2FnZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCisgICAgdm9p
ZCBzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKworI2VuZGlmIC8vIFNlY0l0
ZW1TaGltUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVt
U2hpbVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBTZWNJdGVtU2hpbVByb3h5IHsKKworI2lmIFVTRShT
RUNVUklUWV9GUkFNRVdPUkspCisgICAgU2VjSXRlbVJlcXVlc3QodWludDY0X3QgcmVxdWVzdElE
LCBXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0KSBEaXNwYXRjaE9uQ29ubmVjdGlv
blF1ZXVlCisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3NCArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAKLSNpbXBvcnQgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgotI2ltcG9y
dCAiU2VjSXRlbVJlc3BvbnNlRGF0YS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIKLSNpbXBvcnQgPFNlY3Vy
aXR5L1NlY0l0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIGhhbmRs
ZVNlY0l0ZW1SZXF1ZXN0KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQotewotICAgIFNl
Y0l0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7Ci0KLSAgICBzd2l0Y2ggKHJlcXVlc3QudHlwZSgp
KSB7Ci0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
Y2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkNvcHlNYXRjaGluZzogewotICAgICAgICAgICAgQ0ZU
eXBlUmVmIHJlc3VsdE9iamVjdCA9IDA7Ci0gICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2Rl
ID0gU2VjSXRlbUNvcHlNYXRjaGluZyhyZXF1ZXN0LnF1ZXJ5KCksICZyZXN1bHRPYmplY3QpOwot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFk
b3B0Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpBZGQ6IHsKLSAgICAgICAgICAg
IENGVHlwZVJlZiByZXN1bHRPYmplY3QgPSAwOwotICAgICAgICAgICAgT1NTdGF0dXMgcmVzdWx0
Q29kZSA9IFNlY0l0ZW1BZGQocmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKLSAgICAg
ICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCBhZG9wdENG
KHJlc3VsdE9iamVjdCkuZ2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjYXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VXBkYXRlOiB7Ci0gICAgICAgICAgICBP
U1N0YXR1cyByZXN1bHRDb2RlID0gU2VjSXRlbVVwZGF0ZShyZXF1ZXN0LnF1ZXJ5KCksIHJlcXVl
c3QuYXR0cmlidXRlc1RvTWF0Y2goKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1S
ZXNwb25zZURhdGEocmVzdWx0Q29kZSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpEZWxldGU6IHsKLSAgICAgICAg
ICAgIE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtRGVsZXRlKHJlcXVlc3QucXVlcnkoKSk7
Ci0gICAgICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwg
MCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlY0l0ZW1SZXNwb25zZShyZXF1ZXN0SUQs
IHJlc3BvbnNlKSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpc3BhdGNoRnVuY3Rpb25PblF1ZXVl
KGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlv
bikKLXsKLSNpZiBDT01QSUxFUihDTEFORykKLSAgICBkaXNwYXRjaF9hc3luYyhxdWV1ZSwgZnVu
Y3Rpb24pOwotI2Vsc2UKLSAgICBGdW5jdGlvbjx2b2lkICgpPiogZnVuY3Rpb25QdHIgPSBuZXcg
RnVuY3Rpb248dm9pZCAoKT4oZnVuY3Rpb24pOwotICAgIGRpc3BhdGNoX2FzeW5jKHF1ZXVlLCBe
ewotICAgICAgICAoKmZ1bmN0aW9uUHRyKSgpOwotICAgICAgICBkZWxldGUgZnVuY3Rpb25QdHI7
Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlY0l0ZW1SZXF1
ZXN0KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQotewotICAgIC8vIFNpbmNlIHdlIGRv
bid0IHdhbnQgdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZSB0byBiZSBoZWxkIHVwLCB3ZSBkbyBh
bGwKLSAgICAvLyBrZXljaGFpbiBpbnRlcmFjdGlvbiB3b3JrIG9uIGEgZ2xvYmFsIGRpc3BhdGNo
IHF1ZXVlLgotICAgIGRpc3BhdGNoX3F1ZXVlX3Qga2V5Y2hhaW5Xb3JrUXVldWUgPSBkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApOwot
ICAgIGRpc3BhdGNoRnVuY3Rpb25PblF1ZXVlKGtleWNoYWluV29ya1F1ZXVlLCBiaW5kKGhhbmRs
ZVNlY0l0ZW1SZXF1ZXN0LCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4oY29ubmVjdGlvbiks
IHJlcXVlc3RJRCwgcmVxdWVzdCkpOwotfQotCiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIFtXS0Z1bGxLZXlib2FyZEFjY2Vz
c1dhdGNoZXIgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZF07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzkw
MDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzUsNiArMTAzNSwxNCBAQAogCQlFMTdCRjk5NjE0RDBBNzNF
MDBBNUEwNjkgLyogTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCRjk5NTE0RDBBNzNFMDBBNUEwNjkgLyog
TmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggKi87IH07CiAJCUUxN0JGOTk4MTREMEFBODMwMEE1
QTA2OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTdCRjk5NzE0RDBBQTgzMDBBNUEwNjkgLyogTmV0
c2NhcGVTYW5kYm94RnVuY3Rpb25zLm1tICovOyB9OwogCQlFMThDOTJGNDEyREI5RTcxMDBDRjJB
RUIgLyogUHJpbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovOyB9
OworCQlFMThFNjkwQjE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkwOTE2OUI1
NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgKi87IH07CisJCUUxOEU2OTBDMTY5
QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkwQTE2OUI1NjNGMDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW1Qcm94eS5oICovOyB9OworCQlFMThFNjkxNTE2OUI2NjdCMDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE4RTY5MTExNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTE4RTY5MTYxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3Nh
Z2VzLmggKi87IH07CisJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
UHJveHlNZXNzYWdlcy5oICovOyB9OworCQlFMThFNjk0OTE2OUI3N0M4MDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE4RTY5NDcxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmNwcCAqLzsgfTsKKwkJ
RTE4RTY5NEExNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFNjk0ODE2OUI3N0M4MDA5QjY2NzAg
LyogU2VjSXRlbVNoaW0uaCAqLzsgfTsKIAkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBE
RktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmggKi87IH07CiAJ
CUUxOTU4MkQ2MTUzQ0MwNTQwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NTgyRDQxNTNDQzA1MzAwQjYw
ODc1IC8qIFBERktpdEltcG9ydHMubW0gKi87IH07CiAJCUUxOTY3RTM2MTUwQUI1RDUwMEM3MzE2
OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAv
KiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgKi87IH07CkBAIC0yMzM5LDYgKzIz
NDcsMTYgQEAKIAkJRTE3QkY5OTcxNEQwQUE4MzAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1
bmN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHNj
YXBlU2FuZGJveEZ1bmN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3
QkY5OTkxNEQwQ0JGMTAwQTVBMDY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5z
Yi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nl
c3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEM5MkYzMTJEQjlFNzEw
MENGMkFFQiAvKiBQcmludEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5
MDkxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVNoaW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxOEU2OTBBMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MEQxNjlCNTdERjAwOUI2
NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTE4RTY5MEYxNjlCNTkyODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNlY0l0ZW1TaGltLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMThFNjkxMjE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtU2hpbU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjkxNDE2OUI2NjdCMDA5QjY2NzAg
LyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMThFNjk0NzE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVNoaW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjk0ODE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRl
bVNoaW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVNoaW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NTgyRDIxNTNDQkZENzAwQjYwODc1IC8q
IFBERktpdEltcG9ydHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGS2l0
SW1wb3J0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk1ODJENDE1M0NDMDUz
MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBERktpdEltcG9ydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxOTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblBy
b2Nlc3Muc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5QbHVnaW5Q
cm9jZXNzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgzNSw2ICszODUzLDkg
QEAKIAkJCQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmgg
Ki8sCiAJCQkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwICovLAogCQkJCTUxRDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmggKi8sCisJCQkJRTE4RTY5MEYxNjlCNTkyODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLm1l
c3NhZ2VzLmluICovLAorCQkJCUUxOEU2OTQ3MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bS5jcHAgKi8sCisJCQkJRTE4RTY5NDgxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmgg
Ki8sCiAJCQkJQkNFMjMyNjIxMjJDNkNGMzAwRDVDMzVBIC8qIFdlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbSAqLywKIAkJCQlCQzExMUI1QjExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0
b3J5LmggKi8sCiAJCQkJQkMxMTFCNUMxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9y
eS5tbSAqLywKQEAgLTQxMzksNiArNDE2MCw5IEBACiAJCQkJMUFBM0Q3NUExNjUxQjQ0RjAwODcx
M0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCAqLywKIAkJCQkxQUEzRDc1RDE2NTFCNUM1MDA4
NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQUEzRDc1
OTE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSAqLywKKwkJCQlFMThF
NjkwRDE2OUI1N0RGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbiAqLywK
KwkJCQlFMThFNjkwOTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgKi8s
CisJCQkJRTE4RTY5MEExNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCAqLywK
IAkJCQkxQUE0MTdFRDEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJNYWMubW0gKi8sCiAJ
CQkJMUFGMDVEODUxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkuaCAqLywKIAkJCQkxQUYwNUQ4NDE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSAqLywKQEAgLTQzMTUsNiArNDMzOSwxMCBAQAog
CQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8s
CiAJCQkJMUFBM0Q3NUYxNjUxQjdEMzAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3RNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBQTNENzYwMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1v
dGVMYXllclRyZWVIb3N0TWVzc2FnZXMuaCAqLywKKwkJCQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUUxOEU2OTEyMTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCisJCQkJRTE4RTY5MTMx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAorCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2Fn
ZXMuaCAqLywKIAkJCQlFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTFFREZEQjIxNjI4QUQ3MzAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oICovLAogCQkJCUUxRURGREIzMTYyOEFE
NzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLApAQCAtNTAzOCw3ICs1MDY2LDExIEBACiAJCQkJQkNGNERFMjMxNjhFNEJENTAwQzk0QUZD
IC8qIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNERF
MjUxNjhGQTQ0ODAwQzk0QUZDIC8qIFdlYkNvbnRleHRTdXBwbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzlCQTUwNTE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuaCBp
biBIZWFkZXJzICovLAorCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMThFNjkxNjE2OUI2NjdCMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4RTY5MTgxNjlCNjY3
QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5QkE1MDkxNjk5MUMzQzAwRTQ0NjE2IC8qIENoaWxkUHJvY2Vzc01haW4uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUxOEU2OTRBMTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC02MDEzLDcgKzYwNDUsMTEgQEAKIAkJCQkyOTg5QTQxMTE2N0QxODM0
MDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFBNTA1RjkxNjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM5QkE1MDQxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFs
aXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBT
ZWNJdGVtU2hpbVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTE1MTY5QjY2N0Iw
MDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlCQTUwODE2OTkxQzNDMDBFNDQ2MTYg
LyogQ2hpbGRQcm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxOEU2OTQ5MTY5Qjc3
QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM5MDAzKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDYgKzEyMCwxMCBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIgogI2VuZGlmCiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorI2luY2x1ZGUg
IlNlY0l0ZW1TaGltLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMDgsNiArMjEyLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ28KICAgICBjb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCgm
bV9ldmVudERpc3BhdGNoZXIpOwogICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KHRoaXMp
OwogCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyAgICBjb25uZWN0aW9uLT5hZGRRdWV1
ZUNsaWVudCgmU2VjSXRlbVNoaW06OnNoYXJlZCgpKTsKKyNlbmRpZgorCiAgICAgbV93ZWJDb25u
ZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMzkwMDMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtOTIsMTAgKzkyLDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFVTRShTRUNV
UklUWV9GUkFNRVdPUkspCi1jbGFzcyBTZWNJdGVtUmVzcG9uc2VEYXRhOwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OwogI2VuZGlmCkBAIC0yNzAsMTAgKzI2Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBvc3RJ
bmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZURhdGEpOwogCi0jaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKLSAgICB2b2lkIHNlY0l0ZW1S
ZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
ZWNJdGVtUmVzcG9uc2VEYXRhJik7Ci0jZW5kaWYKLQogICAgIC8vIENoaWxkUHJvY2VzcwogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMCAr
OTgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKIAogICAgIFBvc3RJbmplY3RlZEJ1bmRs
ZU1lc3NhZ2UoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlRGF0YSk7CiAKLSNpZiBVU0Uo
U0VDVVJJVFlfRlJBTUVXT1JLKQotICAgIFNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0
SUQsIFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5l
Y3Rpb25RdWV1ZQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKGJvb2wgZmxhZyk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0JKHJldmlzaW9uIDEz
OTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9k
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCAiU2VjSXRlbVJl
cXVlc3REYXRhLmgiCiAjaW1wb3J0ICJTZWNJdGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9y
dCAiU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzU2hpbS5o
IgogI2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBkaWRSZWNlaXZlU2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IAogc3Rh
dGljIFBhc3NPd25QdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlcUl0ZW1SZXF1ZXN0KFNl
Y0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5
LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewogICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IGdlbmVyYXRlU2VjSXRlbVJlcXVlc3RJRCgpOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlNlY0l0ZW1SZXF1ZXN0KHJlcXVlc3RJRCwgU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RU
eXBlLCBxdWVyeSwgYXR0cmlidXRlc1RvTWF0Y2gpKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6
OlNlY0l0ZW1SZXF1ZXN0KHJlcXVlc3RJRCwgU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RUeXBl
LCBxdWVyeSwgYXR0cmlidXRlc1RvTWF0Y2gpKSwgMCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIHJlc3BvbnNlTWFwKCkud2FpdEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMu
bW0JKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2ltcG9y
dCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgi
Ci0jaW1wb3J0ICJTZWNJdGVtU2hpbU1ldGhvZHMuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJk
QWNjZXNzV2F0Y2hlci5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlLmgiCkBAIC00OCw2ICs0NywxMCBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1w
b3J0IDxzdGRpby5oPgogCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKKyNpbXBvcnQgIlNl
Y0l0ZW1TaGltLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQog
I2ltcG9ydCA8cHdkLmg+CiAjaW1wb3J0IDxzdGRsaWIuaD4KQEAgLTMwOCw3ICszMTEsMTAgQEAg
dm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoYwogdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYpCiB7CiAgICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7Ci0gICAgaW5p
dGlhbGl6ZVNlY0l0ZW1TaGltKCk7CisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorICAg
IFNlY0l0ZW1TaGltOjpzaGFyZWQoKS5pbnN0YWxsKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCkBAIC0zMjAsOSArMzI2LDQgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6
OnNlY0l0ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXNwb25zZSkKLXsKLSAgICBkaWRSZWNlaXZl
U2VjSXRlbVJlc3BvbnNlKHJlcXVlc3RJRCwgcmVzcG9uc2UpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181592</attachid>
            <date>2013-01-07 16:08:40 -0800</date>
            <delta_ts>2013-01-07 16:17:16 -0800</delta_ts>
            <desc>...and another DerivedSource.make fix</desc>
            <filename>Shim.txt</filename>
            <type>text/plain</type>
            <size>38768</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE1ha2UgU2VjSXRl
bVNoaW0gbWVzc2FnZXMgd29yayB3aXRoIGFueSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2VjSXRlbVNoaW0gYW5kIFNlY0l0ZW1T
aGltUHJveHkgY2xhc3NlcyB0byBtYW5hZ2UgbWVzc2FnZSBzZW5kaW5nLCBhbmQgbW92ZWQKKyAg
ICAgICAgcmVsYXZhbnQgY29kZSBmcm9tIFdlYlByb2Nlc3MoUHJveHkpLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViUHJvY2Vzc1Byb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFNoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW06OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpTZWNJ
dGVtU2hpbSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpzZWNJdGVtUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbTo6aW5zdGFsbCk6CisgICAgICAgIChXZWJL
aXQ6OlNlY0l0ZW1TaGltOjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6
CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVNoaW1Qcm94eTo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVNoaW1Q
cm94eTo6U2VjSXRlbVNoaW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZVNlY0l0ZW1S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUpOgorICAg
ICAgICAoV2ViS2l0OjpTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNlY0l0ZW1TaGltUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9u
V29ya1F1ZXVlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5t
bToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW06CisgICAgICAgIChXZWJL
aXQ6OnNlbmRTZXFJdGVtUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplUHJvY2Vzcyk6CisKIDIwMTMtMDEtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2luZG93cyBmaWxlcyBmcm9tIFdlYktpdDIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTM5MDAzKQorKysgU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MvbWFjIFwKICAg
ICAkKFdlYktpdDIpL1NoYXJlZC9QbHVnaW5zIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZCBcCisg
ICAgJChXZWJLaXQyKS9TaGFyZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scyBcCiAgICAgJChXZWJLaXQyKS9TaGFyZWRXb3JrZXJQcm9jZXNzIFwK
ICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCkBAIC04MSw2ICs4
Miw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIFwKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgXAogICAgIFJlbW90ZUxheWVyVHJl
ZUhvc3QgXAorICAgIFNlY0l0ZW1TaGltIFwKKyAgICBTZWNJdGVtU2hpbVByb3h5IFwKICAgICBX
ZWJDb250ZXh0IFwKICAgICBXZWJEYXRhYmFzZU1hbmFnZXIgXAogICAgIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUlELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlSUQuaAkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCBlbnVt
IE1lc3NhZ2VDbGFzcyB7CiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSBhIHdlYiBwcm9jZXNzIChz
b29uIHRoZSBuZXR3b3JrIHByb2Nlc3MpIHRvIHRoZSBVSSBwcm9jZXNzLgogICAgIE1lc3NhZ2VD
bGFzc0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LAogI2VuZGlmCisKKyNpZiBVU0UoU0VDVVJJ
VFlfRlJBTUVXT1JLKQorICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgYSB3ZWIgcHJvY2VzcyBvciBh
IG5ldHdvcmsgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICBNZXNzYWdlQ2xhc3NTZWNJ
dGVtU2hpbVByb3h5LAorCisgICAgLy8gUmVzcG9uc2VzIHRvIFNlY0l0ZW1TaGltUHJveHkgdGhh
dCBhcmUgc2VudCBiYWNrLgorICAgIE1lc3NhZ2VDbGFzc1NlY0l0ZW1TaGltLAorI2VuZGlmCiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE1lc3NhZ2VLaW5kVHJhaXRzIHsgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2VjSXRlbVNoaW0uaCIKKworI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCisK
KyNpbmNsdWRlICJTZWNJdGVtU2hpbU1ldGhvZHMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1NlY0l0ZW1TaGltJiBTZWNJdGVtU2hpbTo6c2hhcmVkKCkKK3sKKyAgICBBdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWMoU2VjSXRlbVNoaW0qLCBwcm94eSA9IG5ldyBTZWNJdGVtU2hpbSk7Cisg
ICAgcmV0dXJuICpwcm94eTsKK30KKworU2VjSXRlbVNoaW06OlNlY0l0ZW1TaGltKCkKK3sKK30K
Kwordm9pZCBTZWNJdGVtU2hpbTo6c2VjSXRlbVJlc3BvbnNlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXNwb25zZURhdGEmIHJlc3BvbnNl
KQoreworICAgIGRpZFJlY2VpdmVTZWNJdGVtUmVzcG9uc2UocmVxdWVzdElELCByZXNwb25zZSk7
Cit9CisKK3ZvaWQgU2VjSXRlbVNoaW06Omluc3RhbGwoKQoreworICAgIGluaXRpYWxpemVTZWNJ
dGVtU2hpbSgpOworfQorCit2b2lkIFNlY0l0ZW1TaGltOjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwg
Ym9vbCYgZGlkSGFuZGxlTWVzc2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6
Ok1lc3NhZ2VDbGFzc1NlY0l0ZW1TaGltPigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVTZWNJdGVt
U2hpbU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBk
ZWNvZGVyLCBkaWRIYW5kbGVNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
fQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlY0l0
ZW1TaGltX2gKKyNkZWZpbmUgU2VjSXRlbVNoaW1faAorCisjaWYgVVNFKFNFQ1VSSVRZX0ZSQU1F
V09SSykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFNlY0l0ZW1SZXNwb25zZURhdGE7CisKK2NsYXNzIFNlY0l0ZW1TaGltIDogcHVibGlj
IENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKK1dURl9NQUtFX05PTkNPUFlBQkxF
KFNlY0l0ZW1TaGltKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VjSXRlbVNoaW0mIHNoYXJlZCgp
OworCisgICAgdm9pZCBpbnN0YWxsKCk7CisKK3ByaXZhdGU6CisgICAgU2VjSXRlbVNoaW0oKTsK
KworICAgIC8vIFF1ZXVlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
T25Db25uZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7
CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgU2VjSXRlbVNoaW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwLgorICAgIHZvaWQgZGlkUmVjZWl2ZVNlY0l0ZW1TaGltTWVzc2FnZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCisgICAg
dm9pZCBzZWNJdGVtUmVzcG9uc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorCisjZW5kaWYgLy8g
U2VjSXRlbVNoaW1faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hp
bS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Nl
Y0l0ZW1TaGltLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9TZWNJdGVtU2hpbS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBTZWNJdGVtU2hpbSB7CisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorICAgIFNlY0l0
ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0
YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQorI2VuZGlmCisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lv
biAxMzkwMDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTAgQEAKICNlbmRpZgogI2VuZGlmCiAKKyNp
ZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorI2luY2x1ZGUgIlNlY0l0ZW1TaGltUHJveHkuaCIK
KyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTUwMiw2ICs1MDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZwogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcobGF1
bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAorI2lmIFVTRShTRUNVUklUWV9GUkFNRVdP
UkspCisgICAgY29ubmVjdGlvbigpLT5hZGRRdWV1ZUNsaWVudCgmU2VjSXRlbVNoaW1Qcm94eTo6
c2hhcmVkKCkpOworI2VuZGlmCisKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKICAgICAvLyBUZWxsIHRoZSBjb250ZXh0IHRo
YXQgd2UgZmluaXNoZWQgbGF1bmNoaW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNF
KFNFQ1VSSVRZX0ZSQU1FV09SSykKLWNsYXNzIFNlY0l0ZW1SZXF1ZXN0RGF0YTsKLWNsYXNzIFNl
Y0l0ZW1SZXNwb25zZURhdGE7Ci0jZW5kaWYKLQogY2xhc3MgRG93bmxvYWRQcm94eU1hcDsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJDb250ZXh0OwpAQCAtMTUzLDEw
ICsxNDgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKIAotI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUksp
Ci0gICAgdm9pZCBzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKLSNlbmRpZgotCiAgICAgLy8g
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEzOTAwMykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDggKzUyLDQgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsKICAg
ICBHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyB1cmwsIFdURjo6
U3RyaW5nIG5hbWUpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERl
bGF5ZWQKICNlbmRpZgogCi0jaWYgVVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKLSAgICBTZWNJdGVt
UmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjSXRlbVJlcXVlc3REYXRhIHJl
cXVlc3QpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKLSNlbmRpZgotCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJv
eHkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWNJdGVtU2hpbVByb3h5LmgiCisKKyNpZiBVU0Uo
U0VDVVJJVFlfRlJBTUVXT1JLKQorCisjaW5jbHVkZSAiU2VjSXRlbVJlcXVlc3REYXRhLmgiCisj
aW5jbHVkZSAiU2VjSXRlbVJlc3BvbnNlRGF0YS5oIgorI2luY2x1ZGUgIlNlY0l0ZW1TaGltTWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNJdGVtLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitTZWNJdGVtU2hpbVByb3h5JiBTZWNJdGVtU2hpbVByb3h5OjpzaGFyZWQoKQorewor
ICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhTZWNJdGVtU2hpbVByb3h5KiwgcHJveHkg
PSBuZXcgU2VjSXRlbVNoaW1Qcm94eSk7CisgICAgcmV0dXJuICpwcm94eTsKK30KKworU2VjSXRl
bVNoaW1Qcm94eTo6U2VjSXRlbVNoaW1Qcm94eSgpCit7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRs
ZVNlY0l0ZW1SZXF1ZXN0KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQoreworICAgIFNl
Y0l0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7CisKKyAgICBzd2l0Y2ggKHJlcXVlc3QudHlwZSgp
KSB7CisgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkludmFsaWQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFNlY0l0ZW1SZXF1
ZXN0RGF0YTo6Q29weU1hdGNoaW5nOiB7CisgICAgICAgIENGVHlwZVJlZiByZXN1bHRPYmplY3Qg
PSAwOworICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0gU2VjSXRlbUNvcHlNYXRjaGluZyhy
ZXF1ZXN0LnF1ZXJ5KCksICZyZXN1bHRPYmplY3QpOworICAgICAgICByZXNwb25zZSA9IFNlY0l0
ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgYWRvcHRDRihyZXN1bHRPYmplY3QpLmdldCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkFk
ZDogeworICAgICAgICBDRlR5cGVSZWYgcmVzdWx0T2JqZWN0ID0gMDsKKyAgICAgICAgT1NTdGF0
dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1BZGQocmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0
KTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFk
b3B0Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpVcGRhdGU6IHsKKyAgICAgICAgT1NTdGF0dXMgcmVz
dWx0Q29kZSA9IFNlY0l0ZW1VcGRhdGUocmVxdWVzdC5xdWVyeSgpLCByZXF1ZXN0LmF0dHJpYnV0
ZXNUb01hdGNoKCkpOworICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVz
dWx0Q29kZSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2VjSXRlbVJl
cXVlc3REYXRhOjpEZWxldGU6IHsKKyAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0
ZW1EZWxldGUocmVxdWVzdC5xdWVyeSgpKTsKKyAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVz
cG9uc2VEYXRhKHJlc3VsdENvZGUsIDApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQor
CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VjSXRlbVNoaW06OlNlY0l0ZW1SZXNw
b25zZShyZXF1ZXN0SUQsIHJlc3BvbnNlKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNo
RnVuY3Rpb25PblF1ZXVlKGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQgKCk+JiBmdW5jdGlvbikKK3sKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICBkaXNwYXRjaF9h
c3luYyhxdWV1ZSwgZnVuY3Rpb24pOworI2Vsc2UKKyAgICBGdW5jdGlvbjx2b2lkICgpPiogZnVu
Y3Rpb25QdHIgPSBuZXcgRnVuY3Rpb248dm9pZCAoKT4oZnVuY3Rpb24pOworICAgIGRpc3BhdGNo
X2FzeW5jKHF1ZXVlLCBeeworICAgICAgICAoKmZ1bmN0aW9uUHRyKSgpOworICAgICAgICBkZWxl
dGUgZnVuY3Rpb25QdHI7CisgICAgfSk7CisjZW5kaWYKK30KKwordm9pZCBTZWNJdGVtU2hpbVBy
b3h5OjpzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCkKK3sKKyAg
ICAvLyBTaW5jZSB3ZSBkb24ndCB3YW50IHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUgdG8gYmUg
aGVsZCB1cCwgd2UgZG8gYWxsCisgICAgLy8ga2V5Y2hhaW4gaW50ZXJhY3Rpb24gd29yayBvbiBh
IGdsb2JhbCBkaXNwYXRjaCBxdWV1ZS4KKyAgICBkaXNwYXRjaF9xdWV1ZV90IGtleWNoYWluV29y
a1F1ZXVlID0gZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKTsKKyAgICBkaXNwYXRjaEZ1bmN0aW9uT25RdWV1ZShrZXljaGFpbldvcmtR
dWV1ZSwgYmluZChoYW5kbGVTZWNJdGVtUmVxdWVzdCwgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+KGNvbm5lY3Rpb24pLCByZXF1ZXN0SUQsIHJlcXVlc3QpKTsKK30KKwordm9pZCBTZWNJdGVt
U2hpbVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSkK
K3sKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1NlY0l0ZW1TaGlt
UHJveHk+KCkpIHsKKyAgICAgICAgZGlkUmVjZWl2ZVNlY0l0ZW1TaGltUHJveHlNZXNzYWdlT25D
b25uZWN0aW9uV29ya1F1ZXVlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2RlciwgZGlkSGFu
ZGxlTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8v
IFVTRShTRUNVUklUWV9GUkFNRVdPUkspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWNJdGVtU2hpbVByb3h5X2gKKyNkZWZp
bmUgU2VjSXRlbVNoaW1Qcm94eV9oCisKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorCisj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vj
SXRlbVJlcXVlc3REYXRhOworCitjbGFzcyBTZWNJdGVtU2hpbVByb3h5IDogcHVibGljIENvcmVJ
UEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKFNlY0l0
ZW1TaGltUHJveHkpOworcHVibGljOgorICAgIHN0YXRpYyBTZWNJdGVtU2hpbVByb3h5JiBzaGFy
ZWQoKTsKKworcHJpdmF0ZToKKyAgICBTZWNJdGVtU2hpbVByb3h5KCk7CisKKyAgICAvLyBRdWV1
ZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCisgICAgLy8gSW1w
bGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
LgorICAgIHZvaWQgZGlkUmVjZWl2ZVNlY0l0ZW1TaGltUHJveHlNZXNzYWdlT25Db25uZWN0aW9u
V29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7CisKKyAgICB2b2lk
IHNlY0l0ZW1SZXF1ZXN0KENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorCisjZW5kaWYgLy8gU2VjSXRl
bVNoaW1Qcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1T
aGltUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFNlY0l0ZW1TaGltUHJveHkgeworCisjaWYgVVNFKFNF
Q1VSSVRZX0ZSQU1FV09SSykKKyAgICBTZWNJdGVtUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQs
IFdlYktpdDo6U2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3QpIERpc3BhdGNoT25Db25uZWN0aW9u
UXVldWUKKyNlbmRpZgorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDc0ICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKIAotI2ltcG9ydCAiU2VjSXRlbVJlcXVlc3REYXRhLmgiCi0jaW1wb3J0
ICJTZWNJdGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgotI2ltcG9ydCA8U2VjdXJp
dHkvU2VjSXRlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgaGFuZGxl
U2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCi17Ci0gICAgU2Vj
SXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZTsKLQotICAgIHN3aXRjaCAocmVxdWVzdC50eXBlKCkp
IHsKLSAgICAgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkludmFsaWQ6Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBj
YXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6Q29weU1hdGNoaW5nOiB7Ci0gICAgICAgICAgICBDRlR5
cGVSZWYgcmVzdWx0T2JqZWN0ID0gMDsKLSAgICAgICAgICAgIE9TU3RhdHVzIHJlc3VsdENvZGUg
PSBTZWNJdGVtQ29weU1hdGNoaW5nKHJlcXVlc3QucXVlcnkoKSwgJnJlc3VsdE9iamVjdCk7Ci0g
ICAgICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgYWRv
cHRDRihyZXN1bHRPYmplY3QpLmdldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkFkZDogewotICAgICAgICAgICAg
Q0ZUeXBlUmVmIHJlc3VsdE9iamVjdCA9IDA7Ci0gICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRD
b2RlID0gU2VjSXRlbUFkZChyZXF1ZXN0LnF1ZXJ5KCksICZyZXN1bHRPYmplY3QpOwotICAgICAg
ICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFkb3B0Q0Yo
cmVzdWx0T2JqZWN0KS5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpVcGRhdGU6IHsKLSAgICAgICAgICAgIE9T
U3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtVXBkYXRlKHJlcXVlc3QucXVlcnkoKSwgcmVxdWVz
dC5hdHRyaWJ1dGVzVG9NYXRjaCgpKTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJl
c3BvbnNlRGF0YShyZXN1bHRDb2RlLCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkRlbGV0ZTogewotICAgICAgICAg
ICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1EZWxldGUocmVxdWVzdC5xdWVyeSgpKTsK
LSAgICAgICAgICAgIHJlc3BvbnNlID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCAw
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2VjSXRlbVJlc3BvbnNlKHJlcXVlc3RJRCwg
cmVzcG9uc2UpLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUo
ZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSwgY29uc3QgRnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9u
KQotewotI2lmIENPTVBJTEVSKENMQU5HKQotICAgIGRpc3BhdGNoX2FzeW5jKHF1ZXVlLCBmdW5j
dGlvbik7Ci0jZWxzZQotICAgIEZ1bmN0aW9uPHZvaWQgKCk+KiBmdW5jdGlvblB0ciA9IG5ldyBG
dW5jdGlvbjx2b2lkICgpPihmdW5jdGlvbik7Ci0gICAgZGlzcGF0Y2hfYXN5bmMocXVldWUsIF57
Ci0gICAgICAgICgqZnVuY3Rpb25QdHIpKCk7Ci0gICAgICAgIGRlbGV0ZSBmdW5jdGlvblB0cjsK
LSAgICB9KTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VjSXRlbVJlcXVl
c3QoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCi17Ci0gICAgLy8gU2luY2Ugd2UgZG9u
J3Qgd2FudCB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlIHRvIGJlIGhlbGQgdXAsIHdlIGRvIGFs
bAotICAgIC8vIGtleWNoYWluIGludGVyYWN0aW9uIHdvcmsgb24gYSBnbG9iYWwgZGlzcGF0Y2gg
cXVldWUuCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBrZXljaGFpbldvcmtRdWV1ZSA9IGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCk7Ci0g
ICAgZGlzcGF0Y2hGdW5jdGlvbk9uUXVldWUoa2V5Y2hhaW5Xb3JrUXVldWUsIGJpbmQoaGFuZGxl
U2VjSXRlbVJlcXVlc3QsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPihjb25uZWN0aW9uKSwg
cmVxdWVzdElELCByZXF1ZXN0KSk7Ci19Ci0KIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIHsKICAgICByZXR1cm4gW1dLRnVsbEtleWJvYXJkQWNjZXNz
V2F0Y2hlciBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzOTAw
MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAzNSw2ICsxMDM1LDE0IEBACiAJCUUxN0JGOTk2MTREMEE3M0Uw
MEE1QTA2OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0JGOTk1MTREMEE3M0UwMEE1QTA2OSAvKiBO
ZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRTE3QkY5OTgxNEQwQUE4MzAwQTVB
MDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0JGOTk3MTREMEFBODMwMEE1QTA2OSAvKiBOZXRz
Y2FwZVNhbmRib3hGdW5jdGlvbnMubW0gKi87IH07CiAJCUUxOEM5MkY0MTJEQjlFNzEwMENGMkFF
QiAvKiBQcmludEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi87IH07
CisJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEU2OTA5MTY5QjU2
M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCAqLzsgfTsKKwkJRTE4RTY5MEMxNjlC
NTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEU2OTBBMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbVByb3h5LmggKi87IH07CisJCUUxOEU2OTE1MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkxMTE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlFMThFNjkxNjE2OUI2NjdCMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2Fn
ZXMuaCAqLzsgfTsKKwkJRTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMThFNjkxNDE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Q
cm94eU1lc3NhZ2VzLmggKi87IH07CisJCUUxOEU2OTQ5MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMThFNjk0NzE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uY3BwICovOyB9OworCQlF
MThFNjk0QTE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEU2OTQ4MTY5Qjc3QzgwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbS5oICovOyB9OwogCQlFMTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERG
S2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE5NTgyRDIxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCAqLzsgfTsKIAkJ
RTE5NTgyRDYxNTNDQzA1NDAwQjYwODc1IC8qIFBERktpdEltcG9ydHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk1ODJENDE1M0NDMDUzMDBCNjA4
NzUgLyogUERGS2l0SW1wb3J0cy5tbSAqLzsgfTsKIAkJRTE5NjdFMzYxNTBBQjVENTAwQzczMTY5
IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzUxNTBBQjVENTAwQzczMTY5IC8q
IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiAqLzsgfTsKQEAgLTIzMzksNiArMjM0
NywxNiBAQAogCQlFMTdCRjk5NzE0RDBBQTgzMDBBNUEwNjkgLyogTmV0c2NhcGVTYW5kYm94RnVu
Y3Rpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0c2Nh
cGVTYW5kYm94RnVuY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdC
Rjk5OTE0RDBDQkYxMDBBNUEwNjkgLyogY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNi
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vz
cy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4QzkyRjMxMkRCOUU3MTAw
Q0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcmludEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjkw
OTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtU2hpbVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MEExNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVNoaW1Qcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMThFNjkwRDE2OUI1N0RGMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMThFNjkwRjE2OUI1OTI4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VjSXRlbVNoaW0ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEU2OTExMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2Njcw
IC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxOEU2OTQ3MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtU2hpbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEU2OTQ4MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtU2hpbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk1ODJEMjE1M0NCRkQ3MDBCNjA4NzUgLyog
UERGS2l0SW1wb3J0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZLaXRJ
bXBvcnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTU4MkQ0MTUzQ0MwNTMw
MEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUERGS2l0SW1wb3J0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTE5NjdFMzUxNTBBQjVENTAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJv
Y2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblBy
b2Nlc3Muc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODM1LDYgKzM4NTMsOSBA
QAogCQkJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAq
LywKIAkJCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5j
cHAgKi8sCiAJCQkJNTFEMTMwNTIxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURh
dGEuaCAqLywKKwkJCQlFMThFNjkwRjE2OUI1OTI4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0ubWVz
c2FnZXMuaW4gKi8sCisJCQkJRTE4RTY5NDcxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
LmNwcCAqLywKKwkJCQlFMThFNjk0ODE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uaCAq
LywKIAkJCQlCQ0UyMzI2MjEyMkM2Q0YzMDBENUMzNUEgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tICovLAogCQkJCUJDMTExQjVCMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3Rv
cnkuaCAqLywKIAkJCQlCQzExMUI1QzExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5
Lm1tICovLApAQCAtNDEzOSw2ICs0MTYwLDkgQEAKIAkJCQkxQUEzRDc1QTE2NTFCNDRGMDA4NzEz
RDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5oICovLAogCQkJCTFBQTNENzVEMTY1MUI1QzUwMDg3
MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluICovLAogCQkJCTFBQTNENzU5
MTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tICovLAorCQkJCUUxOEU2
OTBEMTY5QjU3REYwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5Lm1lc3NhZ2VzLmluICovLAor
CQkJCUUxOEU2OTA5MTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCAqLywK
KwkJCQlFMThFNjkwQTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5oICovLAog
CQkJCTFBQTQxN0VEMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSAqLywKIAkJ
CQkxQUYwNUQ4NTE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5oICovLAogCQkJCTFBRjA1RDg0MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tICovLApAQCAtNDMxNSw2ICs0MzM5LDEwIEBACiAJ
CQkJMUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywK
IAkJCQkxQUEzRDc1RjE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFBM0Q3NjAxNjUxQjdEMzAwODcxM0QwIC8qIFJlbW90
ZUxheWVyVHJlZUhvc3RNZXNzYWdlcy5oICovLAorCQkJCUUxOEU2OTExMTY5QjY2N0IwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJRTE4RTY5MTIxNjlC
NjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCAqLywKKwkJCQlFMThFNjkxMzE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCUUxRURGREIxMTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMUVERkRCMjE2MjhBRDczMDAzOUVDREEg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJRTFFREZEQjMxNjI4QUQ3
MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC01MDM4LDcgKzUwNjYsMTEgQEAKIAkJCQlCQ0Y0REUyMzE2OEU0QkQ1MDBDOTRBRkMg
LyogTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y0REUy
NTE2OEZBNDQ4MDBDOTRBRkMgLyogV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOUJBNTA1MTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxOEU2OTE2MTY5QjY2N0IwMDlCNjY3MCAvKiBT
ZWNJdGVtU2hpbU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMThFNjkxODE2OUI2NjdC
MDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzlCQTUwOTE2OTkxQzNDMDBFNDQ2MTYgLyogQ2hpbGRQcm9jZXNzTWFpbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTE4RTY5NEExNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTYwMTMsNyArNjA0NSwxMSBAQAogCQkJCTI5ODlBNDExMTY3RDE4MzQw
MDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMUE1MDVGOTE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzlCQTUwNDE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxp
emUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4RTY5MTUxNjlCNjY3QjAw
OUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOUJBNTA4MTY5OTFDM0MwMEU0NDYxNiAv
KiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4RTY5NDkxNjlCNzdD
ODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzkwMDMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjAsNiArMTIwLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmgiCiAjZW5kaWYKIAorI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCisjaW5jbHVkZSAi
U2VjSXRlbVNoaW0uaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIwOCw2ICsyMTIsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpp
bml0aWFsaXplQ29ubmVjdGlvbihDbwogICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KCZt
X2V2ZW50RGlzcGF0Y2hlcik7CiAgICAgY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7
CiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVl
Q2xpZW50KCZTZWNJdGVtU2hpbTo6c2hhcmVkKCkpOworI2VuZGlmCisKICAgICBtX3dlYkNvbm5l
Y3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEzOTAwMykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MiwxMCArOTIsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgVVNFKFNFQ1VS
SVRZX0ZSQU1FV09SSykKLWNsYXNzIFNlY0l0ZW1SZXNwb25zZURhdGE7Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7
CiAjZW5kaWYKQEAgLTI3MCwxMCArMjY2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcG9zdElu
amVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
RGF0YSk7CiAKLSNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQotICAgIHZvaWQgc2VjSXRlbVJl
c3BvbnNlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNl
Y0l0ZW1SZXNwb25zZURhdGEmKTsKLSNlbmRpZgotCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
UHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikg
T1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMzkwMDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTk4LDEwICs5
OCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogCiAgICAgUG9zdEluamVjdGVkQnVuZGxl
TWVzc2FnZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2VEYXRhKTsKIAotI2lmIFVTRShT
RUNVUklUWV9GUkFNRVdPUkspCi0gICAgU2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgV2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlKSBEaXNwYXRjaE9uQ29ubmVj
dGlvblF1ZXVlCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoYm9vbCBmbGFnKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1NZXRob2RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQkocmV2aXNpb24gMTM5
MDAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1NZXRob2Rz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0ICJTZWNJdGVtUmVx
dWVzdERhdGEuaCIKICNpbXBvcnQgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3MuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0
ICJTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NTaGltLmgi
CiAjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CiAjaW1wb3J0IDxkbGZjbi5oPgpAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIGRpZFJlY2VpdmVTZWNJdGVtUmVzcG9uc2UodWludDY0X3QgCiBzdGF0
aWMgUGFzc093blB0cjxTZWNJdGVtUmVzcG9uc2VEYXRhPiBzZW5kU2VxSXRlbVJlcXVlc3QoU2Vj
SXRlbVJlcXVlc3REYXRhOjpUeXBlIHJlcXVlc3RUeXBlLCBDRkRpY3Rpb25hcnlSZWYgcXVlcnks
IENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9NYXRjaCA9IDApCiB7CiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gZ2VuZXJhdGVTZWNJdGVtUmVxdWVzdElEKCk7Ci0gICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6U2VjSXRlbVJlcXVlc3QocmVxdWVzdElELCBTZWNJdGVtUmVxdWVzdERhdGEocmVxdWVzdFR5
cGUsIHF1ZXJ5LCBhdHRyaWJ1dGVzVG9NYXRjaCkpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6
U2VjSXRlbVJlcXVlc3QocmVxdWVzdElELCBTZWNJdGVtUmVxdWVzdERhdGEocmVxdWVzdFR5cGUs
IHF1ZXJ5LCBhdHRyaWJ1dGVzVG9NYXRjaCkpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gcmVzcG9uc2VNYXAoKS53YWl0Rm9yUmVzcG9uc2UocmVxdWVzdElEKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5t
bQkocmV2aXNpb24gMTM5MDAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0
ICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIK
LSNpbXBvcnQgIlNlY0l0ZW1TaGltTWV0aG9kcy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRB
Y2Nlc3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKICNpbXBvcnQgIldlYlBh
Z2UuaCIKQEAgLTQ4LDYgKzQ3LDEwIEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBv
cnQgPHN0ZGlvLmg+CiAKKyNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQorI2ltcG9ydCAiU2Vj
SXRlbVNoaW0uaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiAj
aW1wb3J0IDxwd2QuaD4KICNpbXBvcnQgPHN0ZGxpYi5oPgpAQCAtMzA4LDcgKzMxMSwxMCBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjCiB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJikKIHsKICAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsKLSAgICBpbml0
aWFsaXplU2VjSXRlbVNoaW0oKTsKKworI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCisgICAg
U2VjSXRlbVNoaW06OnNoYXJlZCgpLmluc3RhbGwoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKQEAgLTMyMCw5ICszMjYsNCBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6
c2VjSXRlbVJlc3BvbnNlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFNlY0l0ZW1SZXNwb25zZURhdGEmIHJlc3BvbnNlKQotewotICAgIGRpZFJlY2VpdmVT
ZWNJdGVtUmVzcG9uc2UocmVxdWVzdElELCByZXNwb25zZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAo=
</data>
<flag name="review"
          id="199276"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>