<?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>82276</bug_id>
          
          <creation_ts>2012-03-26 17:56:20 -0700</creation_ts>
          <short_desc>Speech* files should be moved from page/ to Modules/speech/</short_desc>
          <delta_ts>2017-07-18 08:29:48 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>79327</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588392</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-26 17:56:20 -0700</bug_when>
    <thetext>It looks there is no reason to stay there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664503</commentid>
    <comment_count>1</comment_count>
      <attachid>151166</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-08 15:40:54 -0700</bug_when>
    <thetext>Created attachment 151166
Working in Progress - for chromium, gtk and efl

Hello Hajime,

Do you think this bug is still valid ? If so, I make a patch for chromium, gtk, and efl in order to help you fix this bug. If you don&apos;t have time, I&apos;m able to submit a patch for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664504</commentid>
    <comment_count>2</comment_count>
      <attachid>151166</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-08 15:54:33 -0700</bug_when>
    <thetext>Comment on attachment 151166
Working in Progress - for chromium, gtk and efl

Attachment 151166 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13166047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664505</commentid>
    <comment_count>3</comment_count>
      <attachid>151166</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-08 15:54:53 -0700</bug_when>
    <thetext>Comment on attachment 151166
Working in Progress - for chromium, gtk and efl

Attachment 151166 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13160244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664506</commentid>
    <comment_count>4</comment_count>
      <attachid>151166</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-08 15:58:42 -0700</bug_when>
    <thetext>Comment on attachment 151166
Working in Progress - for chromium, gtk and efl

Attachment 151166 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13151977</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664507</commentid>
    <comment_count>5</comment_count>
      <attachid>151166</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-08 16:09:30 -0700</bug_when>
    <thetext>Comment on attachment 151166
Working in Progress - for chromium, gtk and efl

Attachment 151166 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13157660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664526</commentid>
    <comment_count>6</comment_count>
      <attachid>151166</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-08 18:22:01 -0700</bug_when>
    <thetext>Comment on attachment 151166
Working in Progress - for chromium, gtk and efl

Isn&apos;t there an include from HTMLInputElement to speech?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664527</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-08 18:23:25 -0700</bug_when>
    <thetext>I haven&apos;t fully chased this down, but there are at least some mentions of speech in HTMLInputElement:

http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLInputElement.cpp#L658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664538</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-08 19:07:54 -0700</bug_when>
    <thetext>To my quick searching, below files are related to INPUT_SPEECH macro.

 - css/CSSPrimitiveValueMappings.h
 - dom/Element.h
 - html/TextFieldInputType.h
 - html/HTMLInputElement.h
 - html/HTMLInputElement.cpp
 - html/shadow/TextControlInnerElements.h
 - html/InputType.h
 - html/TextFieldInputType.cpp

I&apos;m not sure whether page/SpeechInputXXX files can be moved to Modules/speech. It seems to me SpeechInput is used more than other modules out of Modules directory. Adam, I&apos;d like to know how do you think this ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664582</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-08 20:45:14 -0700</bug_when>
    <thetext>The idea behind Modules is that there shouldn&apos;t be any references to things inside the module from things outside the module (except perhaps from bindings or the inspector).  I suspect that this speech code is too tightly coupled to the input element to be a separate module at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664607</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-08 21:20:25 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The idea behind Modules is that there shouldn&apos;t be any references to things inside the module from things outside the module (except perhaps from bindings or the inspector).  I suspect that this speech code is too tightly coupled to the input element to be a separate module at this point.

BTW, it looks that files outside the modules only use them to support input speech button. In this case, can&apos;t we move it to Modules/speech ? If so, I think this bug needs to be closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151166</attachid>
            <date>2012-07-08 15:40:54 -0700</date>
            <delta_ts>2012-07-08 21:33:43 -0700</delta_ts>
            <desc>Working in Progress - for chromium, gtk and efl</desc>
            <filename>patch-speech.patch</filename>
            <type>text/plain</type>
            <size>85619</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTM1NzcwNy4uZTQ5NGZmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUsNiArNSw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbmRleGVkZGIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvaW50ZW50cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmljYXRp
