<?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>71358</bug_id>
          
          <creation_ts>2011-11-02 05:21:03 -0700</creation_ts>
          <short_desc>JSC: Remove startPosition from SourceProvider, convert firstLine into TextPosition in SourceCode.</short_desc>
          <delta_ts>2011-11-02 07:21:25 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>podivilov</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494560</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-02 05:21:03 -0700</bug_when>
    <thetext>Oliver suggested that SourceProvider should not be position aware, JSC should manage positions in the SourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494578</commentid>
    <comment_count>1</comment_count>
      <attachid>113309</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-02 06:23:35 -0700</bug_when>
    <thetext>Created attachment 113309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494589</commentid>
    <comment_count>2</comment_count>
      <attachid>113309</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 06:49:29 -0700</bug_when>
    <thetext>Comment on attachment 113309
Patch

Attachment 113309 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10257270

New failing tests:
inspector/debugger/linkifier.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494593</commentid>
    <comment_count>3</comment_count>
      <attachid>113309</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-02 06:55:27 -0700</bug_when>
    <thetext>Comment on attachment 113309
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:56
&gt; +        Web Inspector: [JSC] remove startPosition from SourceProvider,

Remove the second entry.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:62
&gt; +        m_debugger-&gt;sourceParsed(iter-&gt;second, *iter-&gt;first, -1, UString());

This should be called once per script source, not for each function in it and position should be the origin of that script.

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:257
&gt; +    ExpressionNode* createFunctionExpr(int lineNumber, const Identifier* name, FunctionBodyNode* body, ParameterNode* parameters, int openBracePos, int closeBracePos, int bodyStartLine, int bodyStartColumn, int bodyEndLine)

Consider using TextPosition.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113309</attachid>
            <date>2011-11-02 06:23:35 -0700</date>
            <delta_ts>2011-11-02 06:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71358-20111102172333.patch</filename>
            <type>text/plain</type>
            <size>67743</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3
