<?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>48028</bug_id>
          
          <creation_ts>2010-10-20 16:42:35 -0700</creation_ts>
          <short_desc>Adding MediaQueryListListener binding test cases</short_desc>
          <delta_ts>2010-10-21 04:04:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>37205</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297129</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-20 16:42:35 -0700</bug_when>
    <thetext>MediaQueryListListener type will need special handling of the code generators. Adding the test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297153</commentid>
    <comment_count>1</comment_count>
      <attachid>71370</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-20 17:11:00 -0700</bug_when>
    <thetext>Created attachment 71370
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297170</commentid>
    <comment_count>2</comment_count>
      <attachid>71370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-20 17:40:50 -0700</bug_when>
    <thetext>Comment on attachment 71370
patch

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

Assuming you generated these files with run-bindings-tests, r=me.

&gt; WebCore/ChangeLog:18
&gt; +        (WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListenerPrivate::WebDOMTestMediaQueryListListenerPrivate):
&gt; +        (WebDOMTestMediaQueryListListener::WebDOMTestMediaQueryListListener):
&gt; +        (WebDOMTestMediaQueryListListener::operator=):
&gt; +        (WebDOMTestMediaQueryListListener::impl):
&gt; +        (WebDOMTestMediaQueryListListener::~WebDOMTestMediaQueryListListener):
&gt; +        (WebDOMTestMediaQueryListListener::method):
&gt; +        (toWebCore):
&gt; +        (toWebKit):

You can leave out these lists of functions in added files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297353</commentid>
    <comment_count>3</comment_count>
      <attachid>71370</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 04:04:12 -0700</bug_when>
    <thetext>Comment on attachment 71370
patch

Clearing flags on attachment: 71370

Committed r70226: &lt;http://trac.webkit.org/changeset/70226&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297354</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 04:04:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71370</attachid>
            <date>2010-10-20 17:11:00 -0700</date>
            <delta_ts>2010-10-21 04:04:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Adding-MediaQueryListListener-binding-test-cases.patch</filename>
            <type>text/plain</type>
            <size>59699</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxNGZhZDE0Zjc4MTIyYzliOWEyMjY4ZjhkMGVjZjk5ZDcyYTZjOTQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMjAgT2N0IDIwMTAgMjA6NDU6NTMgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBBZGRpbmcgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBiaW5kaW5nIHRlc3QgY2FzZXMKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODAyOAoKUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHR5cGUgd2lsbCBuZWVkIHNw