b25zIgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3NwZWVjaCIKICAgICAiJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9xdW90YSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJhdWRp
byIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJkYXRhYmFzZSIKQEAgLTEwMCw2ICsx
MDEsNyBAQCBTRVQoV2ViQ29yZV9JRExfSU5DTFVERVMKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9u
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIKICAgICBNb2R1bGVzL3F1b3RhCisgICAgTW9kdWxlcy9z
cGVlY2gKICAgICBNb2R1bGVzL3dlYmF1ZGlvCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZQogICAg
IE1vZHVsZXMvd2Vic29ja2V0cwpAQCAtMTI3LDYgKzEyOSwxMCBAQCBTRVQoV2ViQ29yZV9JRExf
RklMRVMKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3IuaWRsCiAgICAgTW9k
dWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCiAKKyAgICBNb2R1bGVz
L3NwZWVjaC9TcGVlY2hJbnB1dEV2ZW50LmlkbAorICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaElu
cHV0UmVzdWx0LmlkbAorICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0TGlzdC5p
ZGwKKwogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmlkbApAQCAtNDAwLDkgKzQwNiw2IEBAIFNFVChXZWJDb3JlX0lE
TF9GSUxFUwogICAgIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5pZGwKICAgICBwYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmlkbAogICAgIHBhZ2UvU2NyZWVuLmlkbAotICAgIHBhZ2UvU3Bl
ZWNoSW5wdXRFdmVudC5pZGwKLSAgICBwYWdlL1NwZWVjaElucHV0UmVzdWx0LmlkbAotICAgIHBh
Z2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbAogICAgIHBhZ2UvV2ViS2l0QW5pbWF0aW9uLmlk
bAogICAgIHBhZ2UvV2ViS2l0QW5pbWF0aW9uTGlzdC5pZGwKICAgICBwYWdlL1dlYktpdFBvaW50
LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDI1MjVjZDYuLmI2NDhiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3OCBAQAorMjAxMi0wNy0wOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFNwZWVjaCogZmlsZXMgc2hvdWxkIGJlIG1vdmVkIGZyb20gcGFnZS8g
dG8gTW9kdWxlcy9zcGVlY2gvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MjI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBTcGVlY2hJbnB1dFhYWCBmaWxlcyBpbiBXZWJDb3JlL3BhZ2UgaXMgbm93
IHNlbGYtY29udGFpbmVkLiBUaGlzIHBhdGNoIG1vdmVzIGl0IHRvIHRoZSBNb2R1bGVzL3NwZWVj
aCBkaXJlY3RvcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6U3BlZWNoSW5wdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6On5TcGVlY2hJbnB1dCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0OjpyZWdpc3Rlckxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Ojp1bnJlZ2lzdGVyTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OmRp
ZENvbXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpkaWRD
b21wbGV0ZVJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzZXRS
ZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6Y2FuY2VsUmVjb2duaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OnByb3ZpZGVTcGVlY2hJbnB1dFRvKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hJbnB1dC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoSW5wdXRDbGllbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3BlZWNo
SW5wdXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQ6On5TcGVl
Y2hJbnB1dENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRFdmVu
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dEV2
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRFdmVudDo6U3BlZWNo
SW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dEV2ZW50Ojp+U3BlZWNo
SW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dEV2ZW50OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dEV2ZW50Lmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU3BlZWNoSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hJbnB1dEV2ZW50OjpyZXN1bHRzKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hJbnB1dEV2ZW50LmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRFdmVudC5pZGwuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5w
dXRMaXN0ZW5lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dExpc3RlbmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNwZWVjaElucHV0TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lcjo6flNwZWVjaElu
cHV0TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJl
c3VsdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0OjpTcGVl
Y2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y29u
ZmlkZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6dXR0ZXJhbmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3VsdC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogTW9kdWxl
cy9zcGVlY2gvU3BlZWNoSW5wdXRSZXN1bHQuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5pZGwuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRSZXN1bHRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXRSZXN1bHRMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaElucHV0UmVzdWx0TGlzdDo6U3BlZWNoSW5wdXRSZXN1bHRMaXN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFNwZWVjaElucHV0UmVzdWx0TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hJbnB1dFJlc3VsdExpc3Q6Omxlbmd0aCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisK
IDIwMTItMDctMDggIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBzaG91bGQg
bm90IGdlbmVyYXRlIHN0YXRlbWVudHMgd2l0aCBubyBlZmZlY3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGE5Yzk5YTEuLmE3ODA0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTEwLDYgKzExMCw5IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoSW5wdXRSZXN1bHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVj
aElucHV0UmVzdWx0TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9ET01X
aW5kb3dRdW90YS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5m
by5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mb0Vycm9yQ2Fs
bGJhY2suaWRsIFwKQEAgLTQxNSw5ICs0MTgsNiBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkv
cGFnZS9QZXJmb3JtYW5jZVRpbWluZy5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9TY3JlZW4u
aWRsIFwKLSAgICAkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5pZGwgXAotICAgICQo
V2ViQ29yZSkvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5pZGwgXAotICAgICQoV2ViQ29yZSkvcGFn
ZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvV2ViS2l0
QW5pbWF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1dlYktpdEFuaW1hdGlvbkxpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvV2ViS2l0UG9pbnQuaWRsIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggYjgyNWYwYi4uNTdlZmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE3
LDYgKzE3LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucyBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2ggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8gXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cyBcCkBAIC04NzMsNiArODc0LDcg
QEAgSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zcGVlY2ggXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRh
dGFiYXNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cyBcCkBAIC0xMDQxLDYg
KzEwNDMsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vKi5pZGwpIFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvKi5pZGwpIFwK
KwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC8qLmlk
bCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzLyouaWRsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCAzNWI2ZDVkLi5kMjE5NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTcxMyw2ICs3MTMsOSBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0RXZlbnQuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0LmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaWRsIFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCkBAIC05NzAsOSArOTczLDYgQEAgZG9t
X2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaWRsIFwKIAkkKFdlYkNvcmUpL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaWRsIFwKIAkk
KFdlYkNvcmUpL3BhZ2UvU2NyZWVuLmlkbCBcCi0JJChXZWJDb3JlKS9wYWdlL1NwZWVjaElucHV0
RXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaWRsIFwKLQkk
KFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9w
YWdlL1dlYktpdEFuaW1hdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvcGFnZS9XZWJLaXRBbmltYXRp
b25MaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL1dlYktpdFBvaW50LmlkbCBcCkBAIC0xMjA2
LDYgKzEyMDYsMTYgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaElucHV0Q2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaElucHV0RXZlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hJbnB1dEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaElucHV0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5w
dXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRMaXN0ZW5l
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3VsdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0TGlzdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0TGlz
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJh
c2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJz
aW9uV3JhcHBlci5jcHAgXApAQCAtMzA5MiwxNiArMzEwMiw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50Lmgg
XAotCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCBcCi0JU291cmNlL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRSZXN1bHQuaCBcCi0JU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3Vs
dExpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFR5cGVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoSW5wdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoSW5wdXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMjhlZjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJ
bnB1dC5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3BlZWNoSW5wdXQuaCIKKworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCisjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3BlZWNoSW5wdXQ6OlNwZWVjaElucHV0KFNwZWVjaElu
cHV0Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX25leHRM
aXN0ZW5lcklkKDEpCit7CisgICAgbV9jbGllbnQtPnNldExpc3RlbmVyKHRoaXMpOworfQorCitT
cGVlY2hJbnB1dDo6flNwZWVjaElucHV0KCkKK3sKKyAgICBtX2NsaWVudC0+c2V0TGlzdGVuZXIo
MCk7Cit9CisKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXQ+IFNwZWVjaElucHV0OjpjcmVhdGUoU3Bl
ZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVj
aElucHV0KGNsaWVudCkpOworfQorCitpbnQgU3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIo
U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisjaWYgZGVmaW5lZChERUJVRykKKyAg
ICAvLyBDaGVjayBpZiBhbHJlYWR5IHByZXNlbnQuCisgICAgZm9yIChIYXNoTWFwPGludCwgU3Bl
ZWNoSW5wdXRMaXN0ZW5lcio+OjppdGVyYXRvciBpdCA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7IGl0
ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQorICAgICAgQVNTRVJUKGl0LT5zZWNvbmQgIT0g
bGlzdGVuZXIpOworI2VuZGlmCisKKyAgICBtX2xpc3RlbmVycy5hZGQobV9uZXh0TGlzdGVuZXJJ
ZCwgbGlzdGVuZXIpOworICAgIHJldHVybiBtX25leHRMaXN0ZW5lcklkKys7Cit9CisKK3ZvaWQg
U3BlZWNoSW5wdXQ6OnVucmVnaXN0ZXJMaXN0ZW5lcihpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICBp
ZiAobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpCisgICAgICAgIG1fbGlzdGVuZXJz
LnJlbW92ZShsaXN0ZW5lcklkKTsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVS
ZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IGlmIG5vdCBw
cmVzZW50IGFzIHRoZSBlbGVtZW50IG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSBwYWdl
IHdoaWxlCisgICAgLy8gdGhpcyBldmVudCB3YXMgb24gdGhlIHdheS4KKyAgICBpZiAobV9saXN0
ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpCisgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0
ZW5lcklkKS0+ZGlkQ29tcGxldGVSZWNvcmRpbmcobGlzdGVuZXJJZCk7Cit9CisKK3ZvaWQgU3Bl
ZWNoSW5wdXQ6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQpCit7CisgICAg
Ly8gRG9uJ3QgYXNzZXJ0IGlmIG5vdCBwcmVzZW50IGFzIHRoZSBlbGVtZW50IG1pZ2h0IGhhdmUg
YmVlbiByZW1vdmVkIGJ5IHRoZSBwYWdlIHdoaWxlCisgICAgLy8gdGhpcyBldmVudCB3YXMgb24g
dGhlIHdheS4KKyAgICBpZiAobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpCisgICAg
ICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihs
aXN0ZW5lcklkKTsKK30KKwordm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQo
aW50IGxpc3RlbmVySWQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdCkKK3sK
KyAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQg
aGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKKyAgICAvLyB0aGlzIGV2ZW50IHdh
cyBvbiB0aGUgd2F5LgorICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkK
KyAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3Vs
dChsaXN0ZW5lcklkLCByZXN1bHQpOworfQorCitib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29n
bml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyLCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5l
cklkKSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQs
IGVsZW1lbnRSZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgb3JpZ2luKTsKK30KKwordm9pZCBTcGVl
Y2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICBBU1NFUlQobV9s
aXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOworICAgIG1fY2xpZW50LT5zdG9wUmVjb3Jk
aW5nKGxpc3RlbmVySWQpOworfQorCit2b2lkIFNwZWVjaElucHV0OjpjYW5jZWxSZWNvZ25pdGlv
bihpbnQgbGlzdGVuZXJJZCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlz
dGVuZXJJZCkpOworICAgIG1fY2xpZW50LT5jYW5jZWxSZWNvZ25pdGlvbihsaXN0ZW5lcklkKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTcGVlY2hJbnB1dDo6c3VwcGxlbWVudE5hbWUoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIlNwZWVjaElu
cHV0IikpOworICAgIHJldHVybiBuYW1lOworfQorCit2b2lkIHByb3ZpZGVTcGVlY2hJbnB1dFRv
KFBhZ2UqIHBhZ2UsIFNwZWVjaElucHV0Q2xpZW50KiBjbGllbnQpCit7CisgICAgU3BlZWNoSW5w
dXQ6OnByb3ZpZGVUbyhwYWdlLCBTcGVlY2hJbnB1dDo6c3VwcGxlbWVudE5hbWUoKSwgU3BlZWNo
SW5wdXQ6OmNyZWF0ZShjbGllbnQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hJbnB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAx
MTQ4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hJbnB1dC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNwZWVjaElucHV0X2gKKyNkZWZp
bmUgU3BlZWNoSW5wdXRfaAorCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNwZWVj
aElucHV0Q2xpZW50OworY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKKworLy8gVGhpcyBjbGFz
cyBjb25uZWN0cyB0aGUgaW5wdXQgZWxlbWVudHMgcmVxdWlyaW5nIHNwZWVjaCBpbnB1dCB3aXRo
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYworLy8gc3BlZWNoIHJlY29nbml0aW9uIGVuZ2luZS4gSXQg
cHJvdmlkZXMgbWV0aG9kcyBmb3IgdGhlIGlucHV0IGVsZW1lbnRzIHRvIGFjdGl2YXRlIHNwZWVj
aAorLy8gcmVjb2duaXRpb24gYW5kIG1ldGhvZHMgZm9yIHRoZSBzcGVlY2ggcmVjb2duaXRpb24g
ZW5naW5lIHRvIHJldHVybiBiYWNrIHRoZSByZXN1bHRzLgorY2xhc3MgU3BlZWNoSW5wdXQgOiBw
dWJsaWMgU3BlZWNoSW5wdXRMaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIFN1
cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWVjaElucHV0KTsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dCgpOworCisgICAgc3RhdGljIFBhc3NP
d25QdHI8U3BlZWNoSW5wdXQ+IGNyZWF0ZShTcGVlY2hJbnB1dENsaWVudCopOworICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CisgICAgc3RhdGljIFNwZWVj
aElucHV0KiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWVjaElucHV0
Kj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KKwor
ICAgIC8vIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgdGhlIGdpdmVuIGxpc3RlbmVyIHRvIGJl
IHVzZWQgZm9yIHNwZWVjaCByZXF1ZXN0cy4KKyAgICAvLyBUaGlzIHNob3VsZCBiZSB0aGUgZmly
c3QgY2FsbCBtYWRlIGJ5IGxpc3RlbmVycyBiZWZvcmUgYW55dGhpbmcgZWxzZS4KKyAgICBpbnQg
cmVnaXN0ZXJMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKik7CisKKyAgICAvLyBJbnZva2Vk
IHdoZW4gdGhlIGxpc3RlbmVyIGlzIGRvbmUgd2l0aCByZWNvcmRpbmcgb3IgZ2V0dGluZyBkZXN0
cm95ZWQuCisgICAgLy8gRmFpbHVyZSB0byB1bnJlZ2lzdGVyIG1heSByZXN1bHQgaW4gY3Jhc2hl
cyBpZiB0aGVyZSB3ZXJlIGFueSBwZW5kaW5nIHNwZWVjaCBldmVudHMuCisgICAgdm9pZCB1bnJl
Z2lzdGVyTGlzdGVuZXIoaW50KTsKKworICAgIC8vIE1ldGhvZHMgaW52b2tlZCBieSB0aGUgaW5w
dXQgZWxlbWVudHMuCisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBj
b25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgU3RyaW5nJiBncmFtbWFyLCBTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgc3RvcFJl
Y29yZGluZyhpbnQpOworICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKKworICAgIC8v
IFNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVSZWNvcmRpbmcoaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlv
bihpbnQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0
IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmKTsKKworcHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1dChT
cGVlY2hJbnB1dENsaWVudCopOworCisgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fY2xpZW50Owor
ICAgIEhhc2hNYXA8aW50LCBTcGVlY2hJbnB1dExpc3RlbmVyKj4gbV9saXN0ZW5lcnM7CisgICAg
aW50IG1fbmV4dExpc3RlbmVySWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisjZW5kaWYgLy8gU3BlZWNoSW5wdXRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0Q2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2Zjk3OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0Q2xpZW50LmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU3BlZWNoSW5wdXRDbGllbnRfaAorI2RlZmluZSBTcGVlY2hJbnB1
dENsaWVudF9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRSZWN0OworY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CitjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOworY2xhc3MgUGFnZTsK
KworLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBTcGVlY2hJbnB1dCB0byBjYWxsIGludG8g
dGhlIGVtYmVkZGVyLgorY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQgeworcHVibGljOgorICAgIC8v
IFRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgbWFkZSBieSBhIGxpc3RlbmVyLCByZWdpc3RlcmluZyBp
dHNlbGYgZm9yIGZ1dHVyZSBjYWxsYmFja3MuCisgICAgLy8gV2hlbiB0aGUgbGlzdGVuZXIgbm8g
bG9uZ2VyIG5lZWRzIHNwZWVjaCBpbnB1dCAoZm9yIGUuZy4gd2hlbiBpdCBnZXRzIGRlc3Ryb3ll
ZCksCisgICAgLy8gaXQgc2hvdWxkIHNldCBhIG51bGwgbGlzdGVuZXIgdG8gc3RvcCByZWNlaXZp
bmcgY2FsbGJhY2tzLgorICAgIC8vIFRoZSBjbGllbnQgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAg
b2YgdGhlIHBvaW50ZXIuCisgICAgdmlydHVhbCB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0
TGlzdGVuZXIqKSA9IDA7CisKKyAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uIGFuZCBh
dWRpbyByZWNvcmRpbmcuCisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJl
cXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IEF0b21pY1N0cmluZyYg
bGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgZ3JhbW1hciwgU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisK
KyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdp
dGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdworICAgIC8vIChkb2VzIG5vdCBkaXNjYXJk
IGF1ZGlvKS4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKSA9
IDA7CisKKyAgICAvLyBDYW5jZWxzIGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRpc2NhcmRz
IGFueSBhdWRpbyByZWNvcmRlZCBzbyBmYXIuIE5vIHBhcnRpYWwKKyAgICAvLyByZWNvZ25pdGlv
biByZXN1bHRzIGFyZSByZXR1cm5lZCB0byB0aGUgbGlzdGVuZXIuCisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50KCkgeyB9Cit9OworCit2b2lkIHByb3ZpZGVTcGVl
Y2hJbnB1dFRvKFBhZ2UqLCBTcGVlY2hJbnB1dENsaWVudCopOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisjZW5kaWYgLy8gU3Bl
ZWNoSW5wdXRDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoSW5wdXRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hJbnB1dEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
M2UzNGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRFdmVudC5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50
LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxTcGVlY2hJbnB1dEV2ZW50PiBTcGVlY2hJbnB1dEV2ZW50OjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoSW5wdXRFdmVudCk7Cit9CisKK1Bhc3NS
ZWZQdHI8U3BlZWNoSW5wdXRFdmVudD4gU3BlZWNoSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1
bHRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoSW5wdXRFdmVudChldmVudFR5
cGUsIHJlc3VsdHMpKTsKK30KKworU3BlZWNoSW5wdXRFdmVudDo6U3BlZWNoSW5wdXRFdmVudCgp
Cit7Cit9CisKK1NwZWVjaElucHV0RXZlbnQ6OlNwZWVjaElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMp
CisgICAgOiBFdmVudChldmVudFR5cGUsIHRydWUsIGZhbHNlKSAvLyBDYW4gYnViYmxlLCBub3Qg
Y2FuY2VsYWJsZQorICAgICwgbV9yZXN1bHRzKFNwZWVjaElucHV0UmVzdWx0TGlzdDo6Y3JlYXRl
KHJlc3VsdHMpKQoreworfQorCitTcGVlY2hJbnB1dEV2ZW50Ojp+U3BlZWNoSW5wdXRFdmVudCgp
Cit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgU3BlZWNoSW5wdXRFdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTcGVl
Y2hJbnB1dEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoSW5wdXRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3
YjljY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hJbnB1dEV2ZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3Bl
ZWNoSW5wdXRFdmVudF9oCisjZGVmaW5lIFNwZWVjaElucHV0RXZlbnRfaAorCisjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU3BlZWNoSW5w
dXRSZXN1bHRMaXN0LmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNwZWVjaElucHV0RXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElucHV0RXZlbnQ+IGNyZWF0ZSgpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0
cyk7CisgICAgflNwZWVjaElucHV0RXZlbnQoKTsKKworICAgIFNwZWVjaElucHV0UmVzdWx0TGlz
dCogcmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0cy5nZXQoKTsgfQorCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBTcGVlY2hJbnB1dEV2ZW50KCk7CisgICAgU3BlZWNoSW5wdXRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVz
dWx0cyk7CisKKyAgICBSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHRMaXN0PiBtX3Jlc3VsdHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BF
RUNIKQorCisjZW5kaWYgLy8gU3BlZWNoSW5wdXRFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAzODQ2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dEV2ZW50LmlkbApAQCAtMCwwICsxLDM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9SU5QVVRfU1BFRUNILAorICAgIF0gU3BlZWNoSW5wdXRFdmVudCA6IEV2ZW50IHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNwZWVjaElucHV0UmVzdWx0TGlzdCByZXN1bHRz
OworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaElucHV0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaElucHV0TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
NDE1MzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNwZWVjaElucHV0
TGlzdGVuZXJfaAorI2RlZmluZSBTcGVlY2hJbnB1dExpc3RlbmVyX2gKKworI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW50ZXJmYWNlIHRv
IGJlIGltcGxlbWVudGVkIGJ5IHRoZSBlbGVtZW50IHdoaWNoIGludm9rZXMgU3BlZWNoSW5wdXQu
CitjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICAvLyBJbmZvcm1zIHRo
YXQgYXVkaW8gcmVjb3JkaW5nIGhhcyBjb21wbGV0ZWQgYW5kIHJlY29nbml0aW9uIGlzIHVuZGVy
d2F5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElk
KSA9IDA7CisKKyAgICAvLyBJbmZvcm1zIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGhhcyBjb21w
bGV0ZWQuIFRoaXMgZ2V0cyBpbnZva2VkIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyCisgICAgLy8g
cmVjb2duaXRpb24gd2FzIHN1Y2Nlc2Z1bCBvciBub3QsIHdoZXRoZXIgc2V0UmVjb2duaXRpb25S
ZXN1bHQoKSB3YXMgaW52b2tlZCBvciBub3QuIFRoZQorICAgIC8vIGhhbmRsZXIgdHlwaWNhbGx5
IGZyZWVzIHVwIGFueSB0ZW1wb3JhcnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBhbmQgd2FpdHMgZm9y
IHRoZSBuZXh0IHNwZWVjaAorICAgIC8vIHJlY29nbml0aW9uIHJlcXVlc3QuCisgICAgdmlydHVh
bCB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkgPSAwOworCisgICAg
Ly8gR2l2ZXMgcmVzdWx0cyBmcm9tIHNwZWVjaCByZWNvZ25pdGlvbiwgZWl0aGVyIHBhcnRpYWwg
b3IgdGhlIGZpbmFsIHJlc3VsdHMuCisgICAgLy8gVGhpcyBtZXRob2QgY2FuIHBvdGVudGlhbGx5
IGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUgYXJlIHBhcnRpYWwgcmVzdWx0cwor
ICAgIC8vIGF2YWlsYWJsZSBhcyB0aGUgdXNlciBrZWVwcyBzcGVha2luZy4gSWYgdGhlIHNwZWVj
aCBjb3VsZCBub3QgYmUgcmVjb2duaXplZCBwcm9wZXJseQorICAgIC8vIG9yIGlmIHRoZXJlIHdh
cyBhbnkgb3RoZXIgZXJyb3JzIGluIHRoZSBwcm9jZXNzLCB0aGlzIG1ldGhvZCBtYXkgbmV2ZXIg
YmUgY2FsbGVkLgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVx
dWVzdElkLCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JikgPSAwOworCitwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2VuZGlm
IC8vIFNwZWVjaElucHV0TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoSW5wdXRSZXN1bHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjFjMDQyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3VsdC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP
V05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgor
CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
UmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiBTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNwZWVjaElucHV0UmVzdWx0KHV0dGVyYW5jZSwgY29uZmlkZW5jZSkpOworfQor
CitQYXNzUmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiBTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRl
KGNvbnN0IFNwZWVjaElucHV0UmVzdWx0JiBzb3VyY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hJbnB1dFJlc3VsdChzb3VyY2UubV91dHRlcmFuY2UsIHNvdXJjZS5tX2NvbmZp
ZGVuY2UpKTsKK30KKworU3BlZWNoSW5wdXRSZXN1bHQ6OlNwZWVjaElucHV0UmVzdWx0KGNvbnN0
IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSkKKyAgICA6IG1fdXR0ZXJhbmNl
KHV0dGVyYW5jZSkKKyAgICAsIG1fY29uZmlkZW5jZShjb25maWRlbmNlKQoreworfQorCitkb3Vi
bGUgU3BlZWNoSW5wdXRSZXN1bHQ6OmNvbmZpZGVuY2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbmZpZGVuY2U7Cit9CisKK2NvbnN0IFN0cmluZyYgU3BlZWNoSW5wdXRSZXN1bHQ6OnV0dGVy
YW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXR0ZXJhbmNlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRSZXN1bHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3ZjA3OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0UmVzdWx0LmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3BlZWNoSW5wdXRSZXN1bHRfaAorI2RlZmluZSBT
cGVlY2hJbnB1dFJlc3VsdF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBj
bGFzcyBob2xkcyBvbmUgc3BlZWNoIHJlY29nbml0aW9uIHJlc3VsdCBpbmNsdWRpbmcgdGhlIHRl
eHQgYW5kIG90aGVyIHJlbGF0ZWQKKy8vIGZpZWxkcywgYXMgcmVjZWl2ZWQgZnJvbSB0aGUgZW1i
ZWRkZXIuCitjbGFzcyBTcGVlY2hJbnB1dFJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVj
aElucHV0UmVzdWx0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoSW5w
dXRSZXN1bHQ+IGNyZWF0ZShjb25zdCBTcGVlY2hJbnB1dFJlc3VsdCYgc291cmNlKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSk7CisKKyAgICBkb3VibGUgY29uZmlkZW5jZSgp
IGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgdXR0ZXJhbmNlKCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgU3RyaW5nJiB1dHRlcmFuY2UsIGRvdWJsZSBj
b25maWRlbmNlKTsKKworICAgIFN0cmluZyBtX3V0dGVyYW5jZTsKKyAgICBkb3VibGUgbV9jb25m
aWRlbmNlOworfTsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiA+
IFNwZWVjaElucHV0UmVzdWx0QXJyYXk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNlbmRpZiAvLyBTcGVlY2hJbnB1dFJlc3Vs
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1
dFJlc3VsdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJl
c3VsdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0MmM2MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0
UmVzdWx0LmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5QVVRfU1BFRUNILAorICAgIF0g
U3BlZWNoSW5wdXRSZXN1bHQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHV0dGVyYW5jZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGNvbmZpZGVuY2U7
CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDFmZDEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCIKKworI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxT
cGVlY2hJbnB1dFJlc3VsdExpc3Q+IFNwZWVjaElucHV0UmVzdWx0TGlzdDo6Y3JlYXRlKGNvbnN0
IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hJbnB1dFJlc3VsdExpc3QocmVzdWx0cykpOworfQorCitTcGVlY2hJbnB1dFJl
c3VsdCogU3BlZWNoSW5wdXRSZXN1bHRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAg
IHJldHVybiBpbmRleCA+PSBtX3Jlc3VsdHMuc2l6ZSgpID8gMCA6IG1fcmVzdWx0c1tpbmRleF0u
Z2V0KCk7Cit9CisKK1NwZWVjaElucHV0UmVzdWx0TGlzdDo6U3BlZWNoSW5wdXRSZXN1bHRMaXN0
KGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpCisgICAgOiBtX3Jlc3VsdHMo
cmVzdWx0cykgLy8gVGFrZXMgYSBjb3B5IG9mIHRoZSBhcnJheSBvZiBSZWZQdHJzLgoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNI
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRS
ZXN1bHRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJl
c3VsdExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDUwNjMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5w
dXRSZXN1bHRMaXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3BlZWNo
SW5wdXRSZXN1bHRMaXN0X2gKKyNkZWZpbmUgU3BlZWNoSW5wdXRSZXN1bHRMaXN0X2gKKworI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgor
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTcGVlY2hJbnB1dFJlc3VsdExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hJbnB1dFJl
c3VsdExpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hJbnB1dFJl
c3VsdExpc3Q+IGNyZWF0ZShjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHRzKTsK
KworICAgIC8vIE1ldGhvZHMgZnJvbSB0aGUgSURMLgorICAgIHNpemVfdCBsZW5ndGgoKSB7IHJl
dHVybiBtX3Jlc3VsdHMuc2l6ZSgpOyB9CisgICAgU3BlZWNoSW5wdXRSZXN1bHQqIGl0ZW0odW5z
aWduZWQgaW5kZXgpOworCitwcml2YXRlOgorICAgIFNwZWVjaElucHV0UmVzdWx0TGlzdChjb25z
dCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHRzKTsKKworICAgIFNwZWVjaElucHV0UmVz
dWx0QXJyYXkgbV9yZXN1bHRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2VuZGlmIC8vIFNwZWVjaElucHV0UmVzdWx0
TGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hJ
bnB1dFJlc3VsdExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
SW5wdXRSZXN1bHRMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
OTIxM2QwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgSW5kZXhlZEdldHRlciwKKyAg
ICAgICAgQ29uZGl0aW9uYWw9SU5QVVRfU1BFRUNICisgICAgXSBTcGVlY2hJbnB1dFJlc3VsdExp
c3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Cisg
ICAgICAgIFNwZWVjaElucHV0UmVzdWx0IGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlZmE0M2M3Li4wNzVjMGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC04NTUsNiArODU1LDkgQEAKICAgICAgICAgICAgICdNb2R1
bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hHcmFtbWFyLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hckxpc3QuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJ
bnB1dEV2ZW50LmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoSW5wdXRS
ZXN1bHQuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3Vs
dExpc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQWx0
ZXJuYXRpdmUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkVycm9yLmlkbCcsCkBAIC0xMTc0LDkgKzExNzcsNiBAQAogICAgICAgICAgICAgJ3BhZ2Uv
UGVyZm9ybWFuY2VUaW1pbmcuaWRsJywKICAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaWRsJywKLSAgICAgICAgICAgICdwYWdlL1Nw
ZWVjaElucHV0RXZlbnQuaWRsJywKLSAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0UmVzdWx0
LmlkbCcsCi0gICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaWRsJywKICAg
ICAgICAgICAgICdwYWdlL1dlYktpdEFuaW1hdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3BhZ2Uv
V2ViS2l0QW5pbWF0aW9uTGlzdC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvV2ViS2l0UG9pbnQu
aWRsJywKQEAgLTE1OTEsNiArMTU5MSwxNiBAQAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNo
L1NwZWVjaEdyYW1tYXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hckxpc3QuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFy
TGlzdC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dC5jcHAnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0LmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvc3BlZWNoL1NwZWVjaElucHV0Q2xpZW50LmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL1NwZWVjaElucHV0RXZlbnQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hJbnB1dEV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaElucHV0TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
SW5wdXRSZXN1bHQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1
dFJlc3VsdC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3Vs
dExpc3QuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hJbnB1dFJlc3Vs
dExpc3QuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24u
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZl
LmNwcCcsCkBAIC0zMDk0LDE2ICszMTA0LDYgQEAKICAgICAgICAgICAgICdwYWdlL1NlY3VyaXR5
UG9saWN5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TZXR0aW5ncy5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwJywKLSAgICAgICAgICAgICdwYWdlL1NwZWVj
aElucHV0LmNwcCcsCi0gICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dC5oJywKLSAgICAgICAg
ICAgICdwYWdlL1NwZWVjaElucHV0Q2xpZW50LmgnLAotICAgICAgICAgICAgJ3BhZ2UvU3BlZWNo
SW5wdXRFdmVudC5jcHAnLAotICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5oJywK
LSAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCcsCi0gICAgICAgICAgICAn
cGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAnLAotICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5w
dXRSZXN1bHQuaCcsCi0gICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuY3Bw
JywKLSAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5oJywKICAgICAgICAg
ICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL1N1c3Bl
bmRhYmxlVGltZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAxMjhlZjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJTcGVlY2hJbnB1dC5oIgotCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLQot
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQu
aCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TcGVlY2hJbnB1dDo6U3BlZWNoSW5w
dXQoU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAg
ICAsIG1fbmV4dExpc3RlbmVySWQoMSkKLXsKLSAgICBtX2NsaWVudC0+c2V0TGlzdGVuZXIodGhp
cyk7Ci19Ci0KLVNwZWVjaElucHV0Ojp+U3BlZWNoSW5wdXQoKQotewotICAgIG1fY2xpZW50LT5z
ZXRMaXN0ZW5lcigwKTsKLX0KLQotUGFzc093blB0cjxTcGVlY2hJbnB1dD4gU3BlZWNoSW5wdXQ6
OmNyZWF0ZShTcGVlY2hJbnB1dENsaWVudCogY2xpZW50KQotewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgU3BlZWNoSW5wdXQoY2xpZW50KSk7Ci19Ci0KLWludCBTcGVlY2hJbnB1dDo6cmVnaXN0
ZXJMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSNpZiBkZWZpbmVk
KERFQlVHKQotICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcHJlc2VudC4KLSAgICBmb3IgKEhhc2hN
YXA8aW50LCBTcGVlY2hJbnB1dExpc3RlbmVyKj46Oml0ZXJhdG9yIGl0ID0gbV9saXN0ZW5lcnMu
YmVnaW4oKTsgaXQgIT0gbV9saXN0ZW5lcnMuZW5kKCk7ICsraXQpCi0gICAgICBBU1NFUlQoaXQt
PnNlY29uZCAhPSBsaXN0ZW5lcik7Ci0jZW5kaWYKLQotICAgIG1fbGlzdGVuZXJzLmFkZChtX25l
eHRMaXN0ZW5lcklkLCBsaXN0ZW5lcik7Ci0gICAgcmV0dXJuIG1fbmV4dExpc3RlbmVySWQrKzsK
LX0KLQotdm9pZCBTcGVlY2hJbnB1dDo6dW5yZWdpc3Rlckxpc3RlbmVyKGludCBsaXN0ZW5lcklk
KQotewotICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkKLSAgICAgICAg
bV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySWQpOwotfQotCi12b2lkIFNwZWVjaElucHV0Ojpk
aWRDb21wbGV0ZVJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKLXsKLSAgICAvLyBEb24ndCBhc3Nl
cnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQg
YnkgdGhlIHBhZ2Ugd2hpbGUKLSAgICAvLyB0aGlzIGV2ZW50IHdhcyBvbiB0aGUgd2F5LgotICAg
IGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSkKLSAgICAgICAgbV9saXN0ZW5l
cnMuZ2V0KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0ZVJlY29yZGluZyhsaXN0ZW5lcklkKTsKLX0K
LQotdm9pZCBTcGVlY2hJbnB1dDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJ
ZCkKLXsKLSAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQg
bWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKLSAgICAvLyB0aGlzIGV2
ZW50IHdhcyBvbiB0aGUgd2F5LgotICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5l
cklkKSkKLSAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5kaWRDb21wbGV0ZVJl
Y29nbml0aW9uKGxpc3RlbmVySWQpOwotfQotCi12b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25p
dGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYg
cmVzdWx0KQotewotICAgIC8vIERvbid0IGFzc2VydCBpZiBub3QgcHJlc2VudCBhcyB0aGUgZWxl
bWVudCBtaWdodCBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFnZSB3aGlsZQotICAgIC8vIHRo
aXMgZXZlbnQgd2FzIG9uIHRoZSB3YXkuCi0gICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxp
c3RlbmVySWQpKQotICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNldFJlY29n
bml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7Ci19Ci0KLWJvb2wgU3BlZWNoSW5wdXQ6
OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRS
ZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIGdyYW1tYXIs
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRh
aW5zKGxpc3RlbmVySWQpKTsKLSAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24o
bGlzdGVuZXJJZCwgZWxlbWVudFJlY3QsIGxhbmd1YWdlLCBncmFtbWFyLCBvcmlnaW4pOwotfQot
Ci12b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKGludCBsaXN0ZW5lcklkKQotewotICAg
IEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgbV9jbGllbnQt
PnN0b3BSZWNvcmRpbmcobGlzdGVuZXJJZCk7Ci19Ci0KLXZvaWQgU3BlZWNoSW5wdXQ6OmNhbmNl
bFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkKQotewotICAgIEFTU0VSVChtX2xpc3RlbmVycy5j
b250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgbV9jbGllbnQtPmNhbmNlbFJlY29nbml0aW9uKGxp
c3RlbmVySWQpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaElucHV0OjpzdXBwbGVt
ZW50TmFtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUs
ICgiU3BlZWNoSW5wdXQiKSk7Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgcHJvdmlkZVNw
ZWVjaElucHV0VG8oUGFnZSogcGFnZSwgU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkKLXsKLSAg
ICBTcGVlY2hJbnB1dDo6cHJvdmlkZVRvKHBhZ2UsIFNwZWVjaElucHV0OjpzdXBwbGVtZW50TmFt
ZSgpLCBTcGVlY2hJbnB1dDo6Y3JlYXRlKGNsaWVudCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTE0OGYzLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFNwZWVjaElucHV0X2gKLSNkZWZpbmUgU3BlZWNoSW5wdXRf
aAotCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLQotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElu
dFJlY3Q7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNwZWVjaElucHV0Q2xpZW50Owot
Y2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKLQotLy8gVGhpcyBjbGFzcyBjb25uZWN0cyB0aGUg
aW5wdXQgZWxlbWVudHMgcmVxdWlyaW5nIHNwZWVjaCBpbnB1dCB3aXRoIHRoZSBwbGF0Zm9ybSBz
cGVjaWZpYwotLy8gc3BlZWNoIHJlY29nbml0aW9uIGVuZ2luZS4gSXQgcHJvdmlkZXMgbWV0aG9k
cyBmb3IgdGhlIGlucHV0IGVsZW1lbnRzIHRvIGFjdGl2YXRlIHNwZWVjaAotLy8gcmVjb2duaXRp
b24gYW5kIG1ldGhvZHMgZm9yIHRoZSBzcGVlY2ggcmVjb2duaXRpb24gZW5naW5lIHRvIHJldHVy
biBiYWNrIHRoZSByZXN1bHRzLgotY2xhc3MgU3BlZWNoSW5wdXQgOiBwdWJsaWMgU3BlZWNoSW5w
dXRMaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4g
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWVjaElucHV0KTsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5TcGVlY2hJbnB1dCgpOwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8U3BlZWNoSW5w
dXQ+IGNyZWF0ZShTcGVlY2hJbnB1dENsaWVudCopOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7Ci0gICAgc3RhdGljIFNwZWVjaElucHV0KiBmcm9tKFBh
Z2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWVjaElucHV0Kj4oU3VwcGxlbWVudDxQ
YWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KLQotICAgIC8vIEdlbmVyYXRl
cyBhIHVuaXF1ZSBJRCBmb3IgdGhlIGdpdmVuIGxpc3RlbmVyIHRvIGJlIHVzZWQgZm9yIHNwZWVj
aCByZXF1ZXN0cy4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSB0aGUgZmlyc3QgY2FsbCBtYWRlIGJ5
IGxpc3RlbmVycyBiZWZvcmUgYW55dGhpbmcgZWxzZS4KLSAgICBpbnQgcmVnaXN0ZXJMaXN0ZW5l
cihTcGVlY2hJbnB1dExpc3RlbmVyKik7Ci0KLSAgICAvLyBJbnZva2VkIHdoZW4gdGhlIGxpc3Rl
bmVyIGlzIGRvbmUgd2l0aCByZWNvcmRpbmcgb3IgZ2V0dGluZyBkZXN0cm95ZWQuCi0gICAgLy8g
RmFpbHVyZSB0byB1bnJlZ2lzdGVyIG1heSByZXN1bHQgaW4gY3Jhc2hlcyBpZiB0aGVyZSB3ZXJl
IGFueSBwZW5kaW5nIHNwZWVjaCBldmVudHMuCi0gICAgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIo
aW50KTsKLQotICAgIC8vIE1ldGhvZHMgaW52b2tlZCBieSB0aGUgaW5wdXQgZWxlbWVudHMuCi0g
ICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBl
bGVtZW50UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBn
cmFtbWFyLCBTZWN1cml0eU9yaWdpbiopOwotICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwot
ICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKLQotICAgIC8vIFNwZWVjaElucHV0TGlz
dGVuZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFNwZWVjaElucHV0UmVz
dWx0QXJyYXkmKTsKLQotcHJpdmF0ZToKLSAgICBTcGVlY2hJbnB1dChTcGVlY2hJbnB1dENsaWVu
dCopOwotCi0gICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fY2xpZW50OwotICAgIEhhc2hNYXA8aW50
LCBTcGVlY2hJbnB1dExpc3RlbmVyKj4gbV9saXN0ZW5lcnM7Ci0gICAgaW50IG1fbmV4dExpc3Rl
bmVySWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfU1BFRUNIKQotCi0jZW5kaWYgLy8gU3BlZWNoSW5wdXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjZm
OTc5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNwZWVjaElucHV0Q2xpZW50X2gKLSNk
ZWZpbmUgU3BlZWNoSW5wdXRDbGllbnRfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQot
I2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW50UmVjdDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5l
cjsKLWNsYXNzIFBhZ2U7Ci0KLS8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgU3BlZWNoSW5w
dXQgdG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KLWNsYXNzIFNwZWVjaElucHV0Q2xpZW50IHsK
LXB1YmxpYzoKLSAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBjYWxsIG1hZGUgYnkgYSBsaXN0ZW5l
ciwgcmVnaXN0ZXJpbmcgaXRzZWxmIGZvciBmdXR1cmUgY2FsbGJhY2tzLgotICAgIC8vIFdoZW4g
dGhlIGxpc3RlbmVyIG5vIGxvbmdlciBuZWVkcyBzcGVlY2ggaW5wdXQgKGZvciBlLmcuIHdoZW4g
aXQgZ2V0cyBkZXN0cm95ZWQpLAotICAgIC8vIGl0IHNob3VsZCBzZXQgYSBudWxsIGxpc3RlbmVy
IHRvIHN0b3AgcmVjZWl2aW5nIGNhbGxiYWNrcy4KLSAgICAvLyBUaGUgY2xpZW50IGRvZXMgbm90
IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwb2ludGVyLgotICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0
ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAwOwotCi0gICAgLy8gU3RhcnRzIHNwZWVjaCBy
ZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIGdyYW1tYXIsIFNlY3VyaXR5
T3JpZ2luKikgPSAwOwotCi0gICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3Jt
cyByZWNvZ25pdGlvbiB3aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKLSAgICAvLyAo
ZG9lcyBub3QgZGlzY2FyZCBhdWRpbykuCi0gICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmco
aW50IHJlcXVlc3RJZCkgPSAwOwotCi0gICAgLy8gQ2FuY2VscyBhbiBvbmdvaW5nIHJlY29nbml0
aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3JkZWQgc28gZmFyLiBObyBwYXJ0aWFsCi0g
ICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGxpc3RlbmVyLgot
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKSA9IDA7Ci0K
LXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudCgpIHsgfQotfTsKLQot
dm9pZCBwcm92aWRlU3BlZWNoSW5wdXRUbyhQYWdlKiwgU3BlZWNoSW5wdXRDbGllbnQqKTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkK
LQotI2VuZGlmIC8vIFNwZWVjaElucHV0Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0RXZlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2UzNGJmLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKLQotI2luY2x1ZGUgIlNwZWVjaElucHV0RXZlbnQuaCIKLQotI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRy
PFNwZWVjaElucHV0RXZlbnQ+IFNwZWVjaElucHV0RXZlbnQ6OmNyZWF0ZSgpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hJbnB1dEV2ZW50KTsKLX0KLQotUGFzc1JlZlB0cjxTcGVl
Y2hJbnB1dEV2ZW50PiBTcGVlY2hJbnB1dEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hJbnB1dEV2ZW50KGV2ZW50VHlwZSwgcmVzdWx0
cykpOwotfQotCi1TcGVlY2hJbnB1dEV2ZW50OjpTcGVlY2hJbnB1dEV2ZW50KCkKLXsKLX0KLQot
U3BlZWNoSW5wdXRFdmVudDo6U3BlZWNoSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cykKLSAgICA6IEV2
ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UpIC8vIENhbiBidWJibGUsIG5vdCBjYW5jZWxhYmxl
Ci0gICAgLCBtX3Jlc3VsdHMoU3BlZWNoSW5wdXRSZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykp
Ci17Ci19Ci0KLVNwZWVjaElucHV0RXZlbnQ6On5TcGVlY2hJbnB1dEV2ZW50KCkKLXsKLX0KLQot
Y29uc3QgQXRvbWljU3RyaW5nJiBTcGVlY2hJbnB1dEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNwZWVjaElucHV0RXZl
bnQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2N2I5Y2NlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgU3BlZWNoSW5wdXRFdmVudF9oCi0jZGVmaW5lIFNwZWVjaElucHV0
RXZlbnRfaAotCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLQotI2luY2x1ZGUgIkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNwZWVjaElucHV0RXZlbnQg
OiBwdWJsaWMgRXZlbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElu
cHV0RXZlbnQ+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElucHV0RXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5w
dXRSZXN1bHRBcnJheSYgcmVzdWx0cyk7Ci0gICAgflNwZWVjaElucHV0RXZlbnQoKTsKLQotICAg
IFNwZWVjaElucHV0UmVzdWx0TGlzdCogcmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
cy5nZXQoKTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBTcGVlY2hJbnB1dEV2ZW50KCk7Ci0gICAgU3Bl
ZWNoSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNo
SW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cyk7Ci0KLSAgICBSZWZQdHI8U3BlZWNoSW5wdXRSZXN1
bHRMaXN0PiBtX3Jlc3VsdHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCi0jZW5kaWYgLy8gU3BlZWNoSW5wdXRFdmVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDM4NDZhZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NwZWVjaElucHV0RXZlbnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLW1vZHVsZSBjb3JlIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlv
bmFsPUlOUFVUX1NQRUVDSCwKLSAgICBdIFNwZWVjaElucHV0RXZlbnQgOiBFdmVudCB7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTcGVlY2hJbnB1dFJlc3VsdExpc3QgcmVzdWx0czsKLSAg
ICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDE1MzAxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgU3BlZWNoSW5wdXRMaXN0ZW5lcl9oCi0jZGVmaW5lIFNwZWVjaElucHV0
TGlzdGVuZXJfaAotCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLQotI2luY2x1ZGUgIlNwZWVj
aElucHV0UmVzdWx0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0vLyBJbnRlcmZhY2UgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGVsZW1lbnQg
d2hpY2ggaW52b2tlcyBTcGVlY2hJbnB1dC4KLWNsYXNzIFNwZWVjaElucHV0TGlzdGVuZXIgewot
cHVibGljOgotICAgIC8vIEluZm9ybXMgdGhhdCBhdWRpbyByZWNvcmRpbmcgaGFzIGNvbXBsZXRl
ZCBhbmQgcmVjb2duaXRpb24gaXMgdW5kZXJ3YXkuCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBs
ZXRlUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpID0gMDsKLQotICAgIC8vIEluZm9ybXMgdGhhdCBz
cGVlY2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQgaXJyZXNw
ZWN0aXZlIG9mIHdoZXRoZXIKLSAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVsIG9yIG5v
dCwgd2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5vdC4gVGhl
Ci0gICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSByZXNvdXJj
ZXMgYWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCi0gICAgLy8gcmVjb2du
aXRpb24gcmVxdWVzdC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkKSA9IDA7Ci0KLSAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJl
Y29nbml0aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KLSAgICAvLyBU
aGlzIG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0
aGVyZSBhcmUgcGFydGlhbCByZXN1bHRzCi0gICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtl
ZXBzIHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Bl
cmx5Ci0gICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nl
c3MsIHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHNl
dFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0
QXJyYXkmKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dExpc3Rl
bmVyKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQotCi0jZW5kaWYgLy8gU3BlZWNoSW5wdXRMaXN0ZW5lcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxYzA0MmEwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRSZXN1bHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP
V05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgot
Ci0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNz
UmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiBTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNwZWVjaElucHV0UmVzdWx0KHV0dGVyYW5jZSwgY29uZmlkZW5jZSkpOwotfQot
Ci1QYXNzUmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiBTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRl
KGNvbnN0IFNwZWVjaElucHV0UmVzdWx0JiBzb3VyY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hJbnB1dFJlc3VsdChzb3VyY2UubV91dHRlcmFuY2UsIHNvdXJjZS5tX2NvbmZp
ZGVuY2UpKTsKLX0KLQotU3BlZWNoSW5wdXRSZXN1bHQ6OlNwZWVjaElucHV0UmVzdWx0KGNvbnN0
IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSkKLSAgICA6IG1fdXR0ZXJhbmNl
KHV0dGVyYW5jZSkKLSAgICAsIG1fY29uZmlkZW5jZShjb25maWRlbmNlKQotewotfQotCi1kb3Vi
bGUgU3BlZWNoSW5wdXRSZXN1bHQ6OmNvbmZpZGVuY2UoKSBjb25zdAotewotICAgIHJldHVybiBt
X2NvbmZpZGVuY2U7Ci19Ci0KLWNvbnN0IFN0cmluZyYgU3BlZWNoSW5wdXRSZXN1bHQ6OnV0dGVy
YW5jZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXR0ZXJhbmNlOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NTdmMDc4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRS
ZXN1bHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFNwZWVjaElucHV0UmVzdWx0X2gKLSNkZWZpbmUgU3BlZWNoSW5wdXRSZXN1bHRfaAotCi0jaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMgY2xhc3MgaG9sZHMgb25lIHNwZWVjaCByZWNv
Z25pdGlvbiByZXN1bHQgaW5jbHVkaW5nIHRoZSB0ZXh0IGFuZCBvdGhlciByZWxhdGVkCi0vLyBm
aWVsZHMsIGFzIHJlY2VpdmVkIGZyb20gdGhlIGVtYmVkZGVyLgotY2xhc3MgU3BlZWNoSW5wdXRS
ZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hJbnB1dFJlc3VsdD4gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaElucHV0UmVzdWx0PiBjcmVhdGUoY29uc3QgU3Bl
ZWNoSW5wdXRSZXN1bHQmIHNvdXJjZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoSW5w
dXRSZXN1bHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHV0dGVyYW5jZSwgZG91YmxlIGNvbmZpZGVu
Y2UpOwotCi0gICAgZG91YmxlIGNvbmZpZGVuY2UoKSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcm
IHV0dGVyYW5jZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFNwZWVjaElucHV0UmVzdWx0KGNv
bnN0IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSk7Ci0KLSAgICBTdHJpbmcg
bV91dHRlcmFuY2U7Ci0gICAgZG91YmxlIG1fY29uZmlkZW5jZTsKLX07Ci0KLXR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdD4gPiBTcGVlY2hJbnB1dFJlc3VsdEFycmF5Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNI
KQotCi0jZW5kaWYgLy8gU3BlZWNoSW5wdXRSZXN1bHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0UmVzdWx0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU0MmM2
MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0Lmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgY29yZSB7
Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1JTlBVVF9TUEVFQ0gsCi0g
ICAgXSBTcGVlY2hJbnB1dFJlc3VsdCB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgdXR0ZXJhbmNlOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgY29uZmlk
ZW5jZTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0UmVzdWx0TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVz
dWx0TGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZmQxMDguLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCIKLQotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdExpc3Q+
IFNwZWVjaElucHV0UmVzdWx0TGlzdDo6Y3JlYXRlKGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJy
YXkmIHJlc3VsdHMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hJbnB1dFJlc3Vs
dExpc3QocmVzdWx0cykpOwotfQotCi1TcGVlY2hJbnB1dFJlc3VsdCogU3BlZWNoSW5wdXRSZXN1
bHRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiBpbmRleCA+PSBtX3Jl
c3VsdHMuc2l6ZSgpID8gMCA6IG1fcmVzdWx0c1tpbmRleF0uZ2V0KCk7Ci19Ci0KLVNwZWVjaElu
cHV0UmVzdWx0TGlzdDo6U3BlZWNoSW5wdXRSZXN1bHRMaXN0KGNvbnN0IFNwZWVjaElucHV0UmVz
dWx0QXJyYXkmIHJlc3VsdHMpCi0gICAgOiBtX3Jlc3VsdHMocmVzdWx0cykgLy8gVGFrZXMgYSBj
b3B5IG9mIHRoZSBhcnJheSBvZiBSZWZQdHJzLgotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGIwNTA2MzAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJl
c3VsdExpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFNwZWVjaElucHV0UmVzdWx0TGlzdF9oCi0jZGVmaW5lIFNwZWVjaElucHV0UmVzdWx0TGlz
dF9oCi0KLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRS
ZXN1bHQuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgU3BlZWNoSW5wdXRSZXN1bHRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3Bl
ZWNoSW5wdXRSZXN1bHRMaXN0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Bl
ZWNoSW5wdXRSZXN1bHRMaXN0PiBjcmVhdGUoY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYg
cmVzdWx0cyk7Ci0KLSAgICAvLyBNZXRob2RzIGZyb20gdGhlIElETC4KLSAgICBzaXplX3QgbGVu
Z3RoKCkgeyByZXR1cm4gbV9yZXN1bHRzLnNpemUoKTsgfQotICAgIFNwZWVjaElucHV0UmVzdWx0
KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKLQotcHJpdmF0ZToKLSAgICBTcGVlY2hJbnB1dFJlc3Vs
dExpc3QoY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cyk7Ci0KLSAgICBTcGVl
Y2hJbnB1dFJlc3VsdEFycmF5IG1fcmVzdWx0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0KLSNlbmRpZiAvLyBTcGVlY2hJ
bnB1dFJlc3VsdExpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dFJlc3VsdExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3Vs
dExpc3QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTIxM2QwLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgY29yZSB7Ci0KLSAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBJbmRleGVkR2V0dGVyLAotICAgICAgICBDb25kaXRpb25h
bD1JTlBVVF9TUEVFQ0gKLSAgICBdIFNwZWVjaElucHV0UmVzdWx0TGlzdCB7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICAgICAgU3BlZWNoSW5w
dXRSZXN1bHQgaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsK
LQotfQo=
</data>
<flag name="review"
          id="159562"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
    <flag name="commit-queue"
          id="159563"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>