ODI0OTExNDRkZDJhYjUzYzcyM2U2NGVhMDhkOTRiMTJiZTRjMDQuLmYxZjRiZmEyNjUyMTFkMzcw
ZDUzMmM0OTM0ZTBlYzU5ZmQ1Mjk3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc0IEBACisyMDExLTExLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KKworICAgICAgICBKU0M6IFJlbW92ZSBzdGFydFBvc2l0aW9uIGZyb20gU291cmNlUHJvdmlk
ZXIsIGNvbnZlcnQgZmlyc3RMaW5lIGludG8gVGV4dFBvc2l0aW9uIGluIFNvdXJjZUNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM1OAorCisg
ICAgICAgIFNvdXJjZVByb3ZpZGVyIHNob3VsZCBub3QgYmUgcG9zaXRpb24gYXdhcmUsIEpTQyBz
aG91bGQgbWFuYWdlIHBvc2l0aW9ucyBpbiB0aGUgU291cmNlQ29kZSBvbmx5LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6
CisgICAgICAgIChKU0V2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKEpTQ2hlY2tTY3JpcHRTeW50
YXgpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdE1h
a2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKiBwYXJz
ZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6OkxleGVyOjpzaGlmdExpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6Omxl
eCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRM
aW5lTnVtYmVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleEV4cGVjdElkZW50aWZpZXIpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnBhcnNl
RnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAg
ICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9T
b3VyY2VDb2RlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OlNvdXJjZUNvZGUpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlOjpmaXJzdExpbmUpOgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlOjpzdGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Tb3Vy
Y2VQcm92aWRlci5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisK
KzIwMTEtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogW0pTQ10gcmVtb3ZlIHN0YXJ0UG9zaXRpb24gZnJvbSBTb3Vy
Y2VQcm92aWRlciwKKyAgICAgICAgdXNlIHRoZSBvbmUgaW4gU291cmNlQ29kZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHA6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNl
ci9Tb3VyY2VDb2RlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OlNvdXJjZUNvZGUpOgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpmaXJzdExpbmUpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlOjpzdGFydFBvc2l0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKwogMjAxMS0xMS0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3V0IGRvd24gb24gbWFsbG9jL2ZyZWUgYSBiaXQgaW4gdGhlIHBhcnNlciBhcmVuYQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDg5ZDZkODQyMmJjZjQxYjdlNjgwMmY4NGY2NTk4MDc3ODcwMThlYmYuLmZlZDc5
OTJiNDBjNzcxOWI5NGM1NjZmODg2ODkyMmEwOGUwZjg2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNCBAQAorMjAxMS0xMS0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+
CisKKyAgICAgICAgSlNDOiBSZW1vdmUgc3RhcnRQb3NpdGlvbiBmcm9tIFNvdXJjZVByb3ZpZGVy
LCBjb252ZXJ0IGZpcnN0TGluZSBpbnRvIFRleHRQb3NpdGlvbiBpbiBTb3VyY2VDb2RlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNTgKKworICAg
ICAgICBTb3VyY2VQcm92aWRlciBzaG91bGQgbm90IGJlIHBvc2l0aW9uIGF3YXJlLCBKU0Mgc2hv
dWxkIG1hbmFnZSBwb3NpdGlvbnMgaW4gdGhlIFNvdXJjZUNvZGUgb25seS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5l
cjo6SlNMYXp5RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExp
c3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNM
YXp5RXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U291cmNlQ29kZTo6U2NyaXB0U291cmNlQ29k
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RyaW5nU291cmNlUHJvdmlkZXI6OlN0cmluZ1NvdXJjZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1ha2VTb3VyY2UpOgorCiAyMDExLTExLTAyICBCZW4gV2VsbHMgIDxiZW53
ZWxsc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2FudmFzIGZpbGxpbmcgcGF0aHMgb3IgcmVj
dHMgbmVlZCB0byBiZSBpbnZhbGlkYXRlIGxhcmdlciByZWN0cyBmb3Igc29tZSBjb21wb3NpdGlu
ZyBtb2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkMTk1YzJkNzI2MDZkMGVhYzlhZDdlNDc0MWQy
NzYwNjA2ODQ3MWFkLi5hNWE2NDgzYmIyOWE2YTVjMGQ2MjQxMDgwNzEyZjBjODg0OTdjMTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDIgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIEpTQzogUmVtb3ZlIHN0YXJ0UG9z
aXRpb24gZnJvbSBTb3VyY2VQcm92aWRlciwgY29udmVydCBmaXJzdExpbmUgaW50byBUZXh0UG9z
aXRpb24gaW4gU291cmNlQ29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpz
b3VyY2VQYXJzZWQpOgorCiAyMDExLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBDcmFzaCBpbiBQREYgY29kZSB3aGVuIHNjcmlwdCBoYXMgaWxsZWdhbCBV
VEYtOCBvciBVVEYtMTYgc2VxdWVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAK
aW5kZXggOTg0OWIwMzE1NjJiMjNhMWVjYzM5NmEyZDc3MjVjN2EyODczZDEzOC4uZWFmZDhjNjBi
YjAwODFmZTBkYzc2NWIwNzQyNGYyZjhmMmVkNTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNCYXNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQo
SlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVjdFJlZiB0aAogCiAg
ICAgLy8gZXZhbHVhdGUgc2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYgaXQgaXMg
TlVMTAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCk7Ci0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+
dXN0cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKKyAg
ICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJj
ZVVSTC0+dXN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2Vk
SW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKIAogICAg
IEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGVDaGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgJmV2YWx1YXRpb25FeGNlcHRpb24p
OwpAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1N0cmluZ1JlZiBzb3VyYwogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwog
Ci0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+dXN0cmluZygpLCBz
b3VyY2VVUkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKKyAgICBTb3VyY2VDb2Rl
IHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+dXN0cmlu
ZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5n
TGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKICAgICAKICAgICBKU1ZhbHVl
IHN5bnRheEV4Y2VwdGlvbjsKICAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4
RXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5k
ZXggNzQwYjFhM2FkZmMxYjBmN2VhMTBjMzZiMGVkN2IwYTkyZWNhY2MxZS4uNzc5NGFhMWU0NzRk
YmQ2YmI3OGYxNGZkZGM5YjdiNDhiYzVhMzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1bnNpZ25l
ZCBwYQogICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBwYXJhbWV0ZXJOYW1lc1tp
XS0+dXN0cmluZygpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgYm9keS0+dXN0
cmluZygpKSk7CiAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNvdXJjZVVSTC0+
dXN0cmluZygpLCBzdGFydGluZ0xpbmVOdW1iZXIpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3Ms
IG5hbWVJRCwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhj
ZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2Vw
dGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmlu
ZGV4IDEzZDZhZDhmMzA4ZGQ3YzZlNjM1MDg2ZTA4YmVlOTkyNDJjNzRkMTQuLmFiZWMyY2JkOTFm
OWU1OTFhMTE0YWExYjk4Y2ExYTQ0OGYzNGIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNDEsMTEgKzQxLDExIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4gRnVuY3Rpb25F
eGVjdXRhYmxlU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VQcm92aWRlciosIEV4ZWNT
dGF0ZSo+IFNvdXJjZVByb3ZpZGVyTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBTb3Vy
Y2VDb2RlKiwgRXhlY1N0YXRlKj4gU291cmNlQ29kZU1hcDsKICAgICAKICAgICBEZWJ1Z2dlciog
bV9kZWJ1Z2dlcjsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGVTZXQgbV9mdW5jdGlvbkV4ZWN1dGFi
bGVzOwotICAgIFNvdXJjZVByb3ZpZGVyTWFwIG1fc291cmNlUHJvdmlkZXJzOworICAgIFNvdXJj
ZUNvZGVNYXAgbV9zb3VyY2VDb2RlczsKIH07CiAKIGlubGluZSBSZWNvbXBpbGVyOjpSZWNvbXBp
bGVyKERlYnVnZ2VyKiBkZWJ1Z2dlcikKQEAgLTU3LDkgKzU3LDkgQEAgaW5saW5lIFJlY29tcGls
ZXI6On5SZWNvbXBpbGVyKCkKIHsKICAgICAvLyBDYWxsIHNvdXJjZVBhcnNlZCgpIGFmdGVyIHJl
cGFyc2luZyBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgaXQgd2lsbCBleGVjdXRlCiAgICAgLy8gSmF2
YVNjcmlwdCBpbiB0aGUgaW5zcGVjdG9yLgotICAgIFNvdXJjZVByb3ZpZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3NvdXJjZVByb3ZpZGVycy5lbmQoKTsKLSAgICBmb3IgKFNvdXJjZVBy
b3ZpZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9zb3VyY2VQcm92aWRlcnMuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgbV9kZWJ1Z2dlci0+c291cmNlUGFyc2Vk
KGl0ZXItPnNlY29uZCwgaXRlci0+Zmlyc3QsIC0xLCBVU3RyaW5nKCkpOworICAgIFNvdXJjZUNv
ZGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc291cmNlQ29kZXMuZW5kKCk7CisgICAgZm9y
IChTb3VyY2VDb2RlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9zb3VyY2VDb2Rlcy5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBtX2RlYnVnZ2VyLT5zb3VyY2VQYXJz
ZWQoaXRlci0+c2Vjb25kLCAqaXRlci0+Zmlyc3QsIC0xLCBVU3RyaW5nKCkpOwogfQogCiBpbmxp
bmUgdm9pZCBSZWNvbXBpbGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKQEAgLTgxLDcgKzgx
LDcgQEAgaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+SlNH
bG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKTsKICAgICBleGVjdXRhYmxlLT5kaXNjYXJkQ29kZSgp
OwogICAgIGlmIChtX2RlYnVnZ2VyID09IGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3Qt
PmRlYnVnZ2VyKCkpCi0gICAgICAgIG1fc291cmNlUHJvdmlkZXJzLmFkZChleGVjdXRhYmxlLT5z
b3VyY2UoKS5wcm92aWRlcigpLCBleGVjKTsKKyAgICAgICAgbV9zb3VyY2VDb2Rlcy5hZGQoJmV4
ZWN1dGFibGUtPnNvdXJjZSgpLCBleGVjKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggZjQ4MjQzYzQ1NGFjMzk0ZjBk
ZmI4Y2FiMDNkMjk3YmQyNGVmYzE4ZS4uODNlMTY3NjE4MjcwN2E2MmFkMDA0OWM4YWI5ZWZhZDYz
NjgwMTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7Ci0gICAgY2xhc3Mg
U291cmNlUHJvdmlkZXI7CisgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBjbGFzcyBVU3RyaW5n
OwogCiAgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIgewpAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3Qq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiwgU291cmNlUHJvdmlkZXIq
LCBpbnQgZXJyb3JMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdl
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxl
cikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAyZTgxYzI1NDY2ZDlkMTY4MjVjYTI2NGFmNDMxYzQ3
MjdiYjYxMDNkLi4xMmYwMGIzYjY4OTA1ZmY3NzNiYmFhYmViOGVhY2I2NDFlMjBmODQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjU0LDkgKzI1NCw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVy
cywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5l
LCBpbnQgYm9keUVuZExpbmUpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhw
cihpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50
IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keVN0YXJ0Q29sdW1uLCBp
bnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5
LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC0yNjcsMTEgKzI2NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBp
blN0cmljdENvbnRleHQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVy
dHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVyLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9k
ZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQg
Y2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICB0
ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBp
bnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGlu
dCBib2R5U3RhcnRDb2x1bW4sIGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChuYW1lKTsKICAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5l
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9i
YWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVy
LCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxEYXRh
KSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5u
dWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFj
ZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CiAgICAgfQogICAgIAogCkBAIC0yOTcsOSArMjk3LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpIHsgbm9k
ZS0+c2V0VXNlc0FyZ3VtZW50cygpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5C
cmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVu
ZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHks
IFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJy
YWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlTdGFydENvbHVtbiwgaW50IGJvZHlF
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRM
aW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1lID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICAgICAgdXNl
c0FyZ3VtZW50cygpOwogICAgICAgICBtX3Njb3BlLm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YS5h
cHBlbmQoZGVjbC0+Ym9keSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggYzc2YzJhNGU2MjE3M2Y0OGNiMmQ2OTBjNWZhMGM2OGQyZTM1OGYyZC4uOTRhNzA5NTlk
YWEzZGY0MjRiYzM3OGNmYzEzOWQ5MDM4NDgyNzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKQEAgLTI3Myw3ICsyNzMsNiBAQCB2b2lkIExleGVyOjpzZXRDb2RlKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEqIGFyZW5hKQogewogICAgIG1fYXJl
bmEgPSAmYXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpOwogCi0gICAgbV9saW5lTnVtYmVyID0gc291
cmNlLmZpcnN0TGluZSgpOwogICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CiAgICAgbV9sYXN0VG9r
ZW4gPSAtMTsKIApAQCAtMjk0LDYgKzI5MywxMCBAQCB2b2lkIExleGVyOjpzZXRDb2RlKGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEqIGFyZW5hKQogICAgICAgICBtX2N1cnJl
bnQgPSAqbV9jb2RlOwogICAgIGVsc2UKICAgICAgICAgbV9jdXJyZW50ID0gLTE7CisKKyAgICBt
X2xpbmVOdW1iZXIgPSBzb3VyY2Uuc3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgp
OworICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlIC0gc291cmNlLnN0YXJ0UG9zaXRpb24oKS5tX2Nv
bHVtbi56ZXJvQmFzZWRJbnQoKTsKKwogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPT0gc291
cmNlLnN0YXJ0T2Zmc2V0KCkpOwogfQogCkBAIC0zNTMsNiArMzU2LDcgQEAgdm9pZCBMZXhlcjo6
c2hpZnRMaW5lVGVybWluYXRvcigpCiAgICAgaWYgKG1fcHJldiArIG1fY3VycmVudCA9PSAnXG4n
ICsgJ1xyJykKICAgICAgICAgc2hpZnQoKTsKIAorICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwog
ICAgICsrbV9saW5lTnVtYmVyOwogfQogCkBAIC0xMTY1LDYgKzExNjksNyBAQCBpblNpbmdsZUxp
bmVDb21tZW50OgogCiByZXR1cm5Ub2tlbjoKICAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVO
dW1iZXI7CisgICAgdG9rZW5JbmZvLT56ZXJvQmFzZWRDb2x1bW4gPSBtX2NvZGUgLSBtX2xpbmVT
dGFydDsKICAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CiAgICAgdG9r
ZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CiAgICAgbV9sYXN0VG9rZW4gPSB0
b2tlbjsKQEAgLTExNzMsNiArMTE3OCw3IEBAIHJldHVyblRva2VuOgogcmV0dXJuRXJyb3I6CiAg
ICAgbV9lcnJvciA9IHRydWU7CiAgICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVyOwor
ICAgIHRva2VuSW5mby0+emVyb0Jhc2VkQ29sdW1uID0gbV9jb2RlIC0gbV9saW5lU3RhcnQ7CiAg
ICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OwogICAgIHRva2VuSW5mby0+
ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwogICAgIHJldHVybiBFUlJPUlRPSzsKQEAgLTEy
OTIsMTEgKzEyOTgsNCBAQCB2b2lkIExleGVyOjpjbGVhcigpCiAgICAgbV9pc1JlcGFyc2luZyA9
IGZhbHNlOwogfQogCi1Tb3VyY2VDb2RlIExleGVyOjpzb3VyY2VDb2RlKGludCBvcGVuQnJhY2Us
IGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKQotewotICAgIEFTU0VSVChtX3NvdXJjZS0+
cHJvdmlkZXIoKS0+ZGF0YSgpW29wZW5CcmFjZV0gPT0gJ3snKTsKLSAgICBBU1NFUlQobV9zb3Vy
Y2UtPnByb3ZpZGVyKCktPmRhdGEoKVtjbG9zZUJyYWNlXSA9PSAnfScpOwotICAgIHJldHVybiBT
b3VyY2VDb2RlKG1fc291cmNlLT5wcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAx
LCBmaXJzdExpbmUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaAppbmRleCA5YzBiNjM5ZGFkZDJkYTY5NzdkZTU1ODNhOGJmMjdmMmYwZmQ3
N2FhLi5lZDRiNzNlNTQyYzdmZWVkNTU0MjZiNjI1MDZmMjY4NzQ1NmZkYzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC05NCw3ICs5NCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExhc3RMaW5lTnVtYmVyKGludCBsYXN0TGluZU51bWJlcikgeyBtX2xhc3RMaW5lTnVt
YmVyID0gbGFzdExpbmVOdW1iZXI7IH0KICAgICBpbnQgbGFzdExpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RMaW5lTnVtYmVyOyB9CiAgICAgYm9vbCBwcmV2VGVybWluYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGVybWluYXRvcjsgfQotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShp
bnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSk7CiAgICAgYm9vbCBz
Y2FuUmVnRXhwKGNvbnN0IElkZW50aWZpZXIqJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyKiYg
ZmxhZ3MsIFVDaGFyIHBhdHRlcm5QcmVmaXggPSAwKTsKICAgICBib29sIHNraXBSZWdFeHAoKTsK
IApAQCAtMTE4LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpbmVOdW1iZXIoaW50
IGxpbmUpCiAgICAgewogICAgICAgICBtX2xpbmVOdW1iZXIgPSBsaW5lOworICAgICAgICBtX2xp
bmVTdGFydCA9IG1fY29kZTsKICAgICB9CiAKICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJv
dmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS0+cHJvdmlkZXIoKTsgfQpAQCAtMTczLDYg
KzE3Myw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgVUNoYXIqIG1fY29kZTsKICAgICBjb25zdCBV
Q2hhciogbV9jb2RlU3RhcnQ7CiAgICAgY29uc3QgVUNoYXIqIG1fY29kZUVuZDsKKyAgICBjb25z
dCBVQ2hhciogbV9saW5lU3RhcnQ7CiAgICAgYm9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wg
bV9hdExpbmVTdGFydDsKICAgICBib29sIG1fZXJyb3I7CkBAIC0yNDYsNiArMjQ3LDcgQEAgQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2Vu
RGF0YSogdG9rZW5EYXRhLCBKU1QKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBtYWtlSWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwogICAgIHRva2VuSW5mby0+bGlu
ZSA9IG1fbGluZU51bWJlcjsKKyAgICB0b2tlbkluZm8tPnplcm9CYXNlZENvbHVtbiA9IHN0YXJ0
IC0gbV9saW5lU3RhcnQ7CiAgICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9j
b2RlU3RhcnQ7CiAgICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CiAg
ICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCAyNGM4NzNlM2Y2MzQyYWViMDE0ZWIxNzcwNmQ4ZjY4ZWNjZDY4ZjI5Li5lMTRj
NDE2MjMxYzE5YWVjYjk0Y2U2MTA5ZWQ0Y2MyMTk4NTFhOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC03NDAsNyArNzQwLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjo6cGFyc2VGdW5jdGlvbkJvZHko
VHJlZUJ1aWwKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKIH0KIAotdGVtcGxhdGUgPFBhcnNlcjo6
RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI6OnBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1h
bFBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsIFRyZWVGdW5jdGlvbkJvZHkmIGJvZHksIGludCYg
b3BlbkJyYWNlUG9zLCBpbnQmIGNsb3NlQnJhY2VQb3MsIGludCYgYm9keVN0YXJ0TGluZSkKK3Rl
bXBsYXRlIDxQYXJzZXI6OkZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyOjpw
YXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciom
IG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25C
b2R5JiBib2R5LCBpbnQmIG9wZW5CcmFjZVBvcywgaW50JiBjbG9zZUJyYWNlUG9zLCBpbnQmIGJv
ZHlTdGFydExpbmUsIGludCYgYm9keVN0YXJ0Q29sdW1uKQogewogICAgIEF1dG9Qb3BTY29wZVJl
ZiBmdW5jdGlvblNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICBmdW5jdGlvblNjb3BlLT5z
ZXRJc0Z1bmN0aW9uKCk7CkBAIC03NjIsNiArNzYyLDcgQEAgdGVtcGxhdGUgPFBhcnNlcjo6RnVu
Y3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Nj
b3AKICAgICAKICAgICBvcGVuQnJhY2VQb3MgPSBtX3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKICAg
ICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgYm9keVN0YXJ0Q29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24g
YWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0
byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KICAgICBpZiAoY29uc3QgU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0qIGNhY2hlZEluZm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSA/
IGZpbmRDYWNoZWRGdW5jdGlvbkluZm8ob3BlbkJyYWNlUG9zKSA6IDApIHsKQEAgLTgyMywxMCAr
ODI0LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlCiAgICAgaW50IG9wZW5CcmFjZVBvcyA9
IDA7CiAgICAgaW50IGNsb3NlQnJhY2VQb3MgPSAwOwogICAgIGludCBib2R5U3RhcnRMaW5lID0g
MDsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05hbWUs
IHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKKyAgICBpbnQgYm9keVN0YXJ0Q29sdW1uID0g
MDsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05hbWUs
IHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSkpOwogICAgIGZhaWxJ
ZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKG5h
bWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9k
eVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uLCBtX2xhc3RMaW5lKTsKIH0KIAogc3RydWN0IExh
YmVsSW5mbyB7CkBAIC0xMTc2LDYgKzExNzgsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwg
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI6OnBhcnNlUHJvcGVydHkoVAog
ICAgICAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKICAgICAgICAgaW50IGNsb3NlQnJhY2VQb3Mg
PSAwOwogICAgICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CisgICAgICAgIGludCBib2R5U3Rh
cnRDb2x1bW4gPSAwOwogICAgICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZTsKICAgICAgICAg
aWYgKCppZGVudCA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmdldCkKICAgICAgICAg
ICAgIHR5cGUgPSBQcm9wZXJ0eU5vZGU6OkdldHRlcjsKQEAgLTExODMsOCArMTE4Niw4IEBAIHRl
bXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBh
cnNlcjo6cGFyc2VQcm9wZXJ0eShUCiAgICAgICAgICAgICB0eXBlID0gUHJvcGVydHlOb2RlOjpT
ZXR0ZXI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCBmYWxzZT4oY29udGV4
dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpKSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRl
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHR5cGUsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNl
UG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCBmYWxzZT4o
Y29udGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21w
bGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgYWNjZXNzb3JOYW1lLCBwYXJh
bWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUs
IGJvZHlTdGFydENvbHVtbiwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7
CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1
ZTsKQEAgLTE0NDMsOSArMTQ0NiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdQogICAgICAg
ICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKICAgICAgICAgaW50IGNsb3NlQnJhY2VQb3MgPSAwOwog
ICAgICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CisgICAgICAgIGludCBib2R5U3RhcnRDb2x1
bW4gPSAwOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0
aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgbmFtZSwgcGFy
YW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5l
KSkpOwotICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBj
bG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihj
b250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQ
b3MsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpKTsKKyAgICAgICAgYmFzZSA9IGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUs
IGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0
TGluZSwgYm9keVN0YXJ0Q29sdW1uLCBtX2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAgICAg
YmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBkNGE3MWUyY2E5MGE2Njk1NGJiY2NlMmU1ZDAw
NDU3NDdjOTY1MDExLi4xNDVmMTc4NTBmYzU1OTc3ZjkzNGRiMjZlNjlkZjBhYThmYzVhZGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUzOCw2ICs1MzgsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9pbmZvLmxpbmU7CiAgICAgfQogICAg
IAorICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuQ29sdW1uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3Rva2VuLm1faW5mby56ZXJvQmFzZWRDb2x1bW4gKyAxOworICAgIH0KKyAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90
b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwpAQCAtODk0LDcgKzg5OSw3IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9u
IHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMs
IGNvbnN0IElkZW50aWZpZXIqJiBsYXN0SWRlbnQsIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlh
bGl6ZXIsIGludCYgaWRlbnRTdGFydCwgaW50JiBpbml0U3RhcnQsIGludCYgaW5pdEVuZCk7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVDb25zdERl
Y2xMaXN0IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImIGNvbnRleHQpOwog
ICAgIGVudW0gRnVuY3Rpb25SZXF1aXJlbWVudHMgeyBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBG
dW5jdGlvbk5lZWRzTmFtZSB9OwotICAgIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cywg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgcGFy
c2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYsIFRyZWVGb3Jt
YWxQYXJhbWV0ZXJMaXN0JiwgVHJlZUZ1bmN0aW9uQm9keSYsIGludCYgb3BlbkJyYWNlLCBpbnQm
IGNsb3NlQnJhY2UsIGludCYgYm9keVN0YXJ0TGluZSk7CisgICAgdGVtcGxhdGUgPEZ1bmN0aW9u
UmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZp
ZXIqJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rpb25Cb2R5JiwgaW50JiBv
cGVuQnJhY2UsIGludCYgY2xvc2VCcmFjZSwgaW50JiBib2R5U3RhcnRMaW5lLCBpbnQmIGJvZHlT
dGFydENvbHVtbik7CiAgICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rv
a2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwogICAgIApAQCAt
MTAxOSw3ICsxMDI0LDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2cKICAgICB9CiAKICAgICBp
ZiAoZGVidWdnZXIgJiYgIVBhcnNlZE5vZGU6OnNjb3BlSXNGdW5jdGlvbikKLSAgICAgICAgZGVi
dWdnZXItPnNvdXJjZVBhcnNlZChkZWJ1Z2dlckV4ZWNTdGF0ZSwgbV9zb3VyY2UtPnByb3ZpZGVy
KCksIGVyckxpbmUsIGVyck1zZyk7CisgICAgICAgIGRlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoZGVi
dWdnZXJFeGVjU3RhdGUsICptX3NvdXJjZSwgZXJyTGluZSwgZXJyTXNnKTsKIAogICAgIG1fYXJl
bmEtPnJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCmluZGV4IGExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLmE0YzFi
MjIxNTc1OTAxOTZlZTU5ODgyMGJkMWI2OWJjNzFlMTQzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQxLDggKzE0MSw5IEBAIHVuaW9uIEpT
VG9rZW5EYXRhIHsKIH07CiAKIHN0cnVjdCBKU1Rva2VuSW5mbyB7Ci0gICAgSlNUb2tlbkluZm8o
KSA6IGxpbmUoMCkgeyB9CisgICAgSlNUb2tlbkluZm8oKSA6IGxpbmUoMCksIHplcm9CYXNlZENv
bHVtbigwKSB7IH0KICAgICBpbnQgbGluZTsKKyAgICBpbnQgemVyb0Jhc2VkQ29sdW1uOwogICAg
IGludCBzdGFydE9mZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggODdjODQ0ZDMxMTRmOTZiMDc0ZjdiNmQ2
M2IzNzEyNjMzZDczZGZmYy4uNzA2NTVhOTQwMDhjYjg5MzY2YjU4NWY3ZDI4ZDFlNzA3NzQwYWM0
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTMxLDYg
KzMxLDcgQEAKIAogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNDAsMjMgKzQxLDMxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
OiBtX3Byb3ZpZGVyKDApCiAgICAgICAgICAgICAsIG1fc3RhcnRDaGFyKDApCiAgICAgICAgICAg
ICAsIG1fZW5kQ2hhcigwKQotICAgICAgICAgICAgLCBtX2ZpcnN0TGluZSgwKQorICAgICAgICAg
ICAgLCBtX3N0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSA9IDEpCisgICAgICAgIFNvdXJjZUNv
ZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIpCiAgICAgICAgICAgICA6IG1f
cHJvdmlkZXIocHJvdmlkZXIpCiAgICAgICAgICAgICAsIG1fc3RhcnRDaGFyKDApCiAgICAgICAg
ICAgICAsIG1fZW5kQ2hhcihtX3Byb3ZpZGVyLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICwgbV9m
aXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkKKyAgICAgICAgICAgICwgbV9zdGFydFBv
c2l0aW9uKFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJv
dmlkZXIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IGZpcnN0TGluZSkKKyAgICAgICAgU291cmNl
Q29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uKQorICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQor
ICAgICAgICAgICAgLCBtX3N0YXJ0Q2hhcigwKQorICAgICAgICAgICAgLCBtX2VuZENoYXIobV9w
cm92aWRlci0+bGVuZ3RoKCkpCisgICAgICAgICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBv
c2l0aW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTb3VyY2VDb2RlKFBhc3NS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKICAgICAgICAgICAgIDogbV9wcm92aWRlcihw
cm92aWRlcikKICAgICAgICAgICAgICwgbV9zdGFydENoYXIoc3RhcnQpCiAgICAgICAgICAgICAs
IG1fZW5kQ2hhcihlbmQpCi0gICAgICAgICAgICAsIG1fZmlyc3RMaW5lKHN0ZDo6bWF4KGZpcnN0
TGluZSwgMSkpCisgICAgICAgICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjYsMzQgKzc1LDQwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIHJldHVybiBVU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4g
bV9wcm92aWRlci0+Z2V0UmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhcik7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcm92
aWRlcjsgfQogICAgICAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVy
biBtX3Byb3ZpZGVyLmdldCgpOyB9Ci0gICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpcnN0TGluZTsgfQorICAgICAgICBpbnQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOyB9CisgICAgICAgIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRQb3Np
dGlvbjsgfQogICAgICAgICBpbnQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
Q2hhcjsgfQogICAgICAgICBpbnQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRDaGFy
OyB9CiAgICAgICAgIGNvbnN0IFVDaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci0+ZGF0YSgpICsgbV9zdGFydENoYXI7IH0KICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyOyB9Ci0gICAgICAgIAotICAgICAgICBTb3Vy
Y2VDb2RlIHN1YkV4cHJlc3Npb24oaW50LCBpbnQsIGludCk7CisKKyAgICAgICAgU291cmNlQ29k
ZSBzdWJFeHByZXNzaW9uKGludCwgaW50LCBpbnQsIGludCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgICAgIGludCBtX3N0
YXJ0Q2hhcjsKICAgICAgICAgaW50IG1fZW5kQ2hhcjsKLSAgICAgICAgaW50IG1fZmlyc3RMaW5l
OworICAgICAgICBUZXh0UG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOwogICAgIH07CiAKLSAgICBp
bmxpbmUgU291cmNlQ29kZSBtYWtlU291cmNlKGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
VVN0cmluZyYgdXJsID0gVVN0cmluZygpLCBpbnQgZmlyc3RMaW5lID0gMSkKKyAgICBpbmxpbmUg
U291cmNlQ29kZSBtYWtlU291cmNlKGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmlu
ZyYgdXJsID0gVVN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoVVN0
cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwpLCBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKTsKKyAgICB9CisKKyAgICBpbmxpbmUgU291cmNlQ29kZSBtYWtlU291
cmNlKGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBUZXh0
UG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoVVN0
cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwpLCBmaXJzdExpbmUpOworICAg
ICAgICByZXR1cm4gU291cmNlQ29kZShVU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3Vy
Y2UsIHVybCksIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgCi0gICAgaW5saW5lIFNvdXJjZUNvZGUg
U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbihpbnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwg
aW50IGZpcnN0TGluZSkKKworICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4
cHJlc3Npb24oaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGlu
dCBmaXJzdENvbHVtbikKICAgICB7CiAgICAgICAgIEFTU0VSVChwcm92aWRlcigpLT5kYXRhKClb
b3BlbkJyYWNlXSA9PSAneycpOwogICAgICAgICBBU1NFUlQocHJvdmlkZXIoKS0+ZGF0YSgpW2Ns
b3NlQnJhY2VdID09ICd9Jyk7Ci0gICAgICAgIHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVyKCks
IG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSk7CisgICAgICAgIHJldHVybiBT
b3VyY2VDb2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIFRleHRQb3Np
dGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoZmlyc3RMaW5lKSwgT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGZpcnN0Q29sdW1uKSkpOwogICAgIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKaW5kZXggNzcxZTQ2MDc1MThhZTYxMTcxNjE5OTliN2Y3NWQ2NGIyOWQzNzZlOS4uZWY1ZjY5
YmNmY2U1OTA1YjRkYjlkODdiODM3ZDQ4YmRkOGVhNjZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU5LDcgKzU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgaW50IGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICAgICAgCiAgICAg
ICAgIGNvbnN0IFVTdHJpbmcmIHVybCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1
YWwgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpOyB9CiAgICAgICAgIGludHB0cl90IGFzSUQoKSB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAgICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRhdGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGM2OGIwMWY4NTIxYTkwZmMyZWMyMmE2
ZmZjNTllYTdiODFlYzgxNTguLmI5NjdmNDk2NDBkYTY0NDNlZGJmODkzZjlkNjZjNWJjNWY5ZDQw
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4
cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50LCBFeHByZXNzaW9uVHlw
ZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhw
cihpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlv
bkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBpbnQgY3JlYXRlRnVuY3Rpb25C
b2R5KGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIDE7IH0K
QEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0
YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUlmU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CkBAIC0yMDMsNyAr
MjAzLDcgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBz
dHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29u
c3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKaW5kZXggNTU0MmQ4NTYxMDliY2NiYzUxMmE2NzBmYzVmY2U0MjI3ZjQ5Y2RlNC4uYmU0YzYz
YzQ1NzZjZTc0MDFkMWZjOTAxNjllZTQ2ZjMwNzVlNmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDE0
ICs3OSwxNCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlv
biBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGlu
dCBsaW5lTnVtYmVyKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2
YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUV2YWxF
cnJvcihleGVjLCAiRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZGlzYWJsZWQiKSk7Ci0gICAgcmV0
dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOworICAg
IHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBn
bG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbik7CiB9
CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgbGluZU51bWJlcikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0
aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBv
c2l0aW9uKQogewogICAgIC8vIEZ1bmN0aW9ucyBuZWVkIHRvIGhhdmUgYSBzcGFjZSBmb2xsb3dp
bmcgdGhlIG9wZW5pbmcgeyBkdWUgdG8gZm9yIHdlYiBjb21wYXRpYmlsaXR5CiAgICAgLy8gc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MApAQCAtMTExLDcg
KzExMSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRD
aGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAgICAgfQogCiAgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7Ci0gICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwgbGluZU51bWJlcik7
CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwg
cG9zaXRpb24pOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1
bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigp
LCBzb3VyY2UsICZleGNlcHRpb24pOwogICAgIGlmICghZnVuY3Rpb24pIHsKQEAgLTEyNiw3ICsx
MjYsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iagogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0
aW9uIENvbnN0cnVjdG9yCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpLCBVU3RyaW5nKCksIDEpOworICAgIHJldHVy
biBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXIo
ZXhlYywgImFub255bW91cyIpLCBVU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0
aW9uKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCBhZDA0NTdmYzY0OGM5
MzYzZTkyMjg0ODdjMjYwMTQyYzc0M2M3ZWNlLi41OWI4ODcyNGE1ZTVkY2Y4ZTZhOTI1MmZhNWY2
MjQ0YTg3MDBkMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIEZ1bmN0aW9u
Q29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTIsMTAg
KzUzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYs
IGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlcik7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXIm
IGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBpbnQg
bGluZU51bWJlcik7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBVU3RyaW5nJiwgY29uc3QgVGV4dFBvc2l0aW9uJik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDhhNmZiYjc0NjliODE1MTU4YzI0MzY4
MzQ3MWM2YmY3NGUwMDRkOWEuLmNlNDA0MDExZjlkYjMyMDFkOTJiMmFmYTk4ZDBhYmFlMzY0Njc1
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGV2ZW50TGlz
dGVuZXJDb3VudGVyLCAoIkpTTGF6eUV2ZW50TGlzdGVuZXIiKSk7CiAKLUpTTGF6eUV2ZW50TGlz
dGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUq
IG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgSlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKK0pTTGF6eUV2ZW50TGlz
dGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUq
IG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQog
ICAgIDogSlNFdmVudExpc3RlbmVyKDAsIHdyYXBwZXIsIHRydWUsIGlzb2xhdGVkV29ybGQpCiAg
ICAgLCBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgLCBtX2V2ZW50UGFyYW1ldGVy
TmFtZShldmVudFBhcmFtZXRlck5hbWUpCiAgICAgLCBtX2NvZGUoY29kZSkKICAgICAsIG1fc291
cmNlVVJMKHNvdXJjZVVSTCkKLSAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAsIG1fb3JpZ2luYWxOb2RlKG5vZGUpCiB7CiAgICAg
Ly8gV2UgZG9uJ3QgcmV0YWluIHRoZSBvcmlnaW5hbCBub2RlIGJlY2F1c2Ugd2UgYXNzdW1lIGl0
CkBAIC01Miw4ICs1Miw4IEBAIEpTTGF6eUV2ZW50TGlzdGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVu
ZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluCiAKICAgICAvLyBBIEpT
TGF6eUV2ZW50TGlzdGVuZXIgY2FuIGJlIGNyZWF0ZWQgd2l0aCBhIGxpbmUgbnVtYmVyIG9mIHpl
cm8gd2hlbiBpdCBpcyBjcmVhdGVkIHdpdGgKICAgICAvLyBhIHNldEF0dHJpYnV0ZSBjYWxsIGZy
b20gSmF2YVNjcmlwdCwgc28gbWFrZSB0aGUgbGluZSBudW1iZXIgMSBpbiB0aGF0IGNhc2UuCi0g
ICAgaWYgKG1fbGluZU51bWJlciA9PSAwKQotICAgICAgICBtX2xpbmVOdW1iZXIgPSAxOworICAg
IGlmIChtX3Bvc2l0aW9uID09IFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCisg
ICAgICAgIG1fcG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIGV2ZW50TGlzdGVuZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAt
OTYsNyArOTYsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpT
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGFyZ3MuYXBwZW5kKGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9ldmVudFBhcmFtZXRlck5h
bWUpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgbV9jb2RlKSk7CiAKLSAgICBK
U09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmll
cihleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9mdW5jdGlvbk5hbWUpKSwgc3RyaW5nVG9VU3RyaW5n
KG1fc291cmNlVVJMKSwgbV9saW5lTnVtYmVyKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/
CisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElk
ZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG1fZnVuY3Rpb25OYW1lKSksIHN0cmluZ1Rv
VVN0cmluZyhtX3NvdXJjZVVSTCksIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhl
YyBvaz8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVwb3J0Q3Vy
cmVudEV4Y2VwdGlvbihleGVjKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaAppbmRl
eCAxYjAwYjc1YjI1NDY3ZTY5MzY1Y2I1MWFkMDMwMzNhOGFhNjAzNDJiLi5hYTA1YzgzYmFhMzVm
YjhkNjkxZGI0NTc4YmQ4YWVjNGY3OTZmNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNs
dWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTI5LDE0ICszMCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU0xh
enlFdmVudExpc3RlbmVyIDogcHVibGljIEpTRXZlbnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1l
LCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlciwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxk
KiBpc29sYXRlZFdvcmxkKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0xhenlFdmVudExp
c3RlbmVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
ZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBKU0M6OkpT
T2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihm
dW5jdGlvbk5hbWUsIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29kZSwgbm9kZSwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEpTTGF6eUV2ZW50TGlzdGVuZXIoZnVuY3Rpb25OYW1lLCBldmVudFBhcmFt
ZXRlck5hbWUsIGNvZGUsIG5vZGUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIHdyYXBwZXIsIGlzb2xh
dGVkV29ybGQpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5KU0xhenlFdmVudExpc3Rl
bmVyKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xh
dGVkV29ybGQpOworICAgICAgICBKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3QgU3RyaW5n
JiBjb2RlLCBOb2RlKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlv
biYsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCk7CiAKICAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB3
YXNDcmVhdGVkRnJvbU1hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTQ1LDcgKzQ2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIFN0cmluZyBtX2V2ZW50
UGFyYW1ldGVyTmFtZTsKICAgICAgICAgbXV0YWJsZSBTdHJpbmcgbV9jb2RlOwogICAgICAgICBt
dXRhYmxlIFN0cmluZyBtX3NvdXJjZVVSTDsKLSAgICAgICAgaW50IG1fbGluZU51bWJlcjsKKyAg
ICAgICAgVGV4dFBvc2l0aW9uIG1fcG9zaXRpb247CiAgICAgICAgIE5vZGUqIG1fb3JpZ2luYWxO
b2RlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggZWFlODUxN2FkNzljNGU1MTAyYWQxMWQ3ZDVkMzI3NzMwMmRiZmVj
My4uZGU3ZTlhMDI4YWY3YzcyYzVmYjZlZTk5OWQ0ZTJiNmY4ODJlY2NjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3
LDcgQEAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2lu
Y2x1ZGUgPHRleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtMjI1LDEzICsyMjYsMTMgQEAgSlNET01XaW5kb3dT
aGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxk
KQogICAgIHJldHVybiB3aW5kb3dTaGVsbDsKIH0KIAotaW50IFNjcmlwdENvbnRyb2xsZXI6OmV2
ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAorVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xs
ZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBKU0MgZXhwZWN0cyAx
LWJhc2VkIGxpbmUgbnVtYmVycywgc28gd2UgbXVzdCBhZGQgb25lIGhlcmUgdG8gZ2V0IGl0IHJp
Z2h0LgogICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CiAgICAgaWYgKHBhcnNlcikKLSAg
ICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpLm9uZUJhc2VkSW50KCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBwYXJzZXItPnRleHRQb3NpdGlvbigpOworICAgIHJldHVy
biBUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpOwogfQogCiB2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVFdmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAppbmRleCBkZTgyMGVkYTdhOTk2YjUyYTgyNTU2NjBkZTAxODZmZjk2
MGUwYjdmLi4wZmJmYTRiMTFlZDhlNGI2ZDA4NTVmNTA3MzhmMzcwOWMyYmMzODc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRp
b24uaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBA
IC0xMDQsNyArMTA1LDcgQEAgcHVibGljOgogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZUluV29ybGQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCopOwogCi0gICAgaW50IGV2ZW50
SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdDsKKyAgICBUZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVy
UG9zaXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZUV2YWwoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDdjMmQ4
ZmM3ZjZhNmE3YzRhMDIwZDg0MTYzNGFmOTA3ZTNhOTYwZTcuLjMwZjRiOWRkMmI1ZDA1ZGFjMjRj
OTIxMzMzMjA0Njc0OWM1NzBiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxk
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgorI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2Rl
Lmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjE5LDE1ICsyMjAs
MTUgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZShTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKIH0K
IAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBM
aXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJv
b2wgaXNDb250ZW50U2NyaXB0KQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQ
YXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGJvb2wgaXNDb250ZW50U2NyaXB0KQogewotICAgIFN0cmluZyBzb3VyY2VJRCA9
IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmc6Om51bWJlcihzb3VyY2VQcm92aWRlci0+YXNJ
RCgpKSk7CisgICAgU3RyaW5nIHNvdXJjZUlEID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmlu
Zzo6bnVtYmVyKHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCkpKTsKIAogICAgIFNjcmlwdERlYnVn
TGlzdGVuZXI6OlNjcmlwdCBzY3JpcHQ7Ci0gICAgc2NyaXB0LnVybCA9IHVzdHJpbmdUb1N0cmlu
Zyhzb3VyY2VQcm92aWRlci0+dXJsKCkpOwotICAgIHNjcmlwdC5zb3VyY2UgPSB1c3RyaW5nVG9T
dHJpbmcoSlNDOjpVU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT5kYXRhKCksIHNvdXJjZVByb3ZpZGVy
LT5sZW5ndGgoKSkpOwotICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3Rh
cnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKLSAgICBzY3JpcHQuc3RhcnRDb2x1
bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZElu
dCgpOworICAgIHNjcmlwdC51cmwgPSB1c3RyaW5nVG9TdHJpbmcoc291cmNlLnByb3ZpZGVyKCkt
PnVybCgpKTsKKyAgICBzY3JpcHQuc291cmNlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmlu
Zyhzb3VyY2UucHJvdmlkZXIoKS0+ZGF0YSgpLCBzb3VyY2UucHJvdmlkZXIoKS0+bGVuZ3RoKCkp
KTsKKyAgICBzY3JpcHQuc3RhcnRMaW5lID0gc291cmNlLnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUu
emVyb0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LnN0YXJ0Q29sdW1uID0gc291cmNlLnN0YXJ0UG9z
aXRpb24oKS5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKICAgICBzY3JpcHQuaXNDb250ZW50U2Ny
aXB0ID0gaXNDb250ZW50U2NyaXB0OwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IHNjcmlwdC5z
b3VyY2UubGVuZ3RoKCk7CkBAIC0yNTIsMTEgKzI1MywxMSBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMs
IFNvdQogICAgICAgICBjb3B5W2ldLT5kaWRQYXJzZVNvdXJjZShzb3VyY2VJRCwgc2NyaXB0KTsK
IH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVu
ZXJTZXQmIGxpc3RlbmVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgdXJsID0gdXN0cmlu
Z1RvU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT51cmwoKSk7Ci0gICAgU3RyaW5nIGRhdGEgPSB1c3Ry
aW5nVG9TdHJpbmcoSlNDOjpVU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT5kYXRhKCksIHNvdXJjZVBy
b3ZpZGVyLT5sZW5ndGgoKSkpOwotICAgIGludCBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+
c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOworICAgIFN0cmluZyB1cmwgPSB1
c3RyaW5nVG9TdHJpbmcoc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKKyAgICBTdHJpbmcgZGF0
YSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoc291cmNlLnByb3ZpZGVyKCktPmRhdGEo
KSwgc291cmNlLnByb3ZpZGVyKCktPmxlbmd0aCgpKSk7CisgICAgaW50IGZpcnN0TGluZSA9IHNv
dXJjZS5maXJzdExpbmUoKTsKIAogICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gY29w
eTsKICAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBjb3B5KTsKQEAgLTI4Miw3ICsyODMsNyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBEZWJ1Z2dlcjo6ZGV0YWNoKGdsb2JhbE9iamVjdCk7CiB9CiAKLXZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3Zp
ZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJyb3JN
ZXNzYWdlKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBVU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjk2LDkgKzI5Nyw5IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNv
dXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAK
ICAgICBib29sIGlzRXJyb3IgPSBlcnJvckxpbmUgIT0gLTE7CiAgICAgaWYgKGlzRXJyb3IpCi0g
ICAgICAgIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92
aWRlciwgZXJyb3JMaW5lLCB1c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2UsIGVycm9yTGlu
ZSwgdXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UKLSAgICAgICAgZGlz
cGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgaXNDb250ZW50
U2NyaXB0KGV4ZWMpKTsKKyAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJz
LCBzb3VyY2UsIGlzQ29udGVudFNjcmlwdChleGVjKSk7CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5l
cnMgPSBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCmluZGV4IGMzZGRkNmM2YjIxZDJhOTEwNjM2NmE2MDg2ZDU4YzE1NTFiNjkyNjgu
LjNmYTQyMWI5MjUwNWMxZDM0YzYyZDBiN2IzNWIzNDc1MDU5YTM0ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTAyLDggKzEwMiw4
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhjb25z
dCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2spOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKik7
CiAgICAgdm9pZCBkaXNwYXRjaERpZENvbnRpbnVlKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKLSAg
ICB2b2lkIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVy
cywgSlNDOjpTb3VyY2VQcm92aWRlciosIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKLSAgICB2b2lk
IGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJz
LCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5l
clNldCYgbGlzdGVuZXJzLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBib29sIGlzQ29udGVudFNj
cmlwdCk7CisgICAgdm9pZCBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVu
ZXJTZXQmIGxpc3RlbmVycywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgaW50IGVycm9yTGluZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBjcmVhdGVDYWxsRnJhbWVB
bmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwogICAgIHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAgdmly
dHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNl
Q29kZSYsIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwogICAg
IHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGF0U3Rh
dGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGZpcnN0TGluZSk7CiAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAppbmRleCAwNmNlZGFiNzk1NDE2NjI3NzQ0MDI3Mjc3ZjRmYjlmZWIwNGUwNzYzLi40N2ZmZDM4
MDQ1ZjMzMjNmZWE3NTRkZjNiYWYyNzYyZTNiMGI1MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcApAQCAtNTYsNyArNTYsNyBA
QCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoTm9kZSogbm9kZSwgQXR0cmlidQogICAgIGlmIChhdHRyLT5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBpbnQgbGluZU51bWJlciA9IDE7CisgICAgVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKTsKICAgICBTdHJpbmcg
c291cmNlVVJMOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm92
aWRlIGFjY3VyYXRlIHNvdXJjZSBpbmZvcm1hdGlvbiBmb3IgZnJhbWVsZXNzIGRvY3VtZW50cywg
dG9vIChlLmcuIGZvciBpbXBvcnRpbmcgbm9kZXMgZnJvbSBYTUxIdHRwUmVxdWVzdC5yZXNwb25z
ZVhNTCkuCkBAIC02NSwxMSArNjUsMTEgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVy
PiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICAg
ICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0
ZVNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBsaW5lTnVtYmVyID0g
c2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOworICAgICAgICBwb3Np
dGlvbiA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlclBvc2l0aW9uKCk7CiAgICAgICAg
IHNvdXJjZVVSTCA9IG5vZGUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIH0KIAot
ICAgIHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCku
c3RyaW5nKCksIGV2ZW50UGFyYW1ldGVyTmFtZShub2RlLT5pc1NWR0VsZW1lbnQoKSksIGF0dHIt
PnZhbHVlKCksIG5vZGUsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgMCwgbWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpOworICAgIHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+
bG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1ldGVyTmFtZShub2RlLT5pc1NWR0VsZW1l
bnQoKSksIGF0dHItPnZhbHVlKCksIG5vZGUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIDAsIG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVy
PiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgQXR0cmlidXRlKiBh
dHRyKQpAQCAtODEsMTcgKzgxLDE0IEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAgICAgaWYg
KGF0dHItPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGludCBsaW5lTnVtYmVy
ID0gMTsKLSAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIAogICAgIFNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250
cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFu
ZGxlckxpbmVOdW1iZXIoKTsKLSAgICBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCk7CisgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gc2NyaXB0Q29udHJvbGxl
ci0+ZXZlbnRIYW5kbGVyUG9zaXRpb24oKTsKKyAgICBTdHJpbmcgc291cmNlVVJMID0gZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gdG9K
U0RPTVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwotICAgIHJldHVybiBK
U0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2
ZW50UGFyYW1ldGVyTmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSwgYXR0
ci0+dmFsdWUoKSwgMCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCB3cmFwcGVyLCBtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShh
dHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLT5kb2N1
bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCAwLCBzb3VyY2VVUkwsIHBv
c2l0aW9uLCB3cmFwcGVyLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIFN0cmluZyBl
dmVudExpc3RlbmVySGFuZGxlckJvZHkoRG9jdW1lbnQqIGRvY3VtZW50LCBFdmVudExpc3RlbmVy
KiBldmVudExpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291
cmNlQ29kZS5oCmluZGV4IGZlNWFiN2IwNDc0ZGRkMDc2OGNjMjk2OTMxYzlkMDBmNWMyOGExZTQu
LjNhYTk4ZmIzYmZhZTE1Yzc0MDIyZjg4ZGNjNDlkNTBlMTBjNjBjMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTQzLDggKzQzLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0U291cmNlQ29kZSB7CiBwdWJsaWM6CiAg
ICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJs
ID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpKQotICAgICAgICA6IG1fcHJvdmlkZXIoU3RyaW5nU291cmNl
UHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybC5pc051bGwoKSA/IFN0cmluZygpIDogdXJsLnN0
cmluZygpLCBzdGFydFBvc2l0aW9uKSkKLSAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlciwgc3Rh
cnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSkKKyAgICAgICAgOiBtX3Byb3ZpZGVyKFN0
cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwuaXNOdWxsKCkgPyBTdHJpbmco
KSA6IHVybC5zdHJpbmcoKSkpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9z
aXRpb24pCiAgICAgICAgICwgbV91cmwodXJsKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaAppbmRleCBiZGViOTg2
MGQ2MmIwYjI0NjY3ODVmODc2YTQxNjRhNzMyNzczNzdiLi5jZGFmMDliY2ZhNjM2NDlkNjg1NDVm
MDBkNWM2MTI4ODFhMTlkNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TdHJpbmdTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKQEAgLTM3LDMyICszNywyOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTY3JpcHRT
b3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0
aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
U291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5n
U291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247IH0KICAgICAgICAgSlNDOjpVU3RyaW5n
IGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QgeyByZXR1cm4gSlNDOjpVU3RyaW5n
KG1fc291cmNlLmNoYXJhY3RlcnMoKSArIHN0YXJ0LCBlbmQgLSBzdGFydCk7IH0KICAgICAgICAg
Y29uc3QgVUNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5jaGFyYWN0ZXJzKCk7
IH0KICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmxlbmd0aCgp
OyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2U7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ1NvdXJjZVByb3ZpZGVyKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uKQorICAgICAgICBTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgICAgICA6IFNjcmlwdFNvdXJjZVBy
b3ZpZGVyKHN0cmluZ1RvVVN0cmluZyh1cmwpKQotICAgICAgICAgICAgLCBtX3N0YXJ0UG9zaXRp
b24oc3RhcnRQb3NpdGlvbikKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICAg
ICB7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFRleHRQb3NpdGlvbiBtX3N0YXJ0UG9z
aXRpb247CisKICAgICAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIH07CiAKLSAgICBpbmxpbmUg
SlNDOjpTb3VyY2VDb2RlIG1ha2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgdXJsID0gU3RyaW5nKCksIGludCBmaXJzdExpbmUgPSAxKQorICAgIGlubGluZSBKU0M6
OlNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB1cmwgPSBTdHJpbmcoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlNvdXJjZUNvZGUo
U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCksIGZpcnN0TGluZSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OlNvdXJjZUNvZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0
ZShzb3VyY2UsIHVybCkpOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmluZGV4IDc4NGE4MDI5
NGI2YzhmNzZjNDY5NDgyYTQ2ODg0MjlkYzJkOGRiMGIuLjJlOWNiMWY5MGQ0NWFiYjllMDNkMWQz
YWE3YjQxNDdjOTcwMDVmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0
R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAg
dmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYsIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwog
ICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGF0
U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmlu
ZGV4IGI2OTJjNTg1ZjBmYWJiMTMwNDkzNjE2MmRhMjExOGRjZTZjZWE5YTkuLjJmYjFlMmVjYjA5
OTYzZTdlYTMwZjQ3MmQ4Y2ExZGQ5YTUzNjBjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAi
V2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlckNhbGxG
cmFtZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL1NvdXJjZUNvZGUuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L1NvdXJjZVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgpAQCAtMTA1LDE2ICsxMDYsMTYgQEAg
dm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6aW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWwKIH0KIAogLy8gY2FsbGJhY2tzIC0gcmVsYXkgdG8gZGVs
ZWdhdGUKLXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4
ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3Qg
VVN0cmluZyYgZXJyb3JNc2cpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBlcnJvckxpbmUs
IGNvbnN0IFVTdHJpbmcmIGVycm9yTXNnKQogewogICAgIGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSB0cnVlOwogCi0gICAg
TlNTdHJpbmcgKm5zU291cmNlID0gdG9OU1N0cmluZyhzb3VyY2VQcm92aWRlcik7Ci0gICAgTlNV
UkwgKm5zVVJMID0gdG9OU1VSTChzb3VyY2VQcm92aWRlci0+dXJsKCkpOwotICAgIGludCBmaXJz
dExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZElu
dCgpOworICAgIE5TU3RyaW5nICpuc1NvdXJjZSA9IHRvTlNTdHJpbmcoc291cmNlLnByb3ZpZGVy
KCkpOworICAgIE5TVVJMICpuc1VSTCA9IHRvTlNVUkwoc291cmNlLnByb3ZpZGVyKCktPnVybCgp
KTsKKyAgICBpbnQgZmlyc3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgpOwogCiAgICAgV2ViRnJh
bWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CkBAIC0xMjMsOSArMTI0
LDkgQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhl
YywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3YKICAgICBpZiAoZXJyb3JMaW5lID09IC0xKSB7
CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFBhcnNlU291cmNlRnVuYykgewogICAg
ICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkUGFyc2VTb3VyY2VFeHBlY3RzQmFzZUxp
bmVOdW1iZXIpCi0gICAgICAgICAgICAgICAgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5kaWRQYXJzZVNvdXJjZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZFBhcnNlU291cmNlOmJhc2VMaW5lTnVtYmVyOmZyb21VUkw6c291cmNlSWQ6Zm9yV2ViRnJh
bWU6KSwgbnNTb3VyY2UsIGZpcnN0TGluZSwgbnNVUkwsIHNvdXJjZVByb3ZpZGVyLT5hc0lEKCks
IHdlYkZyYW1lKTsKKyAgICAgICAgICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBs
ZW1lbnRhdGlvbnMtPmRpZFBhcnNlU291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUGFyc2VTb3VyY2U6YmFzZUxpbmVOdW1iZXI6ZnJvbVVSTDpzb3VyY2VJZDpmb3JXZWJG
cmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5lLCBuc1VSTCwgc291cmNlLnByb3ZpZGVyKCktPmFz
SUQoKSwgd2ViRnJhbWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIENhbGxT
Y3JpcHREZWJ1Z0RlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUGFyc2VTb3VyY2VGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRQYXJzZVNvdXJjZTpmcm9tVVJMOnNvdXJjZUlk
OmZvcldlYkZyYW1lOiksIG5zU291cmNlLCBbbnNVUkwgYWJzb2x1dGVTdHJpbmddLCBzb3VyY2VQ
cm92aWRlci0+YXNJRCgpLCB3ZWJGcmFtZSk7CisgICAgICAgICAgICAgICAgQ2FsbFNjcmlwdERl
YnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRQYXJzZVNvdXJjZUZ1bmMsIHdlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFBhcnNlU291cmNlOmZyb21VUkw6c291cmNlSWQ6Zm9yV2Vi
RnJhbWU6KSwgbnNTb3VyY2UsIFtuc1VSTCBhYnNvbHV0ZVN0cmluZ10sIHNvdXJjZS5wcm92aWRl
cigpLT5hc0lEKCksIHdlYkZyYW1lKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IHRvTlNTdHJpbmcoZXJyb3JNc2cpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGNiODMxMTg4MGM3NDEzMTBhYmJhNjhmZTg4ZWFjNTkwNWNiN2YyODUuLjM2YTgzNGNkZDY2MDZi
MDBkMjUxMGY0ZTc2MTQ5ODgzNDI0YzU3ZmIgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0x
MS0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgSlND
OiBSZW1vdmUgc3RhcnRQb3NpdGlvbiBmcm9tIFNvdXJjZVByb3ZpZGVyLCBjb252ZXJ0IGZpcnN0
TGluZSBpbnRvIFRleHRQb3NpdGlvbiBpbiBTb3VyY2VDb2RlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZp
ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIu
aHRtbDoKKwogMjAxMS0xMS0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIGJhc2VsaW5lcyBmb3IgbmV3IHRlc3RzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVj
dGVkLnR4dAppbmRleCA3NDhiOTdlODU2NTE4NjM5YWQ2MDVmODI1Y2NhZjY0OWNhNTUxY2EzLi44
YjJjNzNlNDk2Yjc5MDJlZjdmOTFjNTIxZDNmMTYwZjVjYjcxNjU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dApAQCAt
MywyNiArMywxMCBAQCBUZXN0cyB0aGF0IExpbmtpZmllciB3b3JrcyBjb3JyZWN0bHkuCiBUd28g
YWRkRXZlbnRMaXN0ZW5lciBjYWxscyBleHBlY3RlZC4gVGhlIGZpcnN0IGZvciAnZmFrZVVybC0x
JyB0aGUgc2Vjb25kIGZvciAnZmFrZVVybC0yJy4KIFR3byByZW1vdmVFdmVudExpc3RlbmVyIGNh
bGxzIGV4cGVjdGVkLiBUaGUgZmlyc3QgZm9yICdmYWtlVXJsLTEnIHRoZSBzZWNvbmQgZm9yICdm
YWtlVXJsLTInLgogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi0tLS0gbGlua2lmeSBmYWtlVVJMLTEg
Zmlyc3QgdGltZSAtLS0KLUR1bW15UHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVGb3JT
Y3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ2Zha2VVcmwtMSddCi1E
dW1teVJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ug
d2l0aCBVUkwgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmct
dXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCi0KLS0tLSBsaW5raWZ5IGZha2VVUkwtMiBmaXJz
dCB0aW1lIC0tLQotRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlw
dFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0yJ10KLUR1bW15
UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgZm9yIHNvdXJjZSB3aXRo
IFVSTCA9ICdmYWtlVXJsLTInIHdpdGggYXJndW1lbnRzID0gWydzb3VyY2UtbWFwcGluZy11cGRh
dGVkJywgZnVuY3Rpb24sIG9iamVjdF0KLQotLS0tIGxpbmtpZnkgZmFrZVVSTC0xIHNlY29uZCB0
aW1lIC0tLQotRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdp
dGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0xJ10KLQotLS0tIGxp
bmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLQotRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5f
cmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9
IFsnZmFrZVVybC0yJ10KLQotLS0tIHJlc2V0IC0tLQotRHVtbXlSYXdTb3VyY2VDb2RlLnJlbW92
ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdpdGggaWQgPSAnZmFrZVVybC0x
JyB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBv
YmplY3RdCi1EdW1teVJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVk
IGZvciBzb3VyY2Ugd2l0aCBpZCA9ICdmYWtlVXJsLTInIHdpdGggYXJndW1lbnRzID0gWydzb3Vy
Y2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KLQotLS0tIGxvY2F0aW9uIHVw
ZGF0ZSAtLS0KLW9yaWdpbmFsIGxvY2F0aW9uOiBsaW5raWZpZXIuaHRtbDo5MwotcHJldHR5IHBy
aW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjk4Ci1yZXZlcnRlZCBsb2NhdGlvbjogbGlu
a2lmaWVyLmh0bWw6OTMKK2xpc3RlbmVycyBhZGRlZCBvbiByYXcgc291cmNlIGNvZGU6IDEKK29y
aWdpbmFsIGxvY2F0aW9uOiBsaW5raWZpZXIuaHRtbDoyMQorcHJldHR5IHByaW50ZWQgbG9jYXRp
b246IGxpbmtpZmllci5odG1sOjI0CityZXZlcnRlZCBsb2NhdGlvbjogbGlua2lmaWVyLmh0bWw6
MjEKK2xpc3RlbmVycyByZW1vdmVkIGZyb20gcmF3IHNvdXJjZSBjb2RlOiAxCitEZWJ1Z2dlciB3
YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9saW5raWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZp
ZXIuaHRtbAppbmRleCBmYjM1NDFjN2FmMzIzYWY1MGFhMWMzMTc3MWNlNGY4NDQ5OWViZDk3Li41
YzQ4MjdkMTc2OGVlNzEyNzRiNTQzZjRlYmYyNjAxYjYxYWE4NmQ2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sCkBAIC04LDk5ICs4LDU0IEBAIGZ1
bmN0aW9uIHRlc3QoKQogewogICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3QoZGVi
dWdnZXJUZXN0KTsKIAorICAgIHZhciBsaW5raWZpZXI7CisgICAgdmFyIGxpbms7CisgICAgdmFy
IHJhd1NvdXJjZUNvZGU7CisKICAgICBmdW5jdGlvbiBkZWJ1Z2dlclRlc3QoKQogICAgIHsKLSAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291
cmNlQ29kZVtXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTF0pIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbCwgIl9hZGRTY3JpcHQiLCBkZWJ1Z2dlclRlc3QpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGZha2VVUkwxID0gImZha2VVcmwtMSI7
Ci0gICAgICAgIHZhciBmYWtlVVJMMiA9ICJmYWtlVXJsLTIiOwotCi0gICAgICAgIER1bW15UmF3
U291cmNlQ29kZSA9IGZ1bmN0aW9uKHVybCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy51
cmwgPSB1cmw7Ci0gICAgICAgICAgICB0aGlzLmlkID0gdXJsOwotICAgICAgICB9Ci0KLSAgICAg
ICAgRHVtbXlSYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKLSAgICAgICAgICAgIGFkZEV2ZW50
TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9iamVjdCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlSYXdT
b3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdpdGggVVJM
ID0gJyIgKyB0aGlzLnVybCArICInIHdpdGggYXJndW1lbnRzID0gWyciICsgZXZlbnROYW1lICsg
IicsICIgKyAodHlwZW9mIGNhbGxiYWNrKSArICIsICIgKyAodHlwZW9mIG9iamVjdCkgKyAiXSIp
OwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVu
Y3Rpb24oZXZlbnROYW1lLCBjYWxsYmFjaywgb2JqZWN0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1teVJhd1NvdXJjZUNvZGUucmVt
b3ZlRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBpZCA9ICciICsgdGhp
cy51cmwgKyAiJyB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFtZSArICInLCAiICsgKHR5
cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsgIl0iKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIER1bW15UHJlc2VudGF0aW9uTW9kZWwgPSBmdW5j
dGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSBbXTsK
LSAgICAgICAgfQotCi0gICAgICAgIER1bW15UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0g
ewotICAgICAgICAgICAgX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMOiBmdW5jdGlvbihz
b3VyY2VVUkwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkR1bW15UHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRX
aXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJyIgKyBzb3VyY2VVUkwgKyAiJ10i
KTsKLSAgICAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNv
ZGVbc291cmNlVVJMXTsKLSAgICAgICAgICAgICAgICBpZiAocmF3U291cmNlQ29kZSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGU7Ci0gICAgICAgICAgICAgICAgcmF3
U291cmNlQ29kZSA9IG5ldyBEdW1teVJhd1NvdXJjZUNvZGUoc291cmNlVVJMKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW3NvdXJjZVVSTF0gPSByYXdTb3VyY2VDb2RlOwot
ICAgICAgICAgICAgICAgIHJldHVybiByYXdTb3VyY2VDb2RlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIGR1bW15UHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgRHVtbXlQ
cmVzZW50YXRpb25Nb2RlbCgpOworICAgICAgICBsaW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKKyAgICAgICAgcmF3U291
cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9yYXdTb3Vy
Y2VDb2RlRm9yVVJMW1dlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJMXTsKIAot
ICAgICAgICB2YXIgbGlua2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLkxpbmtpZmllcihkdW1teVByZXNlbnRhdGlvbk1vZGVsKTsKKyAgICAgICAgdmFy
IGNvdW50MSA9IGxpc3RlbmVyc0NvdW50KHJhd1NvdXJjZUNvZGUpOworICAgICAgICBsaW5rID0g
bGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1
bWVudFVSTCwgMjAsIDAsICJkdW1teS1jbGFzcyIpOworICAgICAgICB2YXIgY291bnQyID0gbGlz
dGVuZXJzQ291bnQocmF3U291cmNlQ29kZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJsaXN0ZW5lcnMgYWRkZWQgb24gcmF3IHNvdXJjZSBjb2RlOiAiICsgKGNvdW50MiAtIGNv
dW50MSkpOwogCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBm
YWtlVVJMLTEgZmlyc3QgdGltZSAtLS0iKTsKLSAgICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2Nh
dGlvbihmYWtlVVJMMSwgNDIsIDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Im9yaWdpbmFsIGxvY2F0aW9uOiAiICsgbGluay50ZXh0Q29udGVudCk7CiAKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsaW5raWZ5IGZha2VVUkwtMiBmaXJzdCB0aW1lIC0t
LSIpOwotICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwyLCA0MiwgMjYs
ICJmYWtlLWNsYXNzLW5hbWUiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFu
Y2hvciIsIGxpbmtVcGRhdGVkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNlKHRydWUpOworICAgIH0KIAotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiLS0tIGxpbmtpZnkgZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0t
LSIpOwotICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwxLCA5NywgMjMs
ICJmYWtlLWNsYXNzLW5hbWUiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OworICAgIGZ1bmN0aW9uIGxpbmtVcGRhdGVkKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJwcmV0dHkgcHJpbnRlZCBsb2NhdGlvbjogIiArIGxpbmsudGV4dENvbnRl
bnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIobGlua2lmaWVyLCAiX3VwZGF0
ZUFuY2hvciIsIGxpbmtSZXZlcnRlZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZShmYWxzZSk7CisgICAgfQogCi0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTIgc2Vjb25kIHRp
bWUgLS0tIik7Ci0gICAgICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDIsIDQs
IDIsICJmYWtlLWNsYXNzLW5hbWUiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IiIpOworICAgIGZ1bmN0aW9uIGxpbmtSZXZlcnRlZCgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgicmV2ZXJ0ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50
KTsKIAotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiLS0tIHJlc2V0IC0tLSIpOwor
ICAgICAgICB2YXIgY291bnQxID0gbGlzdGVuZXJzQ291bnQocmF3U291cmNlQ29kZSk7CiAgICAg
ICAgIGxpbmtpZmllci5yZXNldCgpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Iik7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsb2NhdGlvbiB1cGRh
dGUgLS0tIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gZHVtbXlGdW5jdGlvblRvQmVQcmV0dHlQcmlu
dGVkKCkgeyBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7IGNvbnNvbGUuZXJyb3IoIiIpOyB9
Ci0KLSAgICAgICAgbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7Ci0gICAgICAgIHZhciBsaW5rID0gbGlua2lmaWVyLmxp
bmtpZnlMb2NhdGlvbihXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCwgOTIs
IDAsICJkdW1teS1jbGFzcyIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3Jp
Z2luYWwgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKLQotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFuY2hvciIsIGxpbmtVcGRhdGVk
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuc2V0Rm9y
bWF0U291cmNlKHRydWUpOworICAgICAgICB2YXIgY291bnQyID0gbGlzdGVuZXJzQ291bnQocmF3
U291cmNlQ29kZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaXN0ZW5lcnMg
cmVtb3ZlZCBmcm9tIHJhdyBzb3VyY2UgY29kZTogIiArIChjb3VudDEgLSBjb3VudDIpKTsKIAot
ICAgICAgICBmdW5jdGlvbiBsaW5rVXBkYXRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJwcmV0dHkgcHJpbnRlZCBsb2NhdGlvbjogIiArIGxpbmsu
dGV4dENvbnRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKGxpbmtp
ZmllciwgIl91cGRhdGVBbmNob3IiLCBsaW5rUmV2ZXJ0ZWQpOwotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNlKGZhbHNlKTsK
LSAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7
CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGxpbmtSZXZlcnRlZCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXZlcnRlZCBsb2NhdGlvbjogIiAr
IGxpbmsudGV4dENvbnRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICBmdW5jdGlvbiBsaXN0ZW5lcnNDb3VudChvYmplY3QpCisgICAgeworICAgICAg
ICB2YXIgbGlzdGVuZXJzID0gb2JqZWN0Ll9saXN0ZW5lcnM7CisgICAgICAgIHZhciBjb3VudCA9
IDA7CisgICAgICAgIGZvciAodmFyIGV2ZW50VHlwZXMgaW4gbGlzdGVuZXJzKSB7CisgICAgICAg
ICAgICB2YXIgbGlzdGVuZXJzQXJyYXkgPSBsaXN0ZW5lcnNbZXZlbnRUeXBlc107CisgICAgICAg
ICAgICBjb3VudCArPSBsaXN0ZW5lcnNBcnJheS5sZW5ndGg7CiAgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGNvdW50OyAKICAgICB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="111639"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>