ZWNpYWwgaGFuZGxpbmcgb2YgdGhlIGNvZGUgZ2VuZXJhdG9ycy4gQWRkaW5nIHRoZSB0ZXN0IGNh
c2VzLgoKKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcDogQWRkZWQuCihXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
V2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlOjpXZWJET01UZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByaXZhdGUpOgooV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OldlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKFdlYkRPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpvcGVyYXRvcj0pOgooV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmltcGwpOgooV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6On5XZWJET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CihXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6bWV0aG9kKToKKHRvV2ViQ29yZSk6Cih0b1dlYktpdCk6CiogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOiBBZGRlZC4KKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6IEFkZGVkLgooV2ViS2l0OjpraXQpOgood2Via2l0X2RvbV90ZXN0X21lZGlh
X3F1ZXJ5X2xpc3RfbGlzdGVuZXJfbWV0aG9kKToKKFdlYktpdDo6Y29yZSk6Cih3ZWJraXRfZG9t
X3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9maW5hbGl6ZSk6Cih3ZWJraXRfZG9tX3Rl
c3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9zZXRfcHJvcGVydHkpOgood2Via2l0X2RvbV90
ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfZ2V0X3Byb3BlcnR5KToKKHdlYmtpdF9kb21f
dGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdGVkKToKKHdlYmtpdF9kb21f
dGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NsYXNzX2luaXQpOgood2Via2l0X2RvbV90
ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfaW5pdCk6CihXZWJLaXQ6OndyYXBUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcik6CiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDogQWRkZWQuCiogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2
YXRlLmg6IEFkZGVkLgoqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcDogQWRkZWQuCihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3I6OmNsYXNzSW5mbyk6CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CihXZWJDb3JlOjpKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CihXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzZWxmKToK
KFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdCk6CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgooV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CihXZWJDb3JlOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cik6CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5
cGUpOgooV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CihXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IpOgooV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0
Q29uc3RydWN0b3IpOgooV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kKToKKFdlYkNvcmU6OnRvSlMpOgooV2ViQ29yZTo6dG9UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcik6CiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDogQWRkZWQuCihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpjbGFzc0luZm8pOgooV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlU3RydWN0dXJlKToKKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI6OmltcGwpOgooV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZTo6Y2xhc3NJbmZvKToKKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CihXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKToKKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oOiBBZGRlZC4KKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5tbTogQWRkZWQuCigtW0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyIGRlYWxsb2NdKToKKC1bRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgZmluYWxp
emVdKToKKC1bRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgbWV0aG9kOl0pOgooY29yZSk6
CihraXQpOgoqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVySW50ZXJuYWwuaDogQWRkZWQuCiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbDogQWRkZWQuCiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOiBBZGRlZC4KKFdlYkNvcmU6OlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWw6OlY4X1VTRSk6CihXZWJDb3JlOjpUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckludGVybmFsOjptZXRob2RDYWxsYmFjayk6CihXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUpOgooV2ViQ29y
ZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0UmF3VGVtcGxhdGUpOgooV2ViQ29y
ZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUpOgooV2ViQ29yZTo6
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UpOgooV2ViQ29yZTo6VjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3cpOgooV2ViQ29yZTo6VjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVyZWZPYmplY3QpOgoqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6IEFkZGVkLgooV2ViQ29yZTo6VjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9OYXRpdmUpOgooV2ViQ29yZTo6VjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcCk6CihXZWJDb3JlOjp0b1Y4KToKLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODEgKysrKysr
KysKIC4uLi90ZXN0L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgIHwg
ICA5MiArKysrKysrKysKIC4uLi90ZXN0L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oICAgIHwgICA1NSArKysrKysKIC4uLi9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAgICAgICAgIHwgIDE2MyArKysrKysrKysrKysrKysrCiAuLi4vR09iamVjdC9X
ZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICB8ICAgNTQgKysrKysrCiAuLi4v
V2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlLmggICB8ICAgMzkgKysr
KwogLi4uL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgICAgICAgfCAg
MTk0ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaCB8ICAgODcgKysrKysrKysrCiAuLi4vdGVzdC9PYmpDL0RPTVRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggICAgICB8ICAgMzcgKysrKwogLi4uL3Rlc3QvT2Jq
Qy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5tbSAgICAgfCAgIDk1ICsrKysrKysrKysK
IC4uLi9PYmpDL0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWwuaCAgIHwgICAz
OCArKysrCiAuLi4vc2NyaXB0cy90ZXN0L1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbCAg
ICB8ICAgMzIgKysrKwogLi4uL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAgICAgICAgfCAgMTA5ICsrKysrKysrKysrCiAuLi4vc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCB8ICAgNzIgKysrKysrKwogMTQgZmlsZXMgY2hhbmdlZCwg
MTE0OCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5t
bQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJJbnRlcm5hbC5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGZjODlmMjMuLjBmZTU1YjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTAtMTAtMjAgIEx1aXog
QWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIgYmluZGluZyB0ZXN0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODAyOAorCisgICAgICAgIE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIg
dHlwZSB3aWxsIG5lZWQgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGUgY29kZSBnZW5lcmF0b3JzLiBB
ZGRpbmcgdGhlIHRlc3QgY2FzZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6V2ViRE9NVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcml2YXRlOjpXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZh
dGUpOgorICAgICAgICAoV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OldlYkRPTVRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkRPTVRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViRE9NVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OmltcGwpOgorICAgICAgICAoV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6On5XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgIChXZWJE
T01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6bWV0aG9kKToKKyAgICAgICAgKHRvV2ViQ29y
ZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfbWV0aG9kKToKKyAgICAg
ICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlf
bGlzdF9saXN0ZW5lcl9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfbWVkaWFf
cXVlcnlfbGlzdF9saXN0ZW5lcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdGVkKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJf
aW5pdCk6CisgICAgICAgIChXZWJLaXQ6OndyYXBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNsYXNzSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzZWxm
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjp+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjbGFzc0luZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y2xhc3NJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5tbTogQWRkZWQuCisgICAg
ICAgICgtW0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgZmluYWxpemVdKToKKyAgICAgICAgKC1b
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgbWV0aG9kOl0pOgorICAgICAgICAoY29yZSk6
CisgICAgICAgIChraXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVySW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckludGVybmFsOjptZXRob2RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0UmF3VGVt
cGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6d3JhcFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6ZGVyZWZPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9OYXRpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcCk6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4KToKKwogMjAxMC0xMC0xOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NDNmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIK
KworI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldlYkRPTU1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworc3RydWN0IFdlYkRPTVRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
aXZhdGUgeworICAgIFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZShXZWJD
b3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogb2JqZWN0ID0gMCkKKyAgICAgICAgOiBp
bXBsKG9iamVjdCkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiBpbXBsOworfTsKKworV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI6OldlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKCkKKyAgICA6IFdlYkRP
TU9iamVjdCgpCisgICAgLCBtX2ltcGwoMCkKK3sKK30KKworV2ViRE9NVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OldlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFdlYkNvcmU6OlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsKQorICAgIDogV2ViRE9NT2JqZWN0KCkKKyAg
ICAsIG1faW1wbChuZXcgV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlKGlt
cGwpKQoreworfQorCitXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6V2ViRE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoY29uc3QgV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXImIGNvcHkpCisgICAgOiBXZWJET01PYmplY3QoKQoreworICAgIG1faW1wbCA9IGNvcHku
aW1wbCgpID8gbmV3IFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZShjb3B5
LmltcGwoKSkgOiAwOworfQorCitXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYgV2Vi
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Om9wZXJhdG9yPShjb25zdCBXZWJET01UZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYgY29weSkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAg
IG1faW1wbCA9IGNvcHkuaW1wbCgpID8gbmV3IFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOworICAgIHJldHVybiAqdGhpczsKK30KKworV2Vi
Q29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjppbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5p
bXBsLmdldCgpIDogMDsKK30KKworV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6On5X
ZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcigpCit7CisgICAgZGVsZXRlIG1faW1wbDsK
KyAgICBtX2ltcGwgPSAwOworfQorCit2b2lkIFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjptZXRob2QoY29uc3QgV2ViRE9NTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYgbGlzdGVuZXIp
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+bWV0
aG9kKHRvV2ViQ29yZShsaXN0ZW5lcikpOworfQorCitXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyJiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKK30KKworV2ViRE9N
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgdG9XZWJLaXQoV2ViQ29yZTo6VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIHZhbHVlKQoreworICAgIHJldHVybiBXZWJET01UZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcih2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmODk4MzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcl9oCisjZGVmaW5lIFdlYkRPTVRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgorI2lu
Y2x1ZGUgPFdlYkRPTVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjsKK307CisKK2NsYXNzIFdlYkRPTU1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI7CisKK2NsYXNzIFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVi
bGljIFdlYkRPTU9iamVjdCB7CitwdWJsaWM6CisgICAgV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIoKTsKKyAgICBleHBsaWNpdCBXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cihXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciopOworICAgIFdlYkRPTVRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKGNvbnN0IFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyJik7CisgICAgV2ViRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXImIG9wZXJhdG9yPShj
b25zdCBXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYpOworICAgIHZpcnR1YWwgfldl
YkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKCk7CisKKyAgICB2b2lkIG1ldGhvZChjb25z
dCBXZWJET01NZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJiBsaXN0ZW5lcik7CisKKyAgICBXZWJDb3Jl
OjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6
CisgICAgc3RydWN0IFdlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZTsKKyAg
ICBXZWJET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUqIG1faW1wbDsKK307CisK
K1dlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1dlYkNvcmUoY29uc3QgV2Vi
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXImKTsKK1dlYkRPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKik7
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjkzMDBkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxNjMgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJnb2JqZWN0L0NvbnZl
cnRUb1VURjhTdHJpbmcuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01NZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCisjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2dwb2lu
dGVyIGtpdChXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogb2JqKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiwgMCk7CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0g
RE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0
dXJuIERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6OndyYXBUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcihvYmopKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdCAvLworCit2
b2lkCit3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9tZXRob2QoV2Vi
S2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHNlbGYsIFdlYktpdERPTU1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6
OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKGxpc3RlbmVyKTsKKyAgICBXZWJDb3JlOjpNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyICogY29udmVydGVkX2xpc3RlbmVyID0gTlVMTDsKKyAgICBpZiAobGlzdGVu
ZXIgIT0gTlVMTCkgeworICAgICAgICBjb252ZXJ0ZWRfbGlzdGVuZXIgPSBXZWJLaXQ6OmNvcmUo
bGlzdGVuZXIpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF9saXN0ZW5lcik7
CisgICAgfQorICAgIGl0ZW0tPm1ldGhvZChjb252ZXJ0ZWRfbGlzdGVuZXIpOworfQorCisKK0df
REVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIHdlYmtpdF9k
b21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNU
KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIqIGNvcmUoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHJlcXVlc3Qp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJDb3Jl
OjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVx
dWVzdCktPmNvcmVPYmplY3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3Qs
IDApOworCisgICAgcmV0dXJuIGNvcmVPYmplY3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorZW51bSB7CisgICAgUFJPUF8wLAorfTsKKworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7
CisgICAgV2ViS2l0RE9NT2JqZWN0KiBkb21fb2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2Jq
ZWN0KTsKKyAgICAKKyAgICBpZiAoZG9tX29iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBX
ZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyICo+KGRvbV9vYmplY3QtPmNv
cmVPYmplY3QpOworCisgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3Jl
T2JqZWN0KTsKKyAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKworICAgICAgICBkb21fb2Jq
ZWN0LT5jb3JlT2JqZWN0ID0gTlVMTDsKKyAgICB9CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9wYXJlbnRfY2xhc3MpLT5maW5h
bGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVl
cnlfbGlzdF9saXN0ZW5lcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKwor
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkK
K3sKKworICAgIGlmIChHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlf
bGlzdF9saXN0ZW5lcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZCkKKyAgICAgICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfcGFyZW50
X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzICpnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAg
IGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlz
dF9saXN0ZW5lcl9maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdl
YmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX3NldF9wcm9wZXJ0eTsKKyAg
ICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVy
eV9saXN0X2xpc3RlbmVyX2dldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVj
dGVkID0gd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfY29uc3RydWN0
ZWQ7CisKKworCit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9s
aXN0X2xpc3RlbmVyX2luaXQoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHJl
cXVlc3QpCit7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIHdyYXBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihXZWJDb3JlOjpU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVy
IHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEg
QysrIG9iamVjdAorICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBT
ZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCisgICAgICogbWF0Y2hpbmcgZGVyZWYoKS4K
KyAgICAgKi8KKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKworICAgIHJldHVybiAgV0VCS0lUX0RP
TV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5V
TEwpKTsKK30KK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjk0ZTgyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdlYktpdERP
TVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJfaAorCisjaW5jbHVkZSAid2Via2l0L3dlYmtpdGRvbWRlZmluZXMu
aCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZp
bmVzLmg+CisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTU9iamVjdC5oIgorCisKK0dfQkVHSU5f
REVDTFMKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNU
RU5FUiAgICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5l
cl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9M
SVNURU5FUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSLCBXZWJLaXRE
T01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcikpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9N
RURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1Rf
TElTVEVORVIsIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2xhc3MpCisjZGVm
aW5lIFdFQktJVF9ET01fSVNfVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSKG9iaikgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9U
RVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RF
U1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNU
X0xJU1RFTkVSKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElT
VEVORVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAg
V0VCS0lUX1RZUEVfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUiwgV2ViS2l0RE9N
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDbGFzcykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5z
dGFuY2U7Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dF
QktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVy
X2dldF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3RfbWVk
aWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9tZXRob2QoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqIHNlbGYsIFdlYktpdERPTU1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGxpc3RlbmVy
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyX2ggKi8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM4YmE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBXRUJf
S0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJfUFJJVkFURV9ICisjZGVmaW5l
IFdFQl9LSVRfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUl9QUklWQVRFX0gKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVj
dC5oPgorI2luY2x1ZGUgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCituYW1lc3BhY2Ug
V2ViS2l0IHsKKyAgICBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqCisgICAg
d3JhcFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyICpjb3JlT2JqZWN0KTsKKworICAgIFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyICoKKyAgICBjb3JlKFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
ICpyZXF1ZXN0KTsKKworICAgIGdwb2ludGVyCisgICAga2l0KFdlYkNvcmU6OlRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiBub2RlKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvKiBXRUJfS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJfUFJJVkFURV9I
ICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNkZTk2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAt
MCwwICsxLDE5NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIp
OworCisvKiBIYXNoIHRhYmxlICovCisjaWYgRU5BQkxFKEpJVCkKKyNkZWZpbmUgVEhVTktfR0VO
RVJBVE9SKGdlbmVyYXRvcikgLCBnZW5lcmF0b3IKKyNlbHNlCisjZGVmaW5lIFRIVU5LX0dFTkVS
QVRPUihnZW5lcmF0b3IpCisjZW5kaWYKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUYWJsZVZhbHVlc1syXSA9Cit7CisgICAgeyAiY29u
c3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgMCwgMCwg
MCwgMCBUSFVOS19HRU5FUkFUT1IoMCkgfQorfTsKKworI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgor
c3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJUYWJsZSA9IHsgMiwgMSwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxl
VmFsdWVzLCAwIH07CisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworI2lmIEVOQUJM
RShKSVQpCisjZGVmaW5lIFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpICwgZ2VuZXJhdG9yCisj
ZWxzZQorI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKQorI2VuZGlmCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlc1sxXSA9Cit7CisgICAgeyAwLCAwLCAwLCAwIFRIVU5LX0dFTkVSQVRP
UigwKSB9Cit9OworCisjdW5kZWYgVEhVTktfR0VORVJBVE9SCitzdGF0aWMgSlNDX0NPTlNUX0hB
U0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
VGFibGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRh
YmxlVmFsdWVzLCAwIH07CitjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworcHVibGljOgorICAgIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiAmc19pbmZvOyB9CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZShwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CisgICAgfQorcHJvdGVjdGVkOgorICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1
Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgMCwgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvclRhYmxlLCAwIH07CisKK0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERP
TUNvbnN0cnVjdG9yT2JqZWN0KEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9i
YWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKK30KKworYm9vbCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yLCBET01PYmplY3Q+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKworYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yLCBET01PYmplY3Q+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwor
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisjaWYgRU5BQkxFKEpJVCkKKyNkZWZpbmUg
VEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBnZW5lcmF0b3IKKyNlbHNlCisjZGVmaW5lIFRI
VU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpCisjZW5kaWYKKworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZVZhbHVlc1sy
XSA9Cit7CisgICAgeyAibWV0aG9kIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZCksIChpbnRwdHJfdCkxIFRIVU5LX0dFTkVSQVRPUigwKSB9
LAorICAgIHsgMCwgMCwgMCwgMCBUSFVOS19HRU5FUkFUT1IoMCkgfQorfTsKKworI3VuZGVmIFRI
VU5LX0dFTkVSQVRPUgorc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSA9IHsgMiwgMSwgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07Citjb25zdCBDbGFz
c0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUiLCAwLCAmSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlLCAwIH07CisKK0pTT2JqZWN0KiBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2Jv
b2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwg
dGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpT
T2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxl
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIiLCAwLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxlLCAwIH07
CisKK0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI+IGltcGwpCisgICAgOiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCkKKyAgICAsIG1faW1wbChpbXBsKQoreworfQorCitKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjp+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcigpCit7CisgICAgZm9y
Z2V0RE9NT2JqZWN0KHRoaXMsIGltcGwoKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSkpOworfQorCitib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0
aWNWYWx1ZVNsb3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciwgQmFzZT4oZXhlYywgJkpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIEJhc2U+KGV4
ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUsIHRoaXMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7Cit9CisKK0pTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCit7CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogZG9tT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CisgICAgcmV0dXJuIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldENv
bnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworfQorSlNWYWx1ZSBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzX2luZm8pKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
KiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CisgICAgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogbGlzdGVuZXIgPSB0b01l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKworICAgIGltcC0+bWV0aG9kKGxpc3RlbmVyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NT2JqZWN0V3JhcHBl
cjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVj
dCk7Cit9CitUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcihKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRz
KCZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzX2luZm8pID8gc3RhdGljX2Nhc3Q8SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xODYzNzAzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyX2gKKyNkZWZpbmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cl9oCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3Qu
aD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOworCitjbGFzcyBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIERPTU9iamVjdFdpdGhHbG9iYWxQb2lu
dGVyIHsKKyAgICB0eXBlZGVmIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyIEJhc2U7CitwdWJs
aWM6CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihOb25OdWxsUGFzc1JlZlB0cjxK
U0M6OlN0cnVjdHVyZT4sIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcj4pOworICAgIHZpcnR1YWwgfkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIoKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgdmlydHVhbCBj
b25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsg
fQorICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4gbV9pbXBsOworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqKTsKK1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKEpTQzo6SlNW
YWx1ZSk7CisKK2NsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUgOiBw
dWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgeworICAgIHR5cGVkZWYgSlNDOjpK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biAmc19pbmZvOyB9CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCk7CisgICAgfQorICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90
b3R5cGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0
cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworLy8gRnVuY3Rpb25zCisKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKKy8vIEF0dHJpYnV0
ZXMKKworSlNDOjpKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBiZTgw
NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01P
YmplY3QuaD4KKworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJT
SU9OX0xBVEVTVAorCitAY2xhc3MgRE9NTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjsKKworQGludGVy
ZmFjZSBET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA6IERPTU9iamVjdAorLSAodm9pZClt
ZXRob2Q6KERPTU1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKilsaXN0ZW5lcjsKK0BlbmQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLm1tIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NGUzZDUyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5t
bQpAQCAtMCwwICsxLDk1IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oIgorCisjaW1wb3J0ICJET01CbG9iSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ1NTVmFsdWVJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTWVkaWFRdWVy
eUxpc3RMaXN0ZW5lckludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTVN0eWxlU2hlZXRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
KyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIgorI2ltcG9ydCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKKyNp
bXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2lt
cG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
CisjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcio+KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2Jq
Q1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIgY2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5h
bCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KHZvaWQpZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJl
ZigpOworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKHZvaWQpbWV0aG9kOihET01NZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyICopbGlzdGVuZXIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+bWV0aG9kKGNvcmUobGlzdGVuZXIpKTsKK30K
KworQGVuZAorCitXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZShET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBl
ciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
Pih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIgKmtpdChXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdmFsdWUpCit7
CisgICAgeyBET01fQVNTRVJUX01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVja1JvdW5kT25lKCk7IH07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBpZiAoRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKndyYXBwZXIgPSBnZXRET01X
cmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKKyAgICBET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqd3JhcHBlciA9IFtbRE9N
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgYWxsb2NdIF9pbml0XTsKKyAgICB3cmFwcGVyLT5f
aW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwor
ICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKKyAg
ICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcklu
dGVybmFsLmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMTQyMWEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckludGVybmFsLmgKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaD4KKworI2lmIFdFQktJVF9WRVJTSU9O
X01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgY2xhc3MgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI7Cit9CisKK1dlYkNvcmU6
OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjb3JlKERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyICopOworRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKmtpdChXZWJDb3JlOjpU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbCBi
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzYzOTNiCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0
b3Igd2l0aCBhbiBpbnRlcmZhY2UKKy8vIHRoYXQgaGFzIG1ldGhvZHMgcmVjZWl2aW5nIGEgcGFy
YW1ldGVyIG9mIHRoZSB0eXBlIE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuCittb2R1bGUgdGVzdCB7
CisgICAgaW50ZXJmYWNlIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKKyAgICAgICAgdm9p
ZCBtZXRob2QoaW4gTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBsaXN0ZW5lcik7CisgICAgfTsKK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMWY3OGYzOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCisjaW5jbHVkZSAi
VjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJW
OElzb2xhdGVkQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXcmFwcGVy
VHlwZUluZm8gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbyA9IHsgVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmRlcmVmT2JqZWN0LCAwIH07CisKK25hbWVzcGFjZSBUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckludGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQp
IHsgfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIubWV0aG9kIik7CisgICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcCA9IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiwgbGlzdGVu
ZXIsIFY4TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoYXJnc1swXSkpIDogMCk7CisgICAgaW1wLT5tZXRob2QobGlzdGVuZXIpOworICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJJbnRlcm5hbAorCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKK3sKKyAgICB2
ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBs
YXRlKGRlc2MsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbnRl
cm5hbEZpZWxkQ291bnQsCisgICAgICAgIDAsIDAsCisgICAgICAgIDAsIDApOworICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJv
dG90eXBlVGVtcGxhdGUoKTsKKyAgICAKKworICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhv
ZCcKKyAgICBjb25zdCBpbnQgbWV0aG9kQXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gbWV0aG9kQXJndlttZXRob2RBcmdjXSA9IHsgVjhNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSgpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBtZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kQXJn
YywgbWV0aG9kQXJndik7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoIm1ldGhvZCIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50
ZXJuYWw6Om1ldGhvZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgbWV0aG9kU2ln
bmF0dXJlKSk7CisKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKKyAgICBkZXNjLT5T
ZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgcmV0dXJu
IGRlc2M7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSgpCit7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUmF3Q2FjaGUgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOworICAgIHJldHVybiBWOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUmF3Q2FjaGU7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1wbGF0
ZSgpCit7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2FjaGUgPSBDb25maWd1cmVWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgcmV0dXJuIFY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWNoZTsKK30KKworYm9vbCBWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUp
Cit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCktPkhhc0luc3RhbmNlKHZhbHVlKTsKK30K
KworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OndyYXBTbG93KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsKQoreworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKKyAgICBWOFByb3h5KiBwcm94eSA9IDA7CisgICAg
d3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwgJmluZm8s
IGltcGwpOworICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisKKyAgICBpbXBsLT5yZWYoKTsKKyAgICBnZXRET01PYmplY3RNYXAoKS5zZXQoaW1wbCwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CisgICAgcmV0dXJuIHdy
YXBwZXI7Cit9CisKK3ZvaWQgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVyZWZPYmpl
Y3Qodm9pZCogb2JqZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKj4ob2JqZWN0KS0+ZGVyZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjkwOGQ5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcl9oCisjZGVmaW5lIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJfaAorCisjaW5jbHVk
ZSAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIu
aCIKKyNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKKyNpbmNsdWRlICJ3dGYvdGV4dC9TdHJp
bmdIYXNoLmgiCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIg
eworCitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOworICAgIHN0YXRpYyBUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCisg
ICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcio+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBl
ck9iamVjdEluZGV4KSk7CisgICAgfQorICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKik7CisgICAgc3RhdGljIHZv
aWQgZGVyZWZPYmplY3Qodm9pZCopOworICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsK
KyAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBw
ZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworcHJpdmF0ZToKKyAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciopOworfTsK
KworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OndyYXAoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwpCit7CisgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsK
KyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwU2xvdyhp
bXBsKTsKK30KKworaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiBpbXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJu
IHY4OjpOdWxsKCk7CisgICAgcmV0dXJuIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Ondy
YXAoaW1wbCk7Cit9CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0
cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsKQoreworICAgIHJldHVybiB0b1Y4
KGltcGwuZ2V0KCkpOworfQorfQorCisjZW5kaWYgLy8gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcl9oCi0tIAoxLjcuMi4yCